Version 23.60: Jan 26, 2024 Code refactoring in my courses.

This commit is contained in:
acanas 2024-01-26 10:26:19 +01:00
parent ac47c5985e
commit 740f317010
39 changed files with 334 additions and 303 deletions

View File

@ -1957,6 +1957,12 @@ void HTM_TxtColonNBSP (const char *Txt)
HTM_NBSP ();
}
void HTM_NBSPTxt (const char *Txt)
{
HTM_NBSP ();
HTM_Txt (Txt);
}
void HTM_NBSP (void)
{
HTM_Txt (" ");

View File

@ -228,6 +228,7 @@ void HTM_Txt (const char *Txt);
void HTM_TxtColon (const char *Txt);
void HTM_TxtSemicolon (const char *Txt);
void HTM_TxtColonNBSP (const char *Txt);
void HTM_NBSPTxt (const char *Txt);
void HTM_NBSP (void);
void HTM_Colon (void);
void HTM_Semicolon (void);

View File

@ -326,7 +326,7 @@ static void MFU_PutIconAndText (Act_Action_t Action,
"class=\"ICO_%s_%s\"",
Ico_GetPreffix (Color[Gbl.Prefs.IconSet]),
The_GetSuffix ());
HTM_TxtF (" %s",MenuStr);
HTM_NBSPTxt (MenuStr);
}
/*****************************************************************************/

View File

@ -299,7 +299,8 @@ static void Acc_WriteRowEmptyAccount (unsigned NumUsr,const char *ID,struct Usr_
HTM_TD_Begin ("class=\"LT DAT_STRONG_%s %s\"",
The_GetSuffix (),
The_GetColorRows ());
HTM_TxtF ("%s: %s",Txt_ID,ID);
HTM_TxtColon (Txt_ID);
HTM_NBSPTxt (ID);
HTM_BR ();
HTM_TxtColonNBSP (Txt_Name);
if (UsrDat->FullName[0])

View File

@ -1812,7 +1812,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
// TabPrf ******************************************************************
// Actions in menu:
[ActFrmRolSes ] = { 843, 0,TabPrf,ActFrmRolSes ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_WriteFormLogout ,"power-off" },
[ActMyCrs ] = { 987, 1,TabPrf,ActMyCrs ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Crs_ReqSelectOneOfMyCourses ,"sitemap" },
[ActMyCrs ] = { 987, 1,TabPrf,ActMyCrs ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Hie_ReqSelectOneNodeFromMyHierarchy ,"sitemap" },
[ActSeeMyTT ] = { 408, 2,TabPrf,ActSeeMyTT ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tmt_ShowClassTimeTable ,"clock" },
[ActSeeMyAgd ] = {1602, 3,TabPrf,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_GetParsAndShowMyAgenda ,"calendar" },
[ActFrmMyAcc ] = { 36, 4,TabPrf,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_ShowFormMyAccount ,"at" },

View File

@ -1333,7 +1333,8 @@ static void Asg_ShowLstGrpsToEditAssignment (long AsgCod)
"AsgCod",
AsgCod) ? "" :
" checked=\"checked\"");
HTM_TxtF ("%s %s",Txt_The_whole_course,
HTM_TxtF ("%s %s",
Txt_The_whole_course,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_LABEL_End ();
HTM_TD_End ();
@ -1598,7 +1599,7 @@ static void Asg_GetAndWriteNamesOfGrpsAssociatedToAsg (struct Asg_Assignment *As
row = mysql_fetch_row (mysql_res);
/* Write group type name and group name */
HTM_TxtF ("%s %s",row[0],row[1]);
HTM_TxtF ("%s %s",row[0],row[1]);
if (NumGrps >= 2)
{
@ -1610,8 +1611,8 @@ static void Asg_GetAndWriteNamesOfGrpsAssociatedToAsg (struct Asg_Assignment *As
}
}
else
HTM_TxtF ("%s %s",Txt_The_whole_course,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_TxtF ("%s %s",
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_DIV_End ();

View File

@ -1108,7 +1108,8 @@ static void Att_ShowLstGrpsToEditEvent (long AttCod)
"AttCod",
AttCod) ? "" :
" checked=\"checked\"");
HTM_TxtF ("%s %s",Txt_The_whole_course,
HTM_TxtF ("%s %s",
Txt_The_whole_course,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_LABEL_End ();
HTM_TD_End ();
@ -1314,7 +1315,7 @@ static void Att_GetAndWriteNamesOfGrpsAssociatedToEvent (struct Att_Event *Event
row = mysql_fetch_row (mysql_res);
/* Write group type name (row[0]) and group name (row[1]) */
HTM_TxtF ("%s %s",row[0],row[1]);
HTM_TxtF ("%s %s",row[0],row[1]);
/* Write the name of the room (row[2]) */
if (row[2]) // May be NULL because of LEFT JOIN
@ -1333,8 +1334,8 @@ static void Att_GetAndWriteNamesOfGrpsAssociatedToEvent (struct Att_Event *Event
}
}
else
HTM_TxtF ("%s %s",Txt_The_whole_course,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_TxtF ("% %s",
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
/***** End container *****/
HTM_DIV_End ();
@ -1755,7 +1756,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
The_GetColorRows ());
HTM_Txt (UsrDat->Surname1);
if (UsrDat->Surname2[0])
HTM_TxtF (" %s",UsrDat->Surname2);
HTM_SPTxt (UsrDat->Surname2);
HTM_TxtF (", %s",UsrDat->FrstName);
HTM_TD_End ();
@ -2929,7 +2930,7 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
The_GetColorRows ());
HTM_Txt (UsrDat->Surname1);
if (UsrDat->Surname2[0])
HTM_TxtF (" %s",UsrDat->Surname2);
HTM_SPTxt (UsrDat->Surname2);
HTM_TxtF (", %s",UsrDat->FrstName);
HTM_TD_End ();
@ -3108,7 +3109,7 @@ static void Att_ListAttEventsForAStd (struct Att_Events *Events,
The_GetSuffix ());
HTM_Txt (UsrDat->Surname1);
if (UsrDat->Surname2[0])
HTM_TxtF (" %s",UsrDat->Surname2);
HTM_SPTxt (UsrDat->Surname2);
HTM_TxtF (", %s",UsrDat->FrstName);
HTM_TD_End ();

View File

@ -199,7 +199,7 @@ void Ctr_DrawCenterLogoAndNameWithLink (struct Hie_Node *Ctr,Act_Action_t Action
/***** Center logo and name *****/
Lgo_DrawLogo (Hie_CTR,Ctr,IconClass);
HTM_TxtF (" %s",Ctr->FullName);
HTM_NBSPTxt (Ctr->FullName);
/***** End link *****/
HTM_BUTTON_End ();

View File

@ -633,11 +633,12 @@ Me sale este error, no s
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
*/
#define Log_PLATFORM_VERSION "SWAD 23.59.5 (2024-01-26)"
#define Log_PLATFORM_VERSION "SWAD 23.60 (2024-01-26)"
#define CSS_FILE "swad23.58.1.css"
#define JS_FILE "swad23.53.6.js"
/*
Version 23.59.5: Jan 26, 2024 Responsive design in forums and messages. (? lines)
Version 23.60: Jan 26, 2024 Code refactoring in my courses. (335725 lines)
Version 23.59.5: Jan 26, 2024 Responsive design in forums and messages. (335698 lines)
Version 23.59.4: Jan 24, 2024 Responsive design in list of users. (335701 lines)
Version 23.59.3: Jan 24, 2024 Responsive design in course hits. (335698 lines)
Version 23.59.2: Jan 24, 2024 Responsive design in global hits. (335672 lines)

View File

@ -324,7 +324,7 @@ static void Cht_WriteLinkToChat2 (const char *RoomCode,const char *RoomFullName)
HTM_STRONG_Begin ();
/* Room name and users */
HTM_TxtF (" %s",RoomFullName);
HTM_NBSPTxt (RoomFullName);
if (NumUsrsInRoom > 1)
HTM_TxtF (" [%d %s]",NumUsrsInRoom,Txt_connected_PLURAL);
else if (NumUsrsInRoom == 1)

View File

@ -498,8 +498,6 @@ void Cty_DrawCountryMapAndNameWithLink (struct Hie_Node *Cty,Act_Action_t Action
const char *ClassContainer,
const char *ClassMap)
{
char CountryName[Cty_MAX_BYTES_NAME + 1];
/***** Begin form *****/
Frm_BeginFormGoTo (Action);
ParCod_PutPar (ParCod_Cty,Cty->HieCod);
@ -516,9 +514,7 @@ void Cty_DrawCountryMapAndNameWithLink (struct Hie_Node *Cty,Act_Action_t Action
Cty_DrawCountryMap (Cty,ClassMap);
/***** Write country name *****/
Str_Copy (CountryName,Cty->FullName,sizeof (CountryName) - 1);
HTM_TxtF (" %s ",CountryName);
HTM_TxtF ("(%s)",Cty->ShrtName);
HTM_TxtF (" %s (%s)",Cty->FullName,Cty->ShrtName);
/***** End link *****/
HTM_BUTTON_End ();

View File

@ -90,15 +90,6 @@ static struct Hie_Node *Crs_EditingCrs = NULL; // Static variable to keep the co
/**************************** Private prototypes *****************************/
/*****************************************************************************/
static void Crs_WriteListMyCoursesToSelectOne (void);
static void Crs_WriteNodes (struct Hie_Node Hie[Hie_NUM_LEVELS],
Lay_LastItem_t IsLastItemInLevel[1 + 6],
Hie_Level_t Level);
static void Crs_WriteRowMyCourses (Hie_Level_t Level,
const struct Hie_Node Hie[Hie_NUM_LEVELS],
Lay_Highlight_t Highlight,
Lay_LastItem_t IsLastItemInLevel[1 + 6]);
static void Crs_GetListCrssInCurrentDeg (void);
static void Crs_ListCourses (void);
static void Crs_PutIconsListCourses (__attribute__((unused)) void *Args);
@ -124,8 +115,6 @@ static void Crs_EmptyCourseCompletely (long CrsCod);
static void Crs_PutButtonToGoToCrs (void);
static void Crs_PutButtonToRegisterInCrs (void);
static void Crs_PutIconToSearchCourses (__attribute__((unused)) void *Args);
static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnAccepted);
static void Crs_EditingCourseConstructor (void);
@ -149,132 +138,6 @@ void Crs_ShowIntroduction (void)
Hlp_ShowHelpWhatWouldYouLikeToDo ();
}
/*****************************************************************************/
/************************ Write menu with my courses *************************/
/*****************************************************************************/
static void Crs_WriteListMyCoursesToSelectOne (void)
{
extern const char *Hlp_PROFILE_Courses;
extern const char *Txt_My_courses;
struct Hie_Node Hie[Hie_NUM_LEVELS];
Lay_LastItem_t IsLastItemInLevel[1 + 6];
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_My_courses,
Crs_PutIconToSearchCourses,NULL,
Hlp_PROFILE_Courses,Box_NOT_CLOSABLE);
/***** Begin list *****/
HTM_UL_Begin ("class=\"LIST_TREE\"");
/***** Write nodes recursively *****/
Crs_WriteNodes (Hie,IsLastItemInLevel,Hie_SYS);
/***** End list *****/
HTM_UL_End ();
/***** End box *****/
Box_BoxEnd ();
}
static void Crs_WriteNodes (struct Hie_Node Hie[Hie_NUM_LEVELS],
Lay_LastItem_t IsLastItemInLevel[1 + 6],
Hie_Level_t Level)
{
extern unsigned (*Hie_GetMyNodesFromDB[Hie_NUM_LEVELS]) (MYSQL_RES **mysql_res,
long PrtCod);
extern bool (*Hie_GetDataByCod[Hie_NUM_LEVELS]) (struct Hie_Node *Node);
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
Lay_Highlight_t Highlight; // Highlight because degree, course, etc. is selected
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumNode;
unsigned NumNodes;
if (Level > Hie_SYS)
NumNodes = Hie_GetMyNodesFromDB[Level] (&mysql_res,Hie[Level - 1].HieCod);
else
NumNodes = 1;
for (NumNode = 0;
NumNode < NumNodes;
NumNode++)
{
if (Level > Hie_SYS)
{
/***** Get next node *****/
row = mysql_fetch_row (mysql_res);
Hie[Level].HieCod = Str_ConvertStrCodToLongCod (row[0]);
/***** Get data of this node *****/
if (!Hie_GetDataByCod[Level] (&Hie[Level]))
Err_WrongCountrExit ();
}
else
{
Hie[Level].HieCod = -1L;
Str_Copy (Hie[Level].ShrtName,Txt_HIERARCHY_SINGUL_Abc[Level],
sizeof (Hie[Level].ShrtName) - 1);
}
/***** Write link to node *****/
if (Level < Hie_CRS)
Highlight = (Gbl.Hierarchy.Node[Level + 1].HieCod <= 0 &&
Gbl.Hierarchy.Node[Level].HieCod == Hie[Level].HieCod) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
else
Highlight = (Gbl.Hierarchy.Node[Level].HieCod == Hie[Level].HieCod) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
IsLastItemInLevel[Level] = (NumNode == NumNodes - 1) ? Lay_LAST_ITEM :
Lay_NO_LAST_ITEM;
Crs_WriteRowMyCourses (Level,Hie,Highlight,IsLastItemInLevel);
/***** Write subnodes recursively ******/
if (Level < Hie_CRS)
Crs_WriteNodes (Hie,IsLastItemInLevel,Level + 1);
}
if (Level > Hie_SYS)
/* Free structure that stores the query result */
DB_FreeMySQLResult (&mysql_res);
}
static void Crs_WriteRowMyCourses (Hie_Level_t Level,
const struct Hie_Node Hie[Hie_NUM_LEVELS],
Lay_Highlight_t Highlight,
Lay_LastItem_t IsLastItemInLevel[1 + 6])
{
extern ParCod_Param_t Hie_ParCod[Hie_NUM_LEVELS];
extern const char *Lay_HighlightClass[Lay_NUM_HIGHLIGHT];
static Act_Action_t Actions[Hie_NUM_LEVELS] =
{
[Hie_SYS] = ActSeeSysInf,
[Hie_CTY] = ActSeeCtyInf,
[Hie_INS] = ActSeeInsInf,
[Hie_CTR] = ActSeeCtrInf,
[Hie_DEG] = ActSeeDegInf,
[Hie_CRS] = ActSeeCrsInf,
};
HTM_LI_Begin (Lay_HighlightClass[Highlight]);
Lay_IndentDependingOnLevel (Level,IsLastItemInLevel,
Lay_HORIZONTAL_LINE_AT_RIGHT);
Frm_BeginForm (ActMyCrs);
ParCod_PutPar (Hie_ParCod[Level],Hie[Level].HieCod);
HTM_BUTTON_Submit_Begin (Act_GetActionText (Actions[Level]),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
Lgo_DrawLogo (Level,&Hie[Level],"ICO16x16");
HTM_DIV_Begin ("class=\"MY_CRS_TXT\"");
HTM_TxtF ("&nbsp;%s",Hie[Level].ShrtName);
HTM_DIV_End ();
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_LI_End ();
}
/*****************************************************************************/
/********************* Get number of courses with users **********************/
/*****************************************************************************/
@ -1754,71 +1617,6 @@ static void Crs_PutButtonToRegisterInCrs (void)
Frm_EndForm ();
}
/*****************************************************************************/
/************************* Select one of my courses **************************/
/*****************************************************************************/
void Crs_ReqSelectOneOfMyCourses (void)
{
/***** Fill the list with the courses I belong to, if not filled *****/
Hie_GetMyHierarchy (Hie_CRS);
/***** Select one of my courses *****/
if (Gbl.Usrs.Me.Hierarchy[Hie_CRS].Num)
/* Show my courses */
Crs_WriteListMyCoursesToSelectOne ();
else // I am not enroled in any course
/* Show help to enrol me */
Hlp_ShowHelpWhatWouldYouLikeToDo ();
}
/*****************************************************************************/
/******************* Put an icon (form) to search courses ********************/
/*****************************************************************************/
static void Crs_PutIconToSearchCourses (__attribute__((unused)) void *Args)
{
Lay_PutContextualLinkOnlyIcon (ActReqSch,NULL,
Sch_PutLinkToSearchCoursesPars,NULL,
"search.svg",Ico_BLACK);
}
/*****************************************************************************/
/********** Put an icon (form) to select my courses in breadcrumb ************/
/*****************************************************************************/
void Crs_PutIconToSelectMyCoursesInBreadcrumb (void)
{
extern const char *Hie_Icons[Hie_NUM_LEVELS];
extern const char *Txt_My_courses;
if (Gbl.Usrs.Me.Logged) // I am logged
{
/***** Begin form *****/
Frm_BeginForm (ActMyCrs);
/***** Put icon with link *****/
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Hie_Icons[Hie_SYS],Txt_My_courses,
"class=\"BC_ICO BC_ICO_%s ICO_HIGHLIGHT\"",
The_GetSuffix ());
/***** End form *****/
Frm_EndForm ();
}
}
/*****************************************************************************/
/****************** Put an icon (form) to select my courses ******************/
/*****************************************************************************/
void Crs_PutIconToSelectMyCourses (__attribute__((unused)) void *Args)
{
if (Gbl.Usrs.Me.Logged) // I am logged
Lay_PutContextualLinkOnlyIcon (ActMyCrs,NULL,
NULL,NULL,
"sitemap.svg",Ico_BLACK);
}
/*****************************************************************************/
/************************** Write courses of a user **************************/
/*****************************************************************************/

View File

@ -79,11 +79,6 @@ void Crs_RenameCourse (struct Hie_Node *Crs,Nam_ShrtOrFullName_t ShrtOrFull);
void Crs_ChangeCrsStatus (void);
void Crs_ContEditAfterChgCrs (void);
void Crs_PutIconToSelectMyCoursesInBreadcrumb (void);
void Crs_PutIconToSelectMyCourses (__attribute__((unused)) void *Args);
void Crs_ReqSelectOneOfMyCourses (void);
void Crs_GetAndWriteCrssOfAUsr (const struct Usr_Data *UsrDat,Rol_Role_t Role);
void Crs_ListCrssFound (MYSQL_RES **mysql_res,unsigned NumCrss);

View File

@ -205,7 +205,7 @@ void Deg_DrawDegreeLogoAndNameWithLink (struct Hie_Node *Deg,Act_Action_t Action
/***** Degree logo and name *****/
Lgo_DrawLogo (Hie_DEG,Deg,IconClass);
HTM_TxtF ("&nbsp;%s",Deg->FullName);
HTM_NBSPTxt (Deg->FullName);
/***** End link *****/
HTM_BUTTON_End ();

View File

@ -1527,11 +1527,14 @@ void ExaRes_ShowExamResultUser (struct Usr_Data *UsrDat)
/***** User's data *****/
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
ID_WriteUsrIDs (UsrDat,NULL);
HTM_TxtF ("&nbsp;%s",UsrDat->Surname1);
HTM_NBSPTxt (UsrDat->Surname1);
if (UsrDat->Surname2[0])
HTM_TxtF ("&nbsp;%s",UsrDat->Surname2);
HTM_SPTxt (UsrDat->Surname2);
if (UsrDat->FrstName[0])
HTM_TxtF (", %s",UsrDat->FrstName);
{
HTM_Comma ();
HTM_SPTxt (UsrDat->FrstName);
}
HTM_BR ();
Pho_ShowUsrPhotoIfAllowed (UsrDat,
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);

View File

@ -574,7 +574,7 @@ static void ExaSes_GetAndWriteNamesOfGrpsAssociatedToSession (const struct ExaSe
row = mysql_fetch_row (mysql_res);
/* Write group type name (row[0]) and group name (row[1]) */
HTM_TxtF ("%s&nbsp;%s",row[0],row[1]);
HTM_TxtF ("%s %s",row[0],row[1]);
if (NumGrps >= 2)
{
@ -587,8 +587,8 @@ static void ExaSes_GetAndWriteNamesOfGrpsAssociatedToSession (const struct ExaSe
}
}
else
HTM_TxtF ("%s&nbsp;%s",Txt_The_whole_course,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_TxtF ("%s %s",
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_DIV_End ();
@ -1016,7 +1016,8 @@ static void ExaSes_ShowLstGrpsToCreateSession (long SesCod)
"SesCod",
SesCod) ? "" :
" checked=\"checked\"");
HTM_TxtF ("%s&nbsp;%s",Txt_The_whole_course,
HTM_TxtF ("%s %s",
Txt_The_whole_course,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_LABEL_End ();
HTM_TD_End ();

View File

@ -1825,7 +1825,7 @@ static void For_WriteLinkToForum (const struct For_Forums *Forums,
default:
break;
}
HTM_TxtF ("&nbsp;%s",ForumName);
HTM_NBSPTxt (ForumName);
/***** Write total number of threads and posts in this forum *****/
if (NumThrs)

View File

@ -169,7 +169,7 @@ void Grp_WriteNamesOfSelectedGrps (void)
{
GrpDat.GrpCod = GrpCod;
Grp_GetGroupDataByCod (&GrpDat);
HTM_TxtF ("%s&nbsp;%s",GrpDat.GrpTypName,GrpDat.GrpName);
HTM_TxtF ("%s %s",GrpDat.GrpTypName,GrpDat.GrpName);
}
else // GrpCod < 0 ==> students not belonging to any group of type (-GrpCod)
{
@ -433,7 +433,7 @@ static void Grp_PutCheckboxAllGrps (Grp_WhichGroups_t GroupsSelectableByStdsOrNE
" onclick=\"togglecheckChildren(this,'GrpCods')\"" :
" onclick=\"togglecheckChildren(this,'GrpCods')\"") :
" disabled=\"disabled\"");
HTM_TxtF ("&nbsp;%s",Txt_All_groups);
HTM_NBSPTxt (Txt_All_groups);
HTM_LABEL_End ();
HTM_DIV_End ();
}

View File

@ -43,6 +43,7 @@
#include "swad_form.h"
#include "swad_global.h"
#include "swad_group_database.h"
#include "swad_help.h"
#include "swad_hierarchy.h"
#include "swad_hierarchy_database.h"
#include "swad_hierarchy_type.h"
@ -130,6 +131,17 @@ static void Hie_ShowHierarchyRow (const char *Text1,const char *Text2,
int NumNodes[Hie_NUM_LEVELS]);
static void Hie_ShowHierarchyCell (const char *ClassTxt,int Num);
//--------------------------- My hierarchy ------------------------------------
static void Hie_WriteListMyHierarchyToSelectNode (void);
static void Hie_PutIconToSearchCourses (__attribute__((unused)) void *Args);
static void Hie_WriteMyHierarchyNodes (struct Hie_Node Hie[Hie_NUM_LEVELS],
Lay_LastItem_t IsLastItemInLevel[1 + 6],
Hie_Level_t Level);
static void Hie_WriteRowMyHierarchy (Hie_Level_t Level,
const struct Hie_Node Hie[Hie_NUM_LEVELS],
Lay_Highlight_t Highlight,
Lay_LastItem_t IsLastItemInLevel[1 + 6]);
/*****************************************************************************/
/********** List pending institutions, centers, degrees and courses **********/
/*****************************************************************************/
@ -1157,7 +1169,8 @@ static void Hie_GetAndShowHierarchyWithNodes (Hie_Level_t HavingNodesOfLevel)
HavingNodesOfLevel);// Grand child
/***** Write number of elements with courses *****/
Hie_ShowHierarchyRow (Txt_With_,Txt_HIERARCHY_PLURAL_abc[HavingNodesOfLevel],"DAT",NumNodes);
Hie_ShowHierarchyRow (Txt_With_,Txt_HIERARCHY_PLURAL_abc[HavingNodesOfLevel],
"DAT",NumNodes);
}
/*****************************************************************************/
@ -1457,3 +1470,202 @@ static void Hie_ShowHierarchyCell (const char *ClassTxt,int Num)
HTM_Hyphen ();
HTM_TD_End ();
}
/*****************************************************************************/
/********** Put an icon (form) to select my courses in breadcrumb ************/
/*****************************************************************************/
void Hie_PutIconToSelectMyHierarchyInBreadcrumb (void)
{
extern const char *Txt_My_courses;
if (Gbl.Usrs.Me.Logged) // I am logged
{
/***** Begin form *****/
Frm_BeginForm (ActMyCrs);
/***** Put icon with link *****/
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Hie_Icons[Hie_SYS],Txt_My_courses,
"class=\"BC_ICO BC_ICO_%s ICO_HIGHLIGHT\"",
The_GetSuffix ());
/***** End form *****/
Frm_EndForm ();
}
}
/*****************************************************************************/
/***************** Put an icon (form) to select my hierarchy *****************/
/*****************************************************************************/
void Hie_PutIconToSelectMyHierarchy (__attribute__((unused)) void *Args)
{
if (Gbl.Usrs.Me.Logged) // I am logged
Lay_PutContextualLinkOnlyIcon (ActMyCrs,NULL,
NULL,NULL,
"sitemap.svg",Ico_BLACK);
}
/*****************************************************************************/
/****************** Select one node from my hierarchy ************************/
/*****************************************************************************/
void Hie_ReqSelectOneNodeFromMyHierarchy (void)
{
/***** Fill the list with the courses I belong to, if not filled *****/
Hie_GetMyHierarchy (Hie_CRS);
/***** Select one of my courses *****/
if (Gbl.Usrs.Me.Hierarchy[Hie_CRS].Num)
/* Show my courses */
Hie_WriteListMyHierarchyToSelectNode ();
else // I am not enroled in any course
/* Show help to enrol me */
Hlp_ShowHelpWhatWouldYouLikeToDo ();
}
/*****************************************************************************/
/************************ Write menu with my courses *************************/
/*****************************************************************************/
static void Hie_WriteListMyHierarchyToSelectNode (void)
{
extern const char *Hlp_PROFILE_Courses;
extern const char *Txt_My_courses;
struct Hie_Node Hie[Hie_NUM_LEVELS];
Lay_LastItem_t IsLastItemInLevel[1 + 6];
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_My_courses,
Hie_PutIconToSearchCourses,NULL,
Hlp_PROFILE_Courses,Box_NOT_CLOSABLE);
/***** Begin list *****/
HTM_UL_Begin ("class=\"LIST_TREE\"");
/***** Write nodes recursively *****/
Hie_WriteMyHierarchyNodes (Hie,IsLastItemInLevel,Hie_SYS);
/***** End list *****/
HTM_UL_End ();
/***** End box *****/
Box_BoxEnd ();
}
/*****************************************************************************/
/******************* Put an icon (form) to search courses ********************/
/*****************************************************************************/
static void Hie_PutIconToSearchCourses (__attribute__((unused)) void *Args)
{
Lay_PutContextualLinkOnlyIcon (ActReqSch,NULL,
Sch_PutLinkToSearchCoursesPars,NULL,
"search.svg",Ico_BLACK);
}
/*****************************************************************************/
/****************** Write my hierarchy nodes recursively *********************/
/*****************************************************************************/
static void Hie_WriteMyHierarchyNodes (struct Hie_Node Hie[Hie_NUM_LEVELS],
Lay_LastItem_t IsLastItemInLevel[1 + 6],
Hie_Level_t Level)
{
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
Lay_Highlight_t Highlight; // Highlight because degree, course, etc. is selected
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumNode;
unsigned NumNodes;
if (Level > Hie_SYS)
NumNodes = Hie_GetMyNodesFromDB[Level] (&mysql_res,Hie[Level - 1].HieCod);
else
NumNodes = 1;
for (NumNode = 0;
NumNode < NumNodes;
NumNode++)
{
if (Level > Hie_SYS)
{
/***** Get next node *****/
row = mysql_fetch_row (mysql_res);
Hie[Level].HieCod = Str_ConvertStrCodToLongCod (row[0]);
/***** Get data of this node *****/
if (!Hie_GetDataByCod[Level] (&Hie[Level]))
Err_WrongCountrExit ();
}
else
{
Hie[Level].HieCod = -1L;
Str_Copy (Hie[Level].ShrtName,Txt_HIERARCHY_SINGUL_Abc[Level],
sizeof (Hie[Level].ShrtName) - 1);
}
/***** Write link to node *****/
if (Level < Hie_CRS)
Highlight = (Gbl.Hierarchy.Node[Level + 1].HieCod <= 0 &&
Gbl.Hierarchy.Node[Level].HieCod == Hie[Level].HieCod) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
else
Highlight = (Gbl.Hierarchy.Node[Level].HieCod == Hie[Level].HieCod) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
IsLastItemInLevel[Level] = (NumNode == NumNodes - 1) ? Lay_LAST_ITEM :
Lay_NO_LAST_ITEM;
Hie_WriteRowMyHierarchy (Level,Hie,Highlight,IsLastItemInLevel);
/***** Write subnodes recursively ******/
if (Level < Hie_CRS)
Hie_WriteMyHierarchyNodes (Hie,IsLastItemInLevel,Level + 1);
}
if (Level > Hie_SYS)
/* Free structure that stores the query result */
DB_FreeMySQLResult (&mysql_res);
}
/*****************************************************************************/
/************************ Write a row in my hierarchy ************************/
/*****************************************************************************/
static void Hie_WriteRowMyHierarchy (Hie_Level_t Level,
const struct Hie_Node Hie[Hie_NUM_LEVELS],
Lay_Highlight_t Highlight,
Lay_LastItem_t IsLastItemInLevel[1 + 6])
{
extern const char *Lay_HighlightClass[Lay_NUM_HIGHLIGHT];
static Act_Action_t Actions[Hie_NUM_LEVELS] =
{
[Hie_SYS] = ActSeeSysInf,
[Hie_CTY] = ActSeeCtyInf,
[Hie_INS] = ActSeeInsInf,
[Hie_CTR] = ActSeeCtrInf,
[Hie_DEG] = ActSeeDegInf,
[Hie_CRS] = ActSeeCrsInf,
};
HTM_LI_Begin (Lay_HighlightClass[Highlight]);
Lay_IndentDependingOnLevel (Level,IsLastItemInLevel,
Lay_HORIZONTAL_LINE_AT_RIGHT);
Frm_BeginForm (ActMyCrs);
ParCod_PutPar (Hie_ParCod[Level],Hie[Level].HieCod);
HTM_BUTTON_Submit_Begin (Act_GetActionText (Actions[Level]),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
/* Node logo */
Lgo_DrawLogo (Level,&Hie[Level],"ICO16x16");
/* Node name */
HTM_DIV_Begin ("class=\"MY_CRS_TXT\"");
HTM_NBSPTxt (Hie[Level].ShrtName);
HTM_DIV_End ();
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_LI_End ();
}

View File

@ -93,4 +93,10 @@ unsigned Hie_GetCachedNumUsrsWhoClaimToBelongTo (Hie_Level_t Level,
unsigned Hie_GetNumUsrsWhoClaimToBelongTo (Hie_Level_t Level,
struct Hie_Node *Node);
//--------------------------- My hierarchy ------------------------------------
void Hie_PutIconToSelectMyHierarchyInBreadcrumb (void);
void Hie_PutIconToSelectMyHierarchy (__attribute__((unused)) void *Args);
void Hie_ReqSelectOneNodeFromMyHierarchy (void);
#endif

View File

@ -163,9 +163,7 @@ void Hld_SeeAllHolidays (void)
Frm_EndForm ();
HTM_TH_End ();
}
HTM_TH_Begin (HTM_HEAD_LEFT);
HTM_TxtF ("&nbsp;%s&nbsp;",Txt_End_date);
HTM_TH_End ();
HTM_TH (Txt_End_date,HTM_HEAD_LEFT);
HTM_TH (Txt_Holiday,HTM_HEAD_LEFT);
HTM_TR_End ();
@ -184,12 +182,10 @@ void Hld_SeeAllHolidays (void)
Dat_ConvDateToDateStr (&Holidays.Lst[NumHld].StartDate,StrDate);
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
HTM_NBSP ();
HTM_Txt (StrDate);
HTM_TD_End ();
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
HTM_NBSP ();
switch (Holidays.Lst[NumHld].HldTyp)
{
case Hld_HOLIDAY:
@ -202,7 +198,7 @@ void Hld_SeeAllHolidays (void)
HTM_TD_End ();
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
HTM_TxtF ("&nbsp;%s",Holidays.Lst[NumHld].Name);
HTM_Txt (Holidays.Lst[NumHld].Name);
HTM_TD_End ();
HTM_TR_End ();

View File

@ -459,7 +459,7 @@ void Ico_PutIconTextLink (const char *Icon,Ico_Color_t Color,const char *Text)
/***** Print icon and optional text *****/
HTM_DIV_Begin ("class=\"CONTEXT_OPT ICO_HIGHLIGHT\"");
Ico_PutIcon (Icon,Color,Text,"CONTEXT_ICOx16");
HTM_TxtF ("&nbsp;%s",Text);
HTM_NBSPTxt (Text);
HTM_DIV_End ();
}

View File

@ -244,7 +244,7 @@ void Ins_DrawInstitLogoAndNameWithLink (struct Hie_Node *Ins,Act_Action_t Action
/***** Institution logo and name *****/
Lgo_DrawLogo (Hie_INS,Ins,IconClass);
HTM_TxtF ("&nbsp;%s",Ins->FullName);
HTM_NBSPTxt (Ins->FullName);
/***** End link *****/
HTM_BUTTON_End ();

View File

@ -1112,7 +1112,7 @@ static void Lay_WritePageTopHeading (void)
static void Lay_WriteBreadcrumb (void)
{
HTM_Txt ("<nav id=\"breadcrumb\">");
Crs_PutIconToSelectMyCoursesInBreadcrumb ();
Hie_PutIconToSelectMyHierarchyInBreadcrumb ();
Hie_WriteHierarchyInBreadcrumb ();
Crs_WriteSelectorMyCoursesInBreadcrumb ();
HTM_Txt ("</nav>");
@ -1303,7 +1303,7 @@ void Lay_PutContextualCheckbox (Act_Action_t NextAction,
/***** Text *****/
if (Text)
if (Text[0])
HTM_TxtF ("&nbsp;%s",Text);
HTM_NBSPTxt (Text);
/***** End label *****/
HTM_LABEL_End ();

View File

@ -106,7 +106,8 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void)
ActChgNumRowHeaCrs); // Course zone
Brw_PutImplicitParsFileBrowser (&Gbl.FileBrowser.FilFolLnk);
HTM_LABEL_Begin (NULL);
HTM_TxtF ("&nbsp;%s: ",Txt_TABLE_Header);
// HTM_TxtF ("&nbsp;%s: ",Txt_TABLE_Header);
HTM_TxtColon (Txt_TABLE_Header);
snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot),"%u",Marks.Header);
HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_HEADER],Cns_MAX_DECIMAL_DIGITS_UINT,StrHeadOrFoot,
HTM_SUBMIT_ON_CHANGE,
@ -124,7 +125,8 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void)
ActChgNumRowFooCrs); // Course zone
Brw_PutImplicitParsFileBrowser (&Gbl.FileBrowser.FilFolLnk);
HTM_LABEL_Begin (NULL);
HTM_TxtF ("&nbsp;%s: ",Txt_TABLE_Footer);
// HTM_TxtF ("&nbsp;%s: ",Txt_TABLE_Footer);
HTM_TxtColon (Txt_TABLE_Footer);
snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot),"%u",Marks.Footer);
HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_FOOTER],Cns_MAX_DECIMAL_DIGITS_UINT,StrHeadOrFoot,
HTM_SUBMIT_ON_CHANGE,

View File

@ -703,7 +703,7 @@ static void Mch_GetAndWriteNamesOfGrpsAssociatedToMatch (const struct Gam_Games
row = mysql_fetch_row (mysql_res);
/* Write group type name and group name */
HTM_TxtF ("%s&nbsp;%s",row[0],row[1]);
HTM_TxtF ("%s %s",row[0],row[1]);
if (NumGrps >= 2)
{
@ -716,8 +716,8 @@ static void Mch_GetAndWriteNamesOfGrpsAssociatedToMatch (const struct Gam_Games
}
}
else
HTM_TxtF ("%s&nbsp;%s",Txt_The_whole_course,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_TxtF ("%s %s",
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_DIV_End ();
@ -1270,7 +1270,8 @@ static void Mch_ShowLstGrpsToEditMatch (long MchCod)
"MchCod",
MchCod) ? "" :
" checked=\"checked\"");
HTM_TxtF ("%s&nbsp;%s",Txt_The_whole_course,
HTM_TxtF ("%s %s",
Txt_The_whole_course,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_LABEL_End ();
HTM_TD_End ();
@ -2613,7 +2614,7 @@ static void Mch_PutCheckboxResult (const struct Mch_Match *Match)
HTM_TxtF ("<i class=\"%s\"></i>",
Match->Status.ShowQstResults ? "fas fa-toggle-on" :
"fas fa-toggle-off");
HTM_TxtF ("&nbsp;%s",Txt_View_results);
HTM_NBSPTxt (Txt_View_results);
HTM_BUTTON_End ();
/***** End form *****/
@ -2650,7 +2651,7 @@ static void Mch_PutIfAnswered (const struct Mch_Match *Match,bool Answered)
" onmousedown=\"this.form.submit();return false;\"",
The_GetSuffix ());
HTM_TxtF ("<i class=\"%s\"></i>","fas fa-check-circle");
HTM_TxtF ("&nbsp;%s",Txt_MATCH_QUESTION_Answered);
HTM_NBSPTxt (Txt_MATCH_QUESTION_Answered);
HTM_BUTTON_End ();
/* End form */
@ -2666,8 +2667,8 @@ static void Mch_PutIfAnswered (const struct Mch_Match *Match,bool Answered)
"fas fa-exclamation-circle",
Answered ? Txt_MATCH_QUESTION_Answered :
Txt_MATCH_QUESTION_Unanswered);
HTM_TxtF ("&nbsp;%s",Answered ? Txt_MATCH_QUESTION_Answered :
Txt_MATCH_QUESTION_Unanswered);
HTM_NBSPTxt (Answered ? Txt_MATCH_QUESTION_Answered :
Txt_MATCH_QUESTION_Unanswered);
HTM_DIV_End ();
}

View File

@ -1125,11 +1125,14 @@ void MchRes_ShowOneMchResult (void)
HTM_TD_Begin ("class=\"LB DAT_%s\"",
The_GetSuffix ());
ID_WriteUsrIDs (UsrDat,NULL);
HTM_TxtF ("&nbsp;%s",UsrDat->Surname1);
HTM_SPTxt (UsrDat->Surname1);
if (UsrDat->Surname2[0])
HTM_TxtF ("&nbsp;%s",UsrDat->Surname2);
HTM_SPTxt (UsrDat->Surname2);
if (UsrDat->FrstName[0])
HTM_TxtF (", %s",UsrDat->FrstName);
{
HTM_Comma ();
HTM_SPTxt (UsrDat->FrstName);
}
HTM_BR ();
Pho_ShowUsrPhotoIfAllowed (UsrDat,
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);

View File

@ -381,7 +381,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
The_GetSuffix ());
Ico_PutIcon (Net_WebsAndSocialNetworksIcons[Web],Ico_BLACK,
Net_WebsAndSocialNetworksTitle[Web],"ICOx16");
HTM_TxtF ("&nbsp;%s",Net_WebsAndSocialNetworksTitle[Web]);
HTM_NBSPTxt (Net_WebsAndSocialNetworksTitle[Web]);
HTM_TD_End ();
HTM_TD_Unsigned (NumUsrs);

View File

@ -1778,8 +1778,8 @@ void Ntf_WriteNumberOfNewNtfs (void)
"class=\"ICO16x16 NOTIF_ICO_%s\"",The_GetSuffix ());
HTM_TxtF ("&nbsp;%u",NumNewNtfs);
HTM_SPAN_Begin ("id=\"notif_new\"");
HTM_TxtF ("&nbsp;%s",NumNewNtfs == 1 ? Txt_NOTIF_new_SINGULAR :
Txt_NOTIF_new_PLURAL);
HTM_NBSPTxt (NumNewNtfs == 1 ? Txt_NOTIF_new_SINGULAR :
Txt_NOTIF_new_PLURAL);
HTM_SPAN_End ();
}

View File

@ -2719,8 +2719,9 @@ static void Prj_ShowTableAllProjectsMembersWithARole (const struct Prj_Project *
HTM_LI_Begin (NULL);
HTM_Txt (Gbl.Usrs.Other.UsrDat.Surname1);
if (Gbl.Usrs.Other.UsrDat.Surname2[0])
HTM_TxtF ("&nbsp;%s",Gbl.Usrs.Other.UsrDat.Surname2);
HTM_TxtF (", %s",Gbl.Usrs.Other.UsrDat.FrstName);
HTM_SPTxt (Gbl.Usrs.Other.UsrDat.Surname2);
HTM_Comma ();
HTM_SPTxt (Gbl.Usrs.Other.UsrDat.FrstName);
HTM_LI_End ();
}
}

View File

@ -237,7 +237,7 @@ void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes)
"value=\"Y\"%s onclick=\"togglecheckChildren(this,'AnswerType');\"",
AnswerTypes->All ? " checked=\"checked\"" :
"");
HTM_TxtF ("&nbsp;%s",Txt_All_types_of_answers);
HTM_NBSPTxt (Txt_All_types_of_answers);
HTM_LABEL_End ();
HTM_TD_End ();
@ -262,14 +262,14 @@ void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes)
}
}
HTM_TD_Begin ("class=\"LM\"");
HTM_LABEL_Begin ("class=\"DAT_%s\"",
The_GetSuffix ());
HTM_LABEL_Begin ("class=\"DAT_%s\"",The_GetSuffix ());
HTM_INPUT_CHECKBOX ("AnswerType",HTM_DONT_SUBMIT_ON_CHANGE,
"value=\"%u\"%s onclick=\"checkParent(this,'AllAnsTypes');\"",
"value=\"%u\"%s"
" onclick=\"checkParent(this,'AllAnsTypes');\"",
(unsigned) AnsType,
Checked ? " checked=\"checked\"" :
"");
HTM_TxtF ("&nbsp;%s",Txt_TST_STR_ANSWER_TYPES[AnsType]);
HTM_NBSPTxt (Txt_TST_STR_ANSWER_TYPES[AnsType]);
HTM_LABEL_End ();
HTM_TD_End ();
@ -1220,18 +1220,17 @@ void Qst_ListOneOrMoreQstsForSelectionForGame (struct Gam_Games *Games,
}
/*****************************************************************************/
/************** Select all questions to add them to set/game *****************/
/********* Checkbox to select all questions to add them to set/game **********/
/*****************************************************************************/
void Qst_PutCheckboxToSelectAllQuestions (void)
{
extern const char *Txt_All_questions;
/***** Checkbox to select all listed questions *****/
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
HTM_INPUT_CHECKBOX ("AllQsts",HTM_DONT_SUBMIT_ON_CHANGE,
"value=\"Y\" onclick=\"togglecheckChildren(this,'QstCods');\"");
HTM_TxtF ("&nbsp;%s",Txt_All_questions);
HTM_NBSPTxt (Txt_All_questions);
HTM_LABEL_End ();
}

View File

@ -156,7 +156,7 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (Hie_Level_t DefaultScop
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_Search,
Crs_PutIconToSelectMyCourses,NULL,
Hie_PutIconToSelectMyHierarchy,NULL,
Hlp_START_Search,Box_NOT_CLOSABLE);
/***** Begin form *****/

View File

@ -365,7 +365,8 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",
The_GetSuffix ());
HTM_TxtF ("&nbsp;%s&nbsp;",Txt_distributed_by);
HTM_Txt (Txt_distributed_by);
HTM_NBSP ();
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
"id=\"GroupedBy\" name=\"GroupedBy\""
" class=\"INPUT_%s\"",
@ -573,7 +574,8 @@ static void Sta_PutFormGblHits (struct Sta_Stats *Stats)
/***** Type of statistic *****/
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",
The_GetSuffix ());
HTM_TxtF ("&nbsp;%s&nbsp;",Txt_distributed_by);
HTM_Txt (Txt_distributed_by);
HTM_NBSP ();
if (Stats->ClicksGroupedBy < Sta_CLICKS_GBL_PER_DAY ||
Stats->ClicksGroupedBy > Sta_CLICKS_GBL_PER_COURSE)

View File

@ -594,7 +594,8 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
HidVis_GroupClass[Surveys->Svy.Status.HiddenOrVisible],
The_GetSuffix ());
HTM_TxtColonNBSP (Txt_Scope);
HTM_TxtF ("%s&nbsp;%s",Txt_HIERARCHY_SINGUL_Abc[Surveys->Svy.Level],
HTM_TxtF ("%s %s",
Txt_HIERARCHY_SINGUL_Abc[Surveys->Svy.Level],
Gbl.Hierarchy.Node[Surveys->Svy.Level].ShrtName);
HTM_DIV_End ();
@ -1846,7 +1847,9 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
"SvyCod",
SvyCod) ? "" :
" checked=\"checked\"");
HTM_TxtF ("%s&nbsp;%s",Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_TxtF ("%s %s",
Txt_The_whole_course,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_LABEL_End ();
HTM_TD_End ();
@ -2096,7 +2099,7 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy)
row = mysql_fetch_row (mysql_res);
/* Write group type name and group name */
HTM_TxtF ("%s&nbsp;%s",row[0],row[1]);
HTM_TxtF ("%s %s",row[0],row[1]);
if (NumGrps >= 2)
{
@ -2109,8 +2112,8 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy)
}
}
else
HTM_TxtF ("%s&nbsp;%s",Txt_The_whole_course,
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_TxtF ("%s %s",
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
HTM_DIV_End ();
@ -3030,7 +3033,7 @@ static void Svy_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs)
"class=\"LT\" style=\"width:%upx; height:20px;\"",BarWidth);
/***** Write the number of users *****/
HTM_TxtF ("&nbsp;%s",Title);
HTM_NBSPTxt (Title);
/***** Free string with the number of users *****/
free (Title);

View File

@ -313,7 +313,7 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
"value=\"Y\"%s onclick=\"togglecheckChildren(this,'ChkTag');\"",
Tags->All ? " checked=\"checked\"" :
"");
HTM_TxtF ("&nbsp;%s",Txt_All_tags);
HTM_NBSPTxt (Txt_All_tags);
HTM_LABEL_End ();
HTM_TD_End ();
@ -361,7 +361,7 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
row[1],
Checked ? " checked=\"checked\"" :
"");
HTM_TxtF ("&nbsp;%s",row[1]);
HTM_NBSPTxt (row[1]);
HTM_LABEL_End ();
HTM_TD_End ();

View File

@ -529,7 +529,7 @@ static void TstPrn_PutCheckBoxAllowTeachers (bool AllowTeachers)
"value=\"Y\"%s",
AllowTeachers ? " checked=\"checked\"" : // Teachers can see test exam
"");
HTM_TxtF ("&nbsp;%s",Txt_Allow_teachers_to_consult_this_test);
HTM_NBSPTxt (Txt_Allow_teachers_to_consult_this_test);
HTM_LABEL_End ();
HTM_DIV_End ();
}
@ -2260,9 +2260,9 @@ void TstPrn_ShowOnePrint (void)
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
ID_WriteUsrIDs (&Gbl.Usrs.Other.UsrDat,NULL);
HTM_TxtF ("&nbsp;%s",Gbl.Usrs.Other.UsrDat.Surname1);
HTM_SPTxt (Gbl.Usrs.Other.UsrDat.Surname1);
if (Gbl.Usrs.Other.UsrDat.Surname2[0])
HTM_TxtF ("&nbsp;%s",Gbl.Usrs.Other.UsrDat.Surname2);
HTM_SPTxt (Gbl.Usrs.Other.UsrDat.Surname2);
if (Gbl.Usrs.Other.UsrDat.FrstName[0])
HTM_TxtF (", %s",Gbl.Usrs.Other.UsrDat.FrstName);
HTM_BR ();

View File

@ -498,19 +498,19 @@ static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
case TmlNot_INS_DOC_PUB_FILE:
case TmlNot_INS_SHA_PUB_FILE:
/* Write location (institution) in hierarchy */
HTM_TxtF ("%s:&nbsp;%s",
HTM_TxtF ("%s: %s",
Txt_HIERARCHY_SINGUL_Abc[Hie_INS],Hie[Hie_INS].ShrtName);
break;
case TmlNot_CTR_DOC_PUB_FILE:
case TmlNot_CTR_SHA_PUB_FILE:
/* Write location (center) in hierarchy */
HTM_TxtF ("%s:&nbsp;%s",
HTM_TxtF ("%s: %s",
Txt_HIERARCHY_SINGUL_Abc[Hie_CTR],Hie[Hie_CTR].ShrtName);
break;
case TmlNot_DEG_DOC_PUB_FILE:
case TmlNot_DEG_SHA_PUB_FILE:
/* Write location (degree) in hierarchy */
HTM_TxtF ("%s:&nbsp;%s",
HTM_TxtF ("%s: %s",
Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],Hie[Hie_DEG].ShrtName);
break;
case TmlNot_CRS_DOC_PUB_FILE:
@ -518,12 +518,12 @@ static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
case TmlNot_CALL_FOR_EXAM:
case TmlNot_NOTICE:
/* Write location (course) in hierarchy */
HTM_TxtF ("%s:&nbsp;%s",
HTM_TxtF ("%s: %s",
Txt_HIERARCHY_SINGUL_Abc[Hie_CRS],Hie[Hie_CRS].ShrtName);
break;
case TmlNot_FORUM_POST:
/* Write forum name */
HTM_TxtF ("%s:&nbsp;%s",Txt_Forum,ForumName);
HTM_TxtF ("%s: %s",Txt_Forum,ForumName);
break;
default:
break;
@ -692,7 +692,7 @@ static void TmlNot_PutFormGoToAction (const struct TmlNot_Note *Not,
/* Icon and text */
Ico_PutIcon (Tml_Icons[Not->Type],Ico_BLACK,
Txt_TIMELINE_NOTE[Not->Type],"CONTEXT_ICOx16");
HTM_TxtF ("&nbsp;%s",Txt_TIMELINE_NOTE[Not->Type]);
HTM_NBSPTxt (Txt_TIMELINE_NOTE[Not->Type]);
/* End button */
HTM_BUTTON_End ();

View File

@ -715,7 +715,7 @@ void Usr_WriteFirstNameBRSurnames (const struct Usr_Data *UsrDat)
/***** Write surname2 if exists *****/
if (UsrDat->Surname2[0])
HTM_TxtF ("&nbsp;%s",UsrDat->Surname2);
HTM_SPTxt (UsrDat->Surname2);
}
/*****************************************************************************/
@ -3671,7 +3671,7 @@ static void Set_FormToSelectUsrListType (void (*FuncPars) (void *Args),void *Arg
"");
Ico_PutIcon (Usr_IconsClassPhotoOrList[ListType],Ico_BLACK,
Txt_USR_LIST_TYPES[ListType],"ICO20x20");
HTM_TxtF ("&nbsp;%s",Txt_USR_LIST_TYPES[ListType]);
HTM_NBSPTxt (Txt_USR_LIST_TYPES[ListType]);
HTM_BUTTON_End ();
/***** End form *****/
@ -4450,7 +4450,7 @@ void Usr_ListAllDataStds (void)
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If current course tiene groups of este type
{
HTM_TH_Span_Begin (HTM_HEAD_LEFT,1,1,"BG_HIGHLIGHT");
HTM_TxtF ("%s&nbsp;%s",
HTM_TxtF ("%s %s",
Txt_Group,
Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypName);
HTM_TH_End ();
@ -6453,7 +6453,7 @@ void Usr_ShowTableCellWithUsrData (struct Usr_Data *UsrDat,unsigned NumRows)
HTM_BR ();
HTM_Txt (UsrDat->Surname1);
if (UsrDat->Surname2[0])
HTM_TxtF ("&nbsp;%s",UsrDat->Surname2);
HTM_SPTxt (UsrDat->Surname2);
if (UsrDat->FrstName[0])
{
HTM_Comma ();

View File

@ -540,7 +540,9 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL,
URL,FileName);
HTM_IMG (CfG_URL_ICON_FILEXT_PUBLIC "32x32","zip32x32.gif",Txt_ZIP_file,
"class=\"ICO40x40\"");
HTM_TxtF ("&nbsp;%s&nbsp;",FileName);
HTM_NBSP ();
HTM_Txt (FileName);
HTM_NBSP ();
Ico_PutIcon ("download.svg",Ico_BLACK,Txt_Download,"ICO40x40");
HTM_A_End ();
HTM_TD_End ();