diff --git a/swad_API.c b/swad_API.c
index 5fe95fb0..87b70215 100644
--- a/swad_API.c
+++ b/swad_API.c
@@ -2849,10 +2849,7 @@ int swad__getNotifications (struct soap *soap,
{
extern const char *Ntf_WSNotifyEvents[Ntf_NUM_NOTIFY_EVENTS];
extern const char *Txt_Forum;
- extern const char *Txt_Course;
- extern const char *Txt_Degree;
- extern const char *Txt_Center;
- extern const char *Txt_Institution;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
int ReturnCode;
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@@ -2870,6 +2867,7 @@ int swad__getNotifications (struct soap *soap,
char *ContentStr;
Ntf_Status_t Status;
size_t Length;
+ Hie_Level_t Level;
/***** Initializations *****/
API_Set_gSOAP_RuntimeEnv (soap);
@@ -3005,21 +3003,21 @@ int swad__getNotifications (struct soap *soap,
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Forum,ForumName);
}
- else if (Hie[Hie_CRS].HieCod > 0)
- sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
- Txt_Course,Hie[Hie_CRS].ShrtName);
- else if (Hie[Hie_DEG].HieCod > 0)
- sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
- Txt_Degree,Hie[Hie_DEG].ShrtName);
- else if (Hie[Hie_CTR].HieCod > 0)
- sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
- Txt_Center,Hie[Hie_CTR].ShrtName);
- else if (Hie[Hie_INS].HieCod > 0)
- sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
- Txt_Institution,Hie[Hie_INS].ShrtName);
else
- Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"-",
- Ntf_MAX_BYTES_NOTIFY_LOCATION);
+ {
+ for (Level = Hie_CRS;
+ Level >= Hie_INS;
+ Level--)
+ if (Hie[Level].HieCod > 0)
+ {
+ sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
+ Txt_HIERARCHY_SINGUL_Abc[Level],Hie[Level].ShrtName);
+ break;
+ }
+ if (Level < Hie_INS)
+ Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"-",
+ Ntf_MAX_BYTES_NOTIFY_LOCATION);
+ }
/* Get status (row[9]) */
if (sscanf (row[9],"%u",&Status) != 1)
diff --git a/swad_browser.c b/swad_browser.c
index 57c7ccaf..671f4e50 100644
--- a/swad_browser.c
+++ b/swad_browser.c
@@ -5265,10 +5265,7 @@ static void Brw_WriteCurrentClipboard (void)
extern const char *Txt_project_assessment;
extern const char *Txt_marks_management_area;
extern const char *Txt_temporary_private_storage_area;
- extern const char *Txt_institution;
- extern const char *Txt_center;
- extern const char *Txt_degree;
- extern const char *Txt_course;
+ extern const char *Txt_HIERARCHY_SINGUL_abc[Hie_NUM_LEVELS];
extern const char *Txt_group;
extern const char *Txt_project;
extern const char *Txt_user[Usr_NUM_SEXS];
@@ -5304,7 +5301,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_documents_management_area,
- Txt_institution,Hie[Hie_INS].ShrtName);
+ Txt_HIERARCHY_SINGUL_abc[Hie_INS],Hie[Hie_INS].ShrtName);
break;
case Brw_ADMI_SHR_INS:
Hie[Hie_INS].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
@@ -5312,7 +5309,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_shared_files_area,
- Txt_institution,Hie[Hie_INS].ShrtName);
+ Txt_HIERARCHY_SINGUL_abc[Hie_INS],Hie[Hie_INS].ShrtName);
break;
case Brw_ADMI_DOC_CTR:
Hie[Hie_CTR].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
@@ -5320,7 +5317,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_documents_management_area,
- Txt_center,Hie[Hie_CTR].ShrtName);
+ Txt_HIERARCHY_SINGUL_abc[Hie_CTR],Hie[Hie_CTR].ShrtName);
break;
case Brw_ADMI_SHR_CTR:
Hie[Hie_CTR].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
@@ -5328,7 +5325,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_shared_files_area,
- Txt_center,Hie[Hie_CTR].ShrtName);
+ Txt_HIERARCHY_SINGUL_abc[Hie_CTR],Hie[Hie_CTR].ShrtName);
break;
case Brw_ADMI_DOC_DEG:
Hie[Hie_DEG].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
@@ -5336,7 +5333,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_documents_management_area,
- Txt_degree,Hie[Hie_DEG].ShrtName);
+ Txt_HIERARCHY_SINGUL_abc[Hie_DEG],Hie[Hie_DEG].ShrtName);
break;
case Brw_ADMI_SHR_DEG:
Hie[Hie_DEG].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
@@ -5344,7 +5341,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_shared_files_area,
- Txt_degree,Hie[Hie_DEG].ShrtName);
+ Txt_HIERARCHY_SINGUL_abc[Hie_DEG],Hie[Hie_DEG].ShrtName);
break;
case Brw_ADMI_DOC_CRS:
Hie[Hie_CRS].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
@@ -5352,7 +5349,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_documents_management_area,
- Txt_course,Hie[Hie_CRS].ShrtName);
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName);
break;
case Brw_ADMI_DOC_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.HieCod;
@@ -5362,7 +5359,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s %s",
Txt_documents_management_area,
- Txt_course,Hie[Hie_CRS].ShrtName,
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_TCH_CRS:
@@ -5371,7 +5368,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_teachers_files_area,
- Txt_course,Hie[Hie_CRS].ShrtName);
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName);
break;
case Brw_ADMI_TCH_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.HieCod;
@@ -5381,7 +5378,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s %s",
Txt_teachers_files_area,
- Txt_course,Hie[Hie_CRS].ShrtName,
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_SHR_CRS:
@@ -5390,7 +5387,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_shared_files_area,
- Txt_course,Hie[Hie_CRS].ShrtName);
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName);
break;
case Brw_ADMI_SHR_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.HieCod;
@@ -5400,7 +5397,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s %s",
Txt_shared_files_area,
- Txt_course,Hie[Hie_CRS].ShrtName,
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_ASG_USR:
@@ -5409,7 +5406,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s",
Txt_assignments_area,
- Txt_course,Hie[Hie_CRS].ShrtName,
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName,
Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName);
break;
case Brw_ADMI_WRK_USR:
@@ -5418,7 +5415,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s",
Txt_works_area,
- Txt_course,Hie[Hie_CRS].ShrtName,
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName,
Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName);
break;
case Brw_ADMI_ASG_CRS:
@@ -5432,7 +5429,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s",
Txt_assignments_area,
- Txt_course,Hie[Hie_CRS].ShrtName,
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName,
Txt_user[UsrDat.Sex],UsrDat.FullName);
Usr_UsrDataDestructor (&UsrDat);
break;
@@ -5447,7 +5444,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s",
Txt_works_area,
- Txt_course,Hie[Hie_CRS].ShrtName,
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName,
Txt_user[UsrDat.Sex],UsrDat.FullName);
Usr_UsrDataDestructor (&UsrDat);
break;
@@ -5462,7 +5459,7 @@ static void Brw_WriteCurrentClipboard (void)
"%s, %s %s, %s %s",
Gbl.FileBrowser.Clipboard.FileBrowser == Brw_ADMI_DOC_PRJ ? Txt_project_documents :
Txt_project_assessment,
- Txt_course,Hie[Hie_CRS].ShrtName,
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName,
Txt_project,Prj.Title);
Prj_FreeMemProject (&Prj);
break;
@@ -5472,7 +5469,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s",
Txt_marks_management_area,
- Txt_course,Hie[Hie_CRS].ShrtName);
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName);
break;
case Brw_ADMI_MRK_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.HieCod;
@@ -5482,7 +5479,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s %s, %s %s %s",
Txt_marks_management_area,
- Txt_course,Hie[Hie_CRS].ShrtName,
+ Txt_HIERARCHY_SINGUL_abc[Hie_CRS],Hie[Hie_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_BRF_USR:
@@ -9174,16 +9171,14 @@ void Brw_GetSummaryAndContentOfFile (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
void Brw_ListDocsFound (MYSQL_RES **mysql_res,unsigned NumDocs,
const char *TitleSingular,const char *TitlePlural)
{
- extern const char *Txt_Institution;
- extern const char *Txt_Center;
- extern const char *Txt_Degree;
- extern const char *Txt_Course;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_File_zone;
extern const char *Txt_Document;
extern const char *Txt_hidden_document;
extern const char *Txt_hidden_documents;
MYSQL_ROW row;
char *Title;
+ Hie_Level_t Level;
unsigned NumDoc;
unsigned NumDocsNotHidden = 0;
unsigned NumDocsHidden;
@@ -9201,13 +9196,13 @@ void Brw_ListDocsFound (MYSQL_RES **mysql_res,unsigned NumDocs,
/***** Write heading *****/
HTM_TR_Begin (NULL);
- HTM_TH_Span (NULL ,HTM_HEAD_CENTER,1,1,"BT");
- HTM_TH (Txt_Institution,HTM_HEAD_LEFT );
- HTM_TH (Txt_Center ,HTM_HEAD_LEFT );
- HTM_TH (Txt_Degree ,HTM_HEAD_LEFT );
- HTM_TH (Txt_Course ,HTM_HEAD_LEFT );
- HTM_TH (Txt_File_zone ,HTM_HEAD_LEFT );
- HTM_TH (Txt_Document ,HTM_HEAD_LEFT );
+ HTM_TH_Span (NULL,HTM_HEAD_CENTER,1,1,"BT");
+ for (Level = Hie_INS;
+ Level >= Hie_CRS;
+ Level++)
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Level],HTM_HEAD_LEFT);
+ HTM_TH (Txt_File_zone,HTM_HEAD_LEFT);
+ HTM_TH (Txt_Document ,HTM_HEAD_LEFT);
HTM_TR_End ();
/***** List documents found *****/
@@ -9941,7 +9936,7 @@ static void Brw_WriteStatsFileZonesTableHead2 (void)
extern const char *Txt_Folders;
extern const char *Txt_Files;
extern const char *Txt_Size;
- extern const char *Txt_course;
+ extern const char *Txt_HIERARCHY_SINGUL_abc[Hie_NUM_LEVELS];
HTM_TR_Begin (NULL);
@@ -9950,19 +9945,19 @@ static void Brw_WriteStatsFileZonesTableHead2 (void)
HTM_TH_Begin (HTM_HEAD_RIGHT);
HTM_TxtF ("%s/",Txt_Folders);
HTM_BR ();
- HTM_Txt (Txt_course);
+ HTM_Txt (Txt_HIERARCHY_SINGUL_abc[Hie_CRS]);
HTM_TH_End ();
HTM_TH_Begin (HTM_HEAD_RIGHT);
HTM_TxtF ("%s/",Txt_Files);
HTM_BR ();
- HTM_Txt (Txt_course);
+ HTM_Txt (Txt_HIERARCHY_SINGUL_abc[Hie_CRS]);
HTM_TH_End ();
HTM_TH_Begin (HTM_HEAD_RIGHT);
HTM_TxtF ("%s/",Txt_Size);
HTM_BR ();
- HTM_Txt (Txt_course);
+ HTM_Txt (Txt_HIERARCHY_SINGUL_abc[Hie_CRS]);
HTM_TH_End ();
HTM_TR_End ();
diff --git a/swad_call_for_exam.c b/swad_call_for_exam.c
index 482ee47d..e39d4483 100644
--- a/swad_call_for_exam.c
+++ b/swad_call_for_exam.c
@@ -1592,8 +1592,7 @@ void Cfe_GetSummaryAndContentCallForExam (char SummaryStr[Ntf_MAX_BYTES_SUMMARY
static void Cfe_GetNotifContentCallForExam (const struct Cfe_CallsForExams *CallsForExams,
char **ContentStr)
{
- extern const char *Txt_Institution;
- extern const char *Txt_Degree;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE];
extern const char *Txt_CALL_FOR_EXAM_Course;
extern const char *Txt_CALL_FOR_EXAM_Year_or_semester;
@@ -1643,8 +1642,8 @@ static void Cfe_GetNotifContentCallForExam (const struct Cfe_CallsForExams *Call
"%s: %s
"
"%s: %s
"
"%s: %s",
- Txt_Institution,Hie[Hie_INS].FullName,
- Txt_Degree,Hie[Hie_DEG].FullName,
+ Txt_HIERARCHY_SINGUL_Abc[Hie_INS],Hie[Hie_INS].FullName,
+ Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],Hie[Hie_DEG].FullName,
Txt_CALL_FOR_EXAM_Course,CallsForExams->CallForExam.CrsFullName,
Txt_CALL_FOR_EXAM_Year_or_semester,Txt_YEAR_OF_DEGREE[CallsForExams->CallForExam.Year],
Txt_CALL_FOR_EXAM_Session,CallsForExams->CallForExam.Session,
diff --git a/swad_center.c b/swad_center.c
index 8750e423..9f9c4dbe 100644
--- a/swad_center.c
+++ b/swad_center.c
@@ -113,7 +113,7 @@ void Ctr_SeeCtrWithPendingDegs (void)
{
extern const char *Hlp_SYSTEM_Pending;
extern const char *Txt_Centers_with_pending_degrees;
- extern const char *Txt_Center;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Degrees_ABBREVIATION;
extern const char *Txt_There_are_no_centers_with_requests_for_degrees_to_be_confirmed;
MYSQL_RES *mysql_res;
@@ -133,10 +133,8 @@ void Ctr_SeeCtrWithPendingDegs (void)
/***** Wrtie heading *****/
HTM_TR_Begin (NULL);
-
- HTM_TH (Txt_Center ,HTM_HEAD_LEFT );
- HTM_TH (Txt_Degrees_ABBREVIATION,HTM_HEAD_RIGHT);
-
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_CTR],HTM_HEAD_LEFT );
+ HTM_TH (Txt_Degrees_ABBREVIATION ,HTM_HEAD_RIGHT);
HTM_TR_End ();
/***** List the centers *****/
@@ -663,7 +661,7 @@ static void Ctr_GetCoordFromRow (MYSQL_RES *mysql_res,
void Ctr_WriteSelectorOfCenter (void)
{
- extern const char *Txt_Center;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumCtrs;
@@ -687,7 +685,7 @@ void Ctr_WriteSelectorOfCenter (void)
Gbl.Hierarchy.Node[Hie_CTR].HieCod < 0 ? HTM_OPTION_SELECTED :
HTM_OPTION_UNSELECTED,
HTM_OPTION_DISABLED,
- "[%s]",Txt_Center);
+ "[%s]",Txt_HIERARCHY_SINGUL_Abc[Hie_CTR]);
if (Gbl.Hierarchy.Node[Hie_INS].HieCod > 0)
{
@@ -1596,8 +1594,8 @@ unsigned Ctr_GetCachedNumCtrsWithUsrs (Rol_Role_t Role)
void Ctr_ListCtrsFound (MYSQL_RES **mysql_res,unsigned NumCtrs)
{
- extern const char *Txt_center;
- extern const char *Txt_centers;
+ extern const char *Txt_HIERARCHY_SINGUL_abc[Hie_NUM_LEVELS];
+ extern const char *Txt_HIERARCHY_PLURAL_abc[Hie_NUM_LEVELS];
unsigned NumCtr;
char *Title;
struct Hie_Node Ctr;
@@ -1608,8 +1606,8 @@ void Ctr_ListCtrsFound (MYSQL_RES **mysql_res,unsigned NumCtrs)
/***** Begin box and table *****/
/* Number of centers found */
if (asprintf (&Title,"%u %s",NumCtrs,
- NumCtrs == 1 ? Txt_center :
- Txt_centers) < 0)
+ NumCtrs == 1 ? Txt_HIERARCHY_SINGUL_abc[Hie_CTR] :
+ Txt_HIERARCHY_PLURAL_abc[Hie_CTR]) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxTableBegin (NULL,Title,NULL,NULL,NULL,Box_NOT_CLOSABLE,2);
free (Title);
diff --git a/swad_center_config.c b/swad_center_config.c
index 53b4e18f..6e8ba49b 100644
--- a/swad_center_config.c
+++ b/swad_center_config.c
@@ -547,7 +547,7 @@ static void CtrCfg_FreePhotoAttr (char **PhotoAttribution)
static void CtrCfg_Institution (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
{
extern const char *Par_CodeStr[];
- extern const char *Txt_Institution;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
unsigned NumIns;
const struct Hie_Node *Ins;
const char *Id[Frm_NUM_PUT_FORM] =
@@ -560,7 +560,7 @@ static void CtrCfg_Institution (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("RT",Id[PutForm],Txt_Institution);
+ Frm_LabelColumn ("RT",Id[PutForm],Txt_HIERARCHY_SINGUL_Abc[Hie_INS]);
/* Data */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
diff --git a/swad_changelog.h b/swad_changelog.h
index 4a049143..5dbd327d 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -633,10 +633,11 @@ 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.43.1 (2023-11-06)"
+#define Log_PLATFORM_VERSION "SWAD 23.44 (2023-11-06)"
#define CSS_FILE "swad23.35.1.css"
#define JS_FILE "swad22.49.js"
/*
+ Version 23.44: Nov 06, 2023 Code refactoring in hierarchy. (335583 lines)
Version 23.43.1: Nov 06, 2023 Code refactoring in forms. (335583 lines)
Version 23.43: Nov 06, 2023 Code refactoring in forms. (335551 lines)
Version 23.42.1: Nov 05, 2023 Code refactoring in notifications. (335447 lines)
diff --git a/swad_chat.c b/swad_chat.c
index f1c459c1..269fb3ca 100644
--- a/swad_chat.c
+++ b/swad_chat.c
@@ -111,8 +111,7 @@ void Cht_ShowListOfAvailableChatRooms (void)
extern const char *Txt_SEX_PLURAL_abc[Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NUM_ROLES];
- extern const char *Txt_Degree;
- extern const char *Txt_Course;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
bool IsLastItemInLevel[1 + Cht_CHAT_MAX_LEVELS];
unsigned NumMyDeg;
struct Hie_Node Deg;
@@ -185,7 +184,7 @@ void Cht_ShowListOfAvailableChatRooms (void)
snprintf (ThisRoomShrtName,sizeof (ThisRoomShrtName),"%s",
Deg.ShrtName);
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),"%s %s",
- Txt_Degree,Deg.ShrtName);
+ Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],Deg.ShrtName);
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,ThisRoomFullName,1,IsLastItemInLevel);
Lgo_DrawLogo (Hie_DEG,
Deg.HieCod,
@@ -217,7 +216,7 @@ void Cht_ShowListOfAvailableChatRooms (void)
snprintf (ThisRoomShrtName,sizeof (ThisRoomShrtName),"%s",
Crs.ShrtName);
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),"%s %s",
- Txt_Course,Crs.ShrtName);
+ Txt_HIERARCHY_SINGUL_Abc[Hie_CRS],Crs.ShrtName);
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,ThisRoomFullName,2,IsLastItemInLevel);
Ico_PutIcon ("chalkboard-teacher.svg",Ico_BLACK,ThisRoomFullName,"ICO16x16");
Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName);
@@ -367,8 +366,7 @@ void Cht_OpenChatWindow (void)
extern const char *Txt_General;
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NUM_ROLES];
- extern const char *Txt_Degree;
- extern const char *Txt_Course;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
char RoomCode[Cht_MAX_BYTES_ROOM_CODE + 1];
char RoomShrtName[Cht_MAX_BYTES_ROOM_SHRT_NAME + 1];
char RoomFullName [Cht_MAX_BYTES_ROOM_FULL_NAME + 1];
@@ -480,7 +478,7 @@ void Cht_OpenChatWindow (void)
Str_Concat (ListRoomShrtNames,ThisRoomShortName,sizeof (ListRoomShrtNames) - 1);
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),"%s %s",
- Txt_Degree,Deg.ShrtName);
+ Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],Deg.ShrtName);
Str_Concat (ListRoomFullNames,"|",sizeof (ListRoomFullNames) - 1);
Str_Concat (ListRoomFullNames,ThisRoomFullName,sizeof (ListRoomFullNames) - 1);
}
@@ -508,7 +506,7 @@ void Cht_OpenChatWindow (void)
Str_Concat (ListRoomShrtNames,ThisRoomShortName,sizeof (ListRoomShrtNames) - 1);
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),"%s %s",
- Txt_Course,Crs.ShrtName);
+ Txt_HIERARCHY_SINGUL_Abc[Hie_CRS],Crs.ShrtName);
Str_Concat (ListRoomFullNames,"|",sizeof (ListRoomFullNames) - 1);
Str_Concat (ListRoomFullNames,ThisRoomFullName,sizeof (ListRoomFullNames) - 1);
}
diff --git a/swad_country.c b/swad_country.c
index 1c8cd266..01b768ce 100644
--- a/swad_country.c
+++ b/swad_country.c
@@ -102,7 +102,7 @@ void Cty_SeeCtyWithPendingInss (void)
{
extern const char *Hlp_SYSTEM_Pending;
extern const char *Txt_Countries_with_pending_institutions;
- extern const char *Txt_Country;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Institutions_ABBREVIATION;
extern const char *Txt_There_are_no_countries_with_requests_for_institutions_to_be_confirmed;
MYSQL_RES *mysql_res;
@@ -131,7 +131,7 @@ void Cty_SeeCtyWithPendingInss (void)
/***** Write heading *****/
HTM_TR_Begin (NULL);
- HTM_TH (Txt_Country ,HTM_HEAD_LEFT );
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_CTY] ,HTM_HEAD_LEFT );
HTM_TH (Txt_Institutions_ABBREVIATION,HTM_HEAD_RIGHT);
HTM_TR_End ();
@@ -815,7 +815,7 @@ static void Cty_GetFullListOfCountries (void)
void Cty_WriteSelectorOfCountry (void)
{
- extern const char *Txt_Country;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
unsigned NumCty;
const struct Hie_Node *Cty;
@@ -835,7 +835,7 @@ void Cty_WriteSelectorOfCountry (void)
Gbl.Hierarchy.Node[Hie_CTY].HieCod < 0 ? HTM_OPTION_SELECTED :
HTM_OPTION_UNSELECTED,
HTM_OPTION_DISABLED,
- "[%s]",Txt_Country);
+ "[%s]",Txt_HIERARCHY_SINGUL_Abc[Hie_CTY]);
/***** List countries *****/
for (NumCty = 0;
@@ -1656,8 +1656,8 @@ unsigned Cty_GetCachedNumCtysWithUsrs (Rol_Role_t Role)
void Cty_ListCtysFound (MYSQL_RES **mysql_res,unsigned NumCtys)
{
- extern const char *Txt_country;
- extern const char *Txt_countries;
+ extern const char *Txt_HIERARCHY_SINGUL_abc[Hie_NUM_LEVELS];
+ extern const char *Txt_HIERARCHY_PLURAL_abc[Hie_NUM_LEVELS];
char *Title;
unsigned NumCty;
struct Hie_Node Cty;
@@ -1668,8 +1668,8 @@ void Cty_ListCtysFound (MYSQL_RES **mysql_res,unsigned NumCtys)
/***** Begin box and table *****/
/* Number of countries found */
if (asprintf (&Title,"%u %s",NumCtys,
- NumCtys == 1 ? Txt_country :
- Txt_countries) < 0)
+ NumCtys == 1 ? Txt_HIERARCHY_SINGUL_abc[Hie_CTY] :
+ Txt_HIERARCHY_PLURAL_abc[Hie_CTY]) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxTableBegin (NULL,Title,
NULL,NULL,
diff --git a/swad_country_config.c b/swad_country_config.c
index e0033fbb..5bef1ec0 100644
--- a/swad_country_config.c
+++ b/swad_country_config.c
@@ -372,13 +372,13 @@ static void CtyCfg_MapImage (Vie_ViewType_t ViewType,bool PutLink)
static void CtyCfg_Platform (Vie_ViewType_t ViewType)
{
- extern const char *Txt_System;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
/***** Institution *****/
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("RT",NULL,Txt_System);
+ Frm_LabelColumn ("RT",NULL,Txt_HIERARCHY_SINGUL_Abc[Hie_SYS]);
/* Data */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
@@ -408,13 +408,13 @@ static void CtyCfg_Platform (Vie_ViewType_t ViewType)
static void CtyCfg_Name (bool PutLink)
{
- extern const char *Txt_Country;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
/***** Country name *****/
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("RT",NULL,Txt_Country);
+ Frm_LabelColumn ("RT",NULL,Txt_HIERARCHY_SINGUL_Abc[Hie_CTY]);
/* Data */
HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",The_GetSuffix ());
diff --git a/swad_course.c b/swad_course.c
index bed4cb43..153743d1 100644
--- a/swad_course.c
+++ b/swad_course.c
@@ -153,7 +153,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
extern const char *Hlp_PROFILE_Courses;
extern const char *Par_CodeStr[];
extern const char *Txt_My_courses;
- extern const char *Txt_System;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
struct Hie_Node Hie[Hie_NUM_LEVELS];
bool IsLastItemInLevel[1 + 6];
bool Highlight; // Highlight because degree, course, etc. is selected
@@ -190,11 +190,11 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Lay_IndentDependingOnLevel (1,IsLastItemInLevel);
Frm_BeginForm (ActMyCrs);
Par_PutParLong (NULL,Par_CodeStr[ParCod_Cty],-1L);
- HTM_BUTTON_Submit_Begin (Txt_System,
+ HTM_BUTTON_Submit_Begin (Txt_HIERARCHY_SINGUL_Abc[Hie_SYS],
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
- Ico_PutIcon ("sitemap.svg",Ico_BLACK,Txt_System,"ICO16x16");
- HTM_TxtF (" %s",Txt_System);
+ Ico_PutIcon ("sitemap.svg",Ico_BLACK,Txt_HIERARCHY_SINGUL_Abc[Hie_SYS],"ICO16x16");
+ HTM_TxtF (" %s",Txt_HIERARCHY_SINGUL_Abc[Hie_SYS]);
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_LI_End ();
@@ -437,7 +437,7 @@ unsigned Crs_GetCachedNumCrssWithUsrs (Rol_Role_t Role)
void Crs_WriteSelectorOfCourse (void)
{
- extern const char *Txt_Course;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumCrss;
@@ -463,7 +463,7 @@ void Crs_WriteSelectorOfCourse (void)
Gbl.Hierarchy.Node[Hie_CRS].HieCod < 0 ? HTM_OPTION_SELECTED :
HTM_OPTION_UNSELECTED,
HTM_OPTION_DISABLED,
- "[%s]",Txt_Course);
+ "[%s]",Txt_HIERARCHY_SINGUL_Abc[Hie_CRS]);
if (Gbl.Hierarchy.Node[Hie_DEG].HieCod > 0)
{
@@ -561,7 +561,7 @@ static void Crs_GetListCrssInCurrentDeg (void)
void Crs_WriteSelectorMyCoursesInBreadcrumb (void)
{
- extern const char *Txt_Course;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
unsigned NumMyCrs;
long CrsCod;
long DegCod;
@@ -587,7 +587,7 @@ void Crs_WriteSelectorMyCoursesInBreadcrumb (void)
HTM_OPTION (HTM_Type_STRING,"-1",
HTM_OPTION_SELECTED,
HTM_OPTION_DISABLED,
- "%s",Txt_Course);
+ "%s",Txt_HIERARCHY_SINGUL_Abc[Hie_CRS]);
if (Gbl.Usrs.Me.Hierarchy[Hie_CRS].Num)
{
@@ -1154,7 +1154,7 @@ static void Crs_PutHeadCoursesForSeeing (void)
{
extern const char *Txt_Year_OF_A_DEGREE;
extern const char *Txt_Institutional_BR_code;
- extern const char *Txt_Course;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NUM_ROLES];
HTM_TR_Begin (NULL);
@@ -1162,7 +1162,7 @@ static void Crs_PutHeadCoursesForSeeing (void)
HTM_TH_Span (NULL ,HTM_HEAD_CENTER,1,1,"BT");
HTM_TH (Txt_Year_OF_A_DEGREE ,HTM_HEAD_CENTER);
HTM_TH (Txt_Institutional_BR_code ,HTM_HEAD_CENTER);
- HTM_TH (Txt_Course ,HTM_HEAD_LEFT );
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_CRS] ,HTM_HEAD_LEFT );
HTM_TH (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH],HTM_HEAD_RIGHT );
HTM_TH (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD],HTM_HEAD_RIGHT );
HTM_TH_Empty (1);
@@ -1949,9 +1949,8 @@ void Crs_GetAndWriteCrssOfAUsr (const struct Usr_Data *UsrDat,Rol_Role_t Role)
extern const char *Txt_USER_in_COURSE;
extern const char *Txt_User[Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
- extern const char *Txt_Degree;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Year_OF_A_DEGREE;
- extern const char *Txt_Course;
extern const char *Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NUM_ROLES];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@@ -1988,9 +1987,9 @@ void Crs_GetAndWriteCrssOfAUsr (const struct Usr_Data *UsrDat,Rol_Role_t Role)
HTM_TH_Span (NULL ,HTM_HEAD_CENTER,1,1,"BT");
HTM_TH_Span (NULL ,HTM_HEAD_CENTER,1,1,"BT");
- HTM_TH (Txt_Degree ,HTM_HEAD_LEFT );
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_DEG] ,HTM_HEAD_LEFT );
HTM_TH (Txt_Year_OF_A_DEGREE ,HTM_HEAD_CENTER);
- HTM_TH (Txt_Course ,HTM_HEAD_LEFT );
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_CRS] ,HTM_HEAD_LEFT );
HTM_TH (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH],HTM_HEAD_RIGHT );
HTM_TH (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NET],HTM_HEAD_RIGHT );
HTM_TH (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD],HTM_HEAD_RIGHT );
@@ -2023,11 +2022,10 @@ void Crs_GetAndWriteCrssOfAUsr (const struct Usr_Data *UsrDat,Rol_Role_t Role)
void Crs_ListCrssFound (MYSQL_RES **mysql_res,unsigned NumCrss)
{
- extern const char *Txt_course;
- extern const char *Txt_courses;
- extern const char *Txt_Degree;
+ extern const char *Txt_HIERARCHY_SINGUL_abc[Hie_NUM_LEVELS];
+ extern const char *Txt_HIERARCHY_PLURAL_abc[Hie_NUM_LEVELS];
extern const char *Txt_Year_OF_A_DEGREE;
- extern const char *Txt_Course;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NUM_ROLES];
char *Title;
MYSQL_ROW row;
@@ -2039,8 +2037,8 @@ void Crs_ListCrssFound (MYSQL_RES **mysql_res,unsigned NumCrss)
/***** Begin box and table *****/
/* Number of courses found */
if (asprintf (&Title,"%u %s",NumCrss,
- NumCrss == 1 ? Txt_course :
- Txt_courses) < 0)
+ NumCrss == 1 ? Txt_HIERARCHY_SINGUL_abc[Hie_CRS] :
+ Txt_HIERARCHY_PLURAL_abc[Hie_CRS]) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxTableBegin (NULL,Title,NULL,NULL,NULL,Box_NOT_CLOSABLE,2);
free (Title);
@@ -2049,9 +2047,9 @@ void Crs_ListCrssFound (MYSQL_RES **mysql_res,unsigned NumCrss)
HTM_TR_Begin (NULL);
HTM_TH_Span (NULL ,HTM_HEAD_CENTER,1,1,"BT");
- HTM_TH (Txt_Degree ,HTM_HEAD_LEFT );
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_DEG] ,HTM_HEAD_LEFT );
HTM_TH (Txt_Year_OF_A_DEGREE ,HTM_HEAD_CENTER);
- HTM_TH (Txt_Course ,HTM_HEAD_LEFT );
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_CRS] ,HTM_HEAD_LEFT );
HTM_TH (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH],HTM_HEAD_RIGHT );
HTM_TH (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NET],HTM_HEAD_RIGHT );
HTM_TH (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD],HTM_HEAD_RIGHT );
diff --git a/swad_course_config.c b/swad_course_config.c
index 370ea805..4f751290 100644
--- a/swad_course_config.c
+++ b/swad_course_config.c
@@ -205,7 +205,7 @@ void CrsCfg_PrintConfiguration (void)
static void CrsCfg_Degree (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
{
extern const char *Par_CodeStr[];
- extern const char *Txt_Degree;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
unsigned NumDeg;
const struct Hie_Node *Deg;
const char *Id[Frm_NUM_PUT_FORM] =
@@ -218,7 +218,7 @@ static void CrsCfg_Degree (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("RT",Id[PutForm],Txt_Degree);
+ Frm_LabelColumn ("RT",Id[PutForm],Txt_HIERARCHY_SINGUL_Abc[Hie_DEG]);
/* Data */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
diff --git a/swad_degree.c b/swad_degree.c
index c4083654..1af709c0 100644
--- a/swad_degree.c
+++ b/swad_degree.c
@@ -117,7 +117,7 @@ void Deg_SeeDegWithPendingCrss (void)
{
extern const char *Hlp_SYSTEM_Pending;
extern const char *Txt_Degrees_with_pending_courses;
- extern const char *Txt_Degree;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Courses_ABBREVIATION;
extern const char *Txt_There_are_no_degrees_with_requests_for_courses_to_be_confirmed;
MYSQL_RES *mysql_res;
@@ -137,8 +137,8 @@ void Deg_SeeDegWithPendingCrss (void)
/***** Write heading *****/
HTM_TR_Begin (NULL);
- HTM_TH (Txt_Degree ,HTM_HEAD_LEFT );
- HTM_TH (Txt_Courses_ABBREVIATION,HTM_HEAD_RIGHT);
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],HTM_HEAD_LEFT );
+ HTM_TH (Txt_Courses_ABBREVIATION ,HTM_HEAD_RIGHT);
HTM_TR_End ();
/***** List the degrees *****/
@@ -222,7 +222,7 @@ void Deg_DrawDegreeLogoAndNameWithLink (struct Hie_Node *Deg,Act_Action_t Action
void Deg_WriteSelectorOfDegree (void)
{
- extern const char *Txt_Degree;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumDegs;
@@ -246,7 +246,7 @@ void Deg_WriteSelectorOfDegree (void)
Gbl.Hierarchy.Node[Hie_DEG].HieCod <= 0 ? HTM_OPTION_SELECTED :
HTM_OPTION_UNSELECTED,
HTM_OPTION_DISABLED,
- "[%s]",Txt_Degree);
+ "[%s]",Txt_HIERARCHY_SINGUL_Abc[Hie_DEG]);
if (Gbl.Hierarchy.Node[Hie_CTR].HieCod > 0)
{
@@ -598,18 +598,18 @@ static void Deg_PutFormToCreateDegree (const struct DegTyp_DegTypes *DegTypes)
static void Deg_PutHeadDegreesForSeeing (void)
{
- extern const char *Txt_Degree;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Type;
extern const char *Txt_Courses_ABBREVIATION;
extern const char *Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NUM_ROLES];
HTM_TR_Begin (NULL);
- HTM_TH_Span (NULL ,HTM_HEAD_CENTER,1,1,"BT");
+ HTM_TH_Span (NULL ,HTM_HEAD_CENTER,1,1,"BT");
HTM_TH_Empty (1);
- HTM_TH (Txt_Degree ,HTM_HEAD_LEFT );
- HTM_TH (Txt_Type ,HTM_HEAD_LEFT );
- HTM_TH (Txt_Courses_ABBREVIATION,HTM_HEAD_RIGHT );
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],HTM_HEAD_LEFT );
+ HTM_TH (Txt_Type ,HTM_HEAD_LEFT );
+ HTM_TH (Txt_Courses_ABBREVIATION ,HTM_HEAD_RIGHT );
HTM_TH_Begin (HTM_HEAD_RIGHT);
HTM_TxtF ("%s+",Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH]);
HTM_BR ();
@@ -1507,8 +1507,8 @@ unsigned Deg_GetCachedNumDegsWithUsrs (Rol_Role_t Role)
void Deg_ListDegsFound (MYSQL_RES **mysql_res,unsigned NumDegs)
{
- extern const char *Txt_degree;
- extern const char *Txt_degrees;
+ extern const char *Txt_HIERARCHY_SINGUL_abc[Hie_NUM_LEVELS];
+ extern const char *Txt_HIERARCHY_PLURAL_abc[Hie_NUM_LEVELS];
char *Title;
unsigned NumDeg;
struct Hie_Node Deg;
@@ -1519,8 +1519,8 @@ void Deg_ListDegsFound (MYSQL_RES **mysql_res,unsigned NumDegs)
/***** Begin box and table *****/
/* Number of degrees found */
if (asprintf (&Title,"%u %s",NumDegs,
- NumDegs == 1 ? Txt_degree :
- Txt_degrees) < 0)
+ NumDegs == 1 ? Txt_HIERARCHY_SINGUL_abc[Hie_DEG] :
+ Txt_HIERARCHY_PLURAL_abc[Hie_DEG]) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxTableBegin (NULL,Title,NULL,NULL,NULL,Box_NOT_CLOSABLE,2);
free (Title);
diff --git a/swad_degree_config.c b/swad_degree_config.c
index b275393c..ef0f7c31 100644
--- a/swad_degree_config.c
+++ b/swad_degree_config.c
@@ -199,7 +199,7 @@ static void DegCfg_PutIconsToPrintAndUpload (__attribute__((unused)) void *Args)
static void DegCfg_Center (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
{
extern const char *Par_CodeStr[];
- extern const char *Txt_Center;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
unsigned NumCtr;
const struct Hie_Node *Ctr;
const char *Id[Frm_NUM_PUT_FORM] =
@@ -212,7 +212,7 @@ static void DegCfg_Center (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("RT",Id[PutForm],Txt_Center);
+ Frm_LabelColumn ("RT",Id[PutForm],Txt_HIERARCHY_SINGUL_Abc[Hie_CTR]);
/* Data */
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
diff --git a/swad_department.c b/swad_department.c
index 8b13cbad..5bf09c2a 100644
--- a/swad_department.c
+++ b/swad_department.c
@@ -843,7 +843,7 @@ static void Dpt_PutFormToCreateDepartment (void)
static void Dpt_PutHeadDepartments (void)
{
extern const char *Txt_Code;
- extern const char *Txt_Institution;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Short_name;
extern const char *Txt_Full_name;
extern const char *Txt_WWW;
@@ -852,7 +852,7 @@ static void Dpt_PutHeadDepartments (void)
HTM_TR_Begin (NULL);
HTM_TH_Empty (1);
HTM_TH (Txt_Code ,HTM_HEAD_RIGHT);
- HTM_TH (Txt_Institution ,HTM_HEAD_LEFT );
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_INS] ,HTM_HEAD_LEFT );
HTM_TH (Txt_Short_name ,HTM_HEAD_LEFT );
HTM_TH (Txt_Full_name ,HTM_HEAD_LEFT );
HTM_TH (Txt_WWW ,HTM_HEAD_LEFT );
diff --git a/swad_enrolment.c b/swad_enrolment.c
index 4f8c12aa..8a40f2b0 100644
--- a/swad_enrolment.c
+++ b/swad_enrolment.c
@@ -2091,7 +2091,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
extern const char *Txt_Enrolment_requests;
extern const char *Txt_Scope;
extern const char *Txt_Users;
- extern const char *Txt_Course;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NUM_ROLES];
extern const char *Txt_Requester;
extern const char *Txt_Role;
@@ -2192,7 +2192,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
/* Table heading */
HTM_TR_Begin (NULL);
HTM_TH_Empty (1);
- HTM_TH (Txt_Course ,HTM_HEAD_LEFT );
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_CRS] ,HTM_HEAD_LEFT );
HTM_TH (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH],HTM_HEAD_RIGHT );
HTM_TH_Span (Txt_Requester ,HTM_HEAD_LEFT ,1,2,NULL);
HTM_TH (Txt_Role ,HTM_HEAD_LEFT );
diff --git a/swad_hierarchy.c b/swad_hierarchy.c
index 583aec46..a7f0475a 100644
--- a/swad_hierarchy.c
+++ b/swad_hierarchy.c
@@ -70,27 +70,6 @@ static FigCch_FigureCached_t Hie_FiguresCached[Hie_NUM_LEVELS] =
[Hie_CRS] = FigCch_NUM_CRSS,
};
-/*****************************************************************************/
-/**************************** Public constants *******************************/
-/*****************************************************************************/
-
-extern const char *Txt_System;
-extern const char *Txt_Country;
-extern const char *Txt_Institution;
-extern const char *Txt_Center;
-extern const char *Txt_Degree;
-extern const char *Txt_Course;
-
-const char **Hie_TxtLevel[Hie_NUM_LEVELS] =
- {
- [Hie_SYS] = &Txt_System,
- [Hie_CTY] = &Txt_Country,
- [Hie_INS] = &Txt_Institution,
- [Hie_CTR] = &Txt_Center,
- [Hie_DEG] = &Txt_Degree,
- [Hie_CRS] = &Txt_Course,
- };
-
/*****************************************************************************/
/***************************** Private prototypes ****************************/
/*****************************************************************************/
@@ -135,11 +114,7 @@ void Hie_SeePending (void)
void Hie_WriteMenuHierarchy (void)
{
extern const char *Par_CodeStr[];
- extern const char *Txt_Country;
- extern const char *Txt_Institution;
- extern const char *Txt_Center;
- extern const char *Txt_Degree;
- extern const char *Txt_Course;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
/***** Begin table *****/
HTM_TABLE_BeginCenterPadding (2);
@@ -148,7 +123,8 @@ void Hie_WriteMenuHierarchy (void)
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("RT",Par_CodeStr[ParCod_Cty],Txt_Country);
+ Frm_LabelColumn ("RT",Par_CodeStr[ParCod_Cty],
+ Txt_HIERARCHY_SINGUL_Abc[Hie_CTY]);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
@@ -164,7 +140,8 @@ void Hie_WriteMenuHierarchy (void)
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("RT",Par_CodeStr[ParCod_Ins],Txt_Institution);
+ Frm_LabelColumn ("RT",Par_CodeStr[ParCod_Ins],
+ Txt_HIERARCHY_SINGUL_Abc[Hie_INS]);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
@@ -180,7 +157,8 @@ void Hie_WriteMenuHierarchy (void)
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("RT",Par_CodeStr[ParCod_Ctr],Txt_Center);
+ Frm_LabelColumn ("RT",Par_CodeStr[ParCod_Ctr],
+ Txt_HIERARCHY_SINGUL_Abc[Hie_CTR]);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
@@ -196,7 +174,8 @@ void Hie_WriteMenuHierarchy (void)
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("RT",Par_CodeStr[ParCod_Deg],Txt_Degree);
+ Frm_LabelColumn ("RT",Par_CodeStr[ParCod_Deg],
+ Txt_HIERARCHY_SINGUL_Abc[Hie_DEG]);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
@@ -212,7 +191,8 @@ void Hie_WriteMenuHierarchy (void)
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("RT",Par_CodeStr[ParCod_Crs],Txt_Course);
+ Frm_LabelColumn ("RT",Par_CodeStr[ParCod_Crs],
+ Txt_HIERARCHY_SINGUL_Abc[Hie_CRS]);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
@@ -235,11 +215,7 @@ void Hie_WriteMenuHierarchy (void)
void Hie_WriteHierarchyInBreadcrumb (void)
{
- extern const char *Txt_System;
- extern const char *Txt_Country;
- extern const char *Txt_Institution;
- extern const char *Txt_Center;
- extern const char *Txt_Degree;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
/***** Form to go to the system *****/
HTM_DIV_Begin ("class=\"BC BC_%s\"",The_GetSuffix ());
@@ -248,8 +224,8 @@ void Hie_WriteHierarchyInBreadcrumb (void)
Frm_BeginFormGoTo (ActMnu);
Par_PutParUnsigned (NULL,"NxtTab",(unsigned) TabSys);
- HTM_BUTTON_Submit_Begin (Txt_System,"class=\"BT_LINK\"");
- HTM_Txt (Txt_System);
+ HTM_BUTTON_Submit_Begin (Txt_HIERARCHY_SINGUL_Abc[Hie_SYS],"class=\"BT_LINK\"");
+ HTM_Txt (Txt_HIERARCHY_SINGUL_Abc[Hie_SYS]);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -282,8 +258,8 @@ void Hie_WriteHierarchyInBreadcrumb (void)
/***** Form to go to select countries *****/
Frm_BeginFormGoTo (ActSeeCty);
- HTM_BUTTON_Submit_Begin (Txt_Country,"class=\"BT_LINK\"");
- HTM_Txt (Txt_Country);
+ HTM_BUTTON_Submit_Begin (Txt_HIERARCHY_SINGUL_Abc[Hie_CTY],"class=\"BT_LINK\"");
+ HTM_Txt (Txt_HIERARCHY_SINGUL_Abc[Hie_CTY]);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -317,8 +293,8 @@ void Hie_WriteHierarchyInBreadcrumb (void)
/***** Form to go to select institutions *****/
Frm_BeginFormGoTo (ActSeeIns);
- HTM_BUTTON_Submit_Begin (Txt_Institution,"class=\"BT_LINK\"");
- HTM_Txt (Txt_Institution);
+ HTM_BUTTON_Submit_Begin (Txt_HIERARCHY_SINGUL_Abc[Hie_INS],"class=\"BT_LINK\"");
+ HTM_Txt (Txt_HIERARCHY_SINGUL_Abc[Hie_INS]);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -332,7 +308,7 @@ void Hie_WriteHierarchyInBreadcrumb (void)
HTM_Txt (" > ");
/***** Hidden institution *****/
- HTM_Txt (Txt_Institution);
+ HTM_Txt (Txt_HIERARCHY_SINGUL_Abc[Hie_INS]);
HTM_DIV_End ();
}
@@ -364,8 +340,8 @@ void Hie_WriteHierarchyInBreadcrumb (void)
/***** Form to go to select centers *****/
Frm_BeginFormGoTo (ActSeeCtr);
- HTM_BUTTON_Submit_Begin (Txt_Center,"class=\"BT_LINK\"");
- HTM_Txt (Txt_Center);
+ HTM_BUTTON_Submit_Begin (Txt_HIERARCHY_SINGUL_Abc[Hie_CTR],"class=\"BT_LINK\"");
+ HTM_Txt (Txt_HIERARCHY_SINGUL_Abc[Hie_CTR]);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -379,7 +355,7 @@ void Hie_WriteHierarchyInBreadcrumb (void)
HTM_Txt (" > ");
/***** Hidden center *****/
- HTM_Txt (Txt_Center);
+ HTM_Txt (Txt_HIERARCHY_SINGUL_Abc[Hie_CTR]);
HTM_DIV_End ();
}
@@ -411,8 +387,8 @@ void Hie_WriteHierarchyInBreadcrumb (void)
/***** Form to go to select degrees *****/
Frm_BeginFormGoTo (ActSeeDeg);
- HTM_BUTTON_Submit_Begin (Txt_Degree,"class=\"BT_LINK\"");
- HTM_Txt (Txt_Degree);
+ HTM_BUTTON_Submit_Begin (Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],"class=\"BT_LINK\"");
+ HTM_Txt (Txt_HIERARCHY_SINGUL_Abc[Hie_DEG]);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -426,7 +402,7 @@ void Hie_WriteHierarchyInBreadcrumb (void)
HTM_Txt (" > ");
/***** Hidden degree *****/
- HTM_Txt (Txt_Degree);
+ HTM_Txt (Txt_HIERARCHY_SINGUL_Abc[Hie_DEG]);
HTM_DIV_End ();
}
@@ -1228,17 +1204,7 @@ static void Hie_WriteHeadHierarchy (void)
static void Hie_GetAndShowHierarchyWithNodes (Hie_Level_t HavingNodesOfLevel)
{
extern const char *Txt_With_;
- extern const char *Txt_institutions;
- extern const char *Txt_centers;
- extern const char *Txt_degrees;
- extern const char *Txt_courses;
- static const char **Txt[Hie_NUM_LEVELS] =
- {
- [Hie_INS] = &Txt_institutions, // Number of ... with institutions
- [Hie_CTR] = &Txt_centers, // Number of ... with centers
- [Hie_DEG] = &Txt_degrees, // Number of ... with degrees
- [Hie_CRS] = &Txt_courses, // Number of ... with courses
- };
+ extern const char *Txt_HIERARCHY_PLURAL_abc[Hie_NUM_LEVELS];
int NumNodes[Hie_NUM_LEVELS];
Hie_Level_t LevelChildren;
@@ -1258,7 +1224,7 @@ static void Hie_GetAndShowHierarchyWithNodes (Hie_Level_t HavingNodesOfLevel)
HavingNodesOfLevel);// Grand child
/***** Write number of elements with courses *****/
- Hie_ShowHierarchyRow (Txt_With_,*Txt[HavingNodesOfLevel],"DAT",NumNodes);
+ Hie_ShowHierarchyRow (Txt_With_,Txt_HIERARCHY_PLURAL_abc[HavingNodesOfLevel],"DAT",NumNodes);
}
/*****************************************************************************/
diff --git a/swad_hierarchy_config.c b/swad_hierarchy_config.c
index f719ecee..07db2bfc 100644
--- a/swad_hierarchy_config.c
+++ b/swad_hierarchy_config.c
@@ -91,8 +91,8 @@ void HieCfg_Name (Frm_PutForm_t PutForm,Hie_Level_t Level,
extern const char *Nam_Params[Nam_NUM_SHRT_FULL_NAMES];
extern unsigned Nam_MaxChars[Nam_NUM_SHRT_FULL_NAMES];
extern const char *Nam_Classes[Nam_NUM_SHRT_FULL_NAMES];
- extern const char **Hie_TxtLevel[Hie_NUM_LEVELS];
extern const char *Txt_Short_name;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
static const Act_Action_t Action[Hie_NUM_LEVELS][Nam_NUM_SHRT_FULL_NAMES] =
{
[Hie_INS][Nam_SHRT_NAME] = ActRenInsShoCfg,
@@ -121,7 +121,7 @@ void HieCfg_Name (Frm_PutForm_t PutForm,Hie_Level_t Level,
/* Label */
Frm_LabelColumn ("RT",Id[PutForm],
ShrtOrFull == Nam_SHRT_NAME ? Txt_Short_name :
- *Hie_TxtLevel[Level]);
+ Txt_HIERARCHY_SINGUL_Abc[Level]);
/* Data */
HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",The_GetSuffix ());
diff --git a/swad_indicator.c b/swad_indicator.c
index 301fd032..27f49e1a 100644
--- a/swad_indicator.c
+++ b/swad_indicator.c
@@ -532,8 +532,7 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
Ind_IndicatorsLayout_t IndicatorsLayout,
unsigned NumCrss,MYSQL_RES *mysql_res)
{
- extern const char *Txt_Degree;
- extern const char *Txt_Course;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Institutional_BR_code;
extern const char *Txt_Web_page_of_the_course;
extern const char *Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NUM_ROLES];
@@ -574,8 +573,8 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
{
case Ind_INDICATORS_BRIEF:
HTM_TR_Begin (NULL);
- HTM_TH_Span (Txt_Degree ,HTM_HEAD_LEFT ,3, 1,NULL);
- HTM_TH_Span (Txt_Course ,HTM_HEAD_LEFT ,3, 1,NULL);
+ HTM_TH_Span (Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],HTM_HEAD_LEFT ,3, 1,NULL);
+ HTM_TH_Span (Txt_HIERARCHY_SINGUL_Abc[Hie_CRS],HTM_HEAD_LEFT ,3, 1,NULL);
HTM_TH_Span (Txt_Institutional_BR_code ,HTM_HEAD_LEFT ,3, 1,NULL);
HTM_TH_Span (Txt_Web_page_of_the_course,HTM_HEAD_LEFT ,3, 1,NULL);
HTM_TH_Span (Txt_Indicators ,HTM_HEAD_CENTER,1,11,NULL);
@@ -615,8 +614,8 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
break;
case Ind_INDICATORS_FULL:
HTM_TR_Begin (NULL);
- HTM_TH_Span (Txt_Degree ,HTM_HEAD_LEFT ,3, 1,NULL);
- HTM_TH_Span (Txt_Course ,HTM_HEAD_LEFT ,3, 1,NULL);
+ HTM_TH_Span (Txt_HIERARCHY_SINGUL_Abc[Hie_DEG] ,HTM_HEAD_LEFT ,3, 1,NULL);
+ HTM_TH_Span (Txt_HIERARCHY_SINGUL_Abc[Hie_CRS] ,HTM_HEAD_LEFT ,3, 1,NULL);
HTM_TH_Span (Txt_Institutional_BR_code ,HTM_HEAD_LEFT ,3, 1,NULL);
HTM_TH_Span (Txt_Web_page_of_the_course ,HTM_HEAD_LEFT ,3, 1,NULL);
HTM_TH_Span (Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH],HTM_HEAD_LEFT ,3, 1,NULL);
diff --git a/swad_institution.c b/swad_institution.c
index dbbb2d8a..8740919f 100644
--- a/swad_institution.c
+++ b/swad_institution.c
@@ -120,7 +120,7 @@ void Ins_SeeInsWithPendingCtrs (void)
{
extern const char *Hlp_SYSTEM_Pending;
extern const char *Txt_Institutions_with_pending_centers;
- extern const char *Txt_Institution;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Centers_ABBREVIATION;
extern const char *Txt_There_are_no_institutions_with_requests_for_centers_to_be_confirmed;
MYSQL_RES *mysql_res;
@@ -154,8 +154,8 @@ void Ins_SeeInsWithPendingCtrs (void)
/***** Write heading *****/
HTM_TR_Begin (NULL);
- HTM_TH (Txt_Institution ,HTM_HEAD_LEFT );
- HTM_TH (Txt_Centers_ABBREVIATION,HTM_HEAD_RIGHT);
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_INS],HTM_HEAD_LEFT );
+ HTM_TH (Txt_Centers_ABBREVIATION ,HTM_HEAD_RIGHT);
HTM_TR_End ();
/***** List the institutions *****/
@@ -806,7 +806,7 @@ void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins,
void Ins_WriteSelectorOfInstitution (void)
{
- extern const char *Txt_Institution;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumInss;
@@ -831,7 +831,7 @@ void Ins_WriteSelectorOfInstitution (void)
Gbl.Hierarchy.Node[Hie_INS].HieCod < 0 ? HTM_OPTION_SELECTED :
HTM_OPTION_UNSELECTED,
HTM_OPTION_DISABLED,
- "[%s]",Txt_Institution);
+ "[%s]",Txt_HIERARCHY_SINGUL_Abc[Hie_INS]);
if (Gbl.Hierarchy.Node[Hie_CTY].HieCod > 0)
{
@@ -1533,8 +1533,8 @@ unsigned Ins_GetCachedNumInssWithUsrs (Rol_Role_t Role)
void Ins_ListInssFound (MYSQL_RES **mysql_res,unsigned NumInss)
{
- extern const char *Txt_institution;
- extern const char *Txt_institutions;
+ extern const char *Txt_HIERARCHY_SINGUL_abc[Hie_NUM_LEVELS];
+ extern const char *Txt_HIERARCHY_PLURAL_abc[Hie_NUM_LEVELS];
char *Title;
unsigned NumIns;
struct Hie_Node Ins;
@@ -1545,8 +1545,8 @@ void Ins_ListInssFound (MYSQL_RES **mysql_res,unsigned NumInss)
/***** Begin box and table *****/
/* Number of institutions found */
if (asprintf (&Title,"%u %s",NumInss,
- NumInss == 1 ? Txt_institution :
- Txt_institutions) < 0)
+ NumInss == 1 ? Txt_HIERARCHY_SINGUL_abc[Hie_INS] :
+ Txt_HIERARCHY_PLURAL_abc[Hie_INS]) < 0)
Err_NotEnoughMemoryExit ();
Box_BoxTableBegin (NULL,Title,NULL,NULL,NULL,Box_NOT_CLOSABLE,2);
free (Title);
@@ -1827,7 +1827,7 @@ static void Ins_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void)
static void Ins_ShowInss (MYSQL_RES **mysql_res,unsigned NumInss,
const char *TxtFigure)
{
- extern const char *Txt_Institution;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
unsigned NumIns;
unsigned NumOrder;
unsigned NumberLastRow;
@@ -1877,8 +1877,8 @@ static void Ins_ShowInss (MYSQL_RES **mysql_res,unsigned NumInss,
/***** Draw institutions as a list *****/
HTM_TR_Begin (NULL);
HTM_TH_Empty (1);
- HTM_TH (Txt_Institution,HTM_HEAD_LEFT);
- HTM_TH (TxtFigure ,HTM_HEAD_RIGHT);
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_INS],HTM_HEAD_LEFT);
+ HTM_TH (TxtFigure ,HTM_HEAD_RIGHT);
HTM_TR_End ();
for (NumIns = 1, NumOrder = 1, NumberLastRow = 0;
diff --git a/swad_institution_config.c b/swad_institution_config.c
index b991a9ec..93cb2652 100644
--- a/swad_institution_config.c
+++ b/swad_institution_config.c
@@ -304,7 +304,7 @@ static void InsCfg_Map (void)
static void InsCfg_Country (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
{
extern const char *Par_CodeStr[];
- extern const char *Txt_Country;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
unsigned NumCty;
const struct Hie_Node *Cty;
const char *Id[Frm_NUM_PUT_FORM] =
@@ -320,7 +320,7 @@ static void InsCfg_Country (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("RT",Id[PutForm],Txt_Country);
+ Frm_LabelColumn ("RT",Id[PutForm],Txt_HIERARCHY_SINGUL_Abc[Hie_CTY]);
/* Data */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
diff --git a/swad_log.c b/swad_log.c
index 703b8f49..e13bbfb7 100644
--- a/swad_log.c
+++ b/swad_log.c
@@ -190,10 +190,7 @@ void Log_GetAndShowLastClicks (void)
extern const char *Txt_Click;
extern const char *Txt_ELAPSED_TIME;
extern const char *Txt_Role;
- extern const char *Txt_Country;
- extern const char *Txt_Institution;
- extern const char *Txt_Center;
- extern const char *Txt_Degree;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Action;
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
MYSQL_RES *mysql_res;
@@ -214,14 +211,14 @@ void Log_GetAndShowLastClicks (void)
/* Heading row */
HTM_TR_Begin (NULL);
- HTM_TH_Span (Txt_Click ,HTM_HEAD_RIGHT,1,1,"LC_CLK"); // Click
- HTM_TH_Span (Txt_ELAPSED_TIME,HTM_HEAD_RIGHT,1,1,"LC_TIM"); // Elapsed time
- HTM_TH_Span (Txt_Role ,HTM_HEAD_LEFT ,1,1,"LC_ROL"); // Role
- HTM_TH_Span (Txt_Country ,HTM_HEAD_LEFT ,1,1,"LC_CTY"); // Country
- HTM_TH_Span (Txt_Institution ,HTM_HEAD_LEFT ,1,1,"LC_INS"); // Institution
- HTM_TH_Span (Txt_Center ,HTM_HEAD_LEFT ,1,1,"LC_CTR"); // Center
- HTM_TH_Span (Txt_Degree ,HTM_HEAD_LEFT ,1,1,"LC_DEG"); // Degree
- HTM_TH_Span (Txt_Action ,HTM_HEAD_LEFT ,1,1,"LC_ACT"); // Action
+ HTM_TH_Span (Txt_Click ,HTM_HEAD_RIGHT,1,1,"LC_CLK"); // Click
+ HTM_TH_Span (Txt_ELAPSED_TIME ,HTM_HEAD_RIGHT,1,1,"LC_TIM"); // Elapsed time
+ HTM_TH_Span (Txt_Role ,HTM_HEAD_LEFT ,1,1,"LC_ROL"); // Role
+ HTM_TH_Span (Txt_HIERARCHY_SINGUL_Abc[Hie_CTY],HTM_HEAD_LEFT ,1,1,"LC_CTY"); // Country
+ HTM_TH_Span (Txt_HIERARCHY_SINGUL_Abc[Hie_INS],HTM_HEAD_LEFT ,1,1,"LC_INS"); // Institution
+ HTM_TH_Span (Txt_HIERARCHY_SINGUL_Abc[Hie_CTR],HTM_HEAD_LEFT ,1,1,"LC_CTR"); // Center
+ HTM_TH_Span (Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],HTM_HEAD_LEFT ,1,1,"LC_DEG"); // Degree
+ HTM_TH_Span (Txt_Action ,HTM_HEAD_LEFT ,1,1,"LC_ACT"); // Action
HTM_TR_End ();
for (NumClick = 0;
diff --git a/swad_notification.c b/swad_notification.c
index a2ad8915..d1cd8442 100644
--- a/swad_notification.c
+++ b/swad_notification.c
@@ -314,7 +314,6 @@ static void Ntf_GetParsNotifyEvents (void);
void Ntf_ShowMyNotifications (void)
{
- extern const char **Hie_TxtLevel[Hie_NUM_LEVELS];
extern const char *Hlp_START_Notifications;
extern const char *Txt_Settings;
extern const char *Txt_Domains;
@@ -328,6 +327,7 @@ void Ntf_ShowMyNotifications (void)
extern const char *Txt_NOTIFY_EVENTS_SINGULAR[Ntf_NUM_NOTIFY_EVENTS];
extern const char *Txt_Forum;
extern const char *Txt_NOTIFICATION_STATUS[Ntf_NUM_STATUS_TXT];
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_You_have_no_notifications;
extern const char *Txt_You_have_no_unread_notifications;
MYSQL_RES *mysql_res;
@@ -603,7 +603,7 @@ void Ntf_ShowMyNotifications (void)
if (Hie[Level].HieCod > 0)
{
HTM_TxtF ("%s: %s",
- *Hie_TxtLevel[Level],
+ Txt_HIERARCHY_SINGUL_Abc[Level],
Hie[Level].ShrtName);
break;
}
diff --git a/swad_photo.c b/swad_photo.c
index 986358bf..6096c6a4 100644
--- a/swad_photo.c
+++ b/swad_photo.c
@@ -2199,7 +2199,7 @@ static void Pho_ShowOrPrintListDegrees (struct Pho_DegPhotos *DegPhotos,
Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
{
extern const char *Txt_No_INDEX;
- extern const char *Txt_Degree;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_SEX_PLURAL_Abc[Usr_NUM_SEXS];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@@ -2222,8 +2222,8 @@ static void Pho_ShowOrPrintListDegrees (struct Pho_DegPhotos *DegPhotos,
/***** Write heading *****/
HTM_TABLE_BeginCenterPadding (2);
HTM_TR_Begin (NULL);
- HTM_TH (Txt_No_INDEX,HTM_HEAD_RIGHT);
- HTM_TH (Txt_Degree ,HTM_HEAD_CENTER);
+ HTM_TH (Txt_No_INDEX ,HTM_HEAD_RIGHT );
+ HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],HTM_HEAD_CENTER);
for (Sex = (Usr_Sex_t) 0;
Sex <= (Usr_Sex_t) (Usr_NUM_SEXS - 1);
Sex++)
diff --git a/swad_record.c b/swad_record.c
index 50719b57..0dcd2d4c 100644
--- a/swad_record.c
+++ b/swad_record.c
@@ -3200,7 +3200,7 @@ static void Rec_ShowFirstName (struct Usr_Data *UsrDat,Vie_ViewType_t ViewType)
static void Rec_ShowCountry (struct Usr_Data *UsrDat,Vie_ViewType_t ViewType)
{
extern const char *Par_CodeStr[];
- extern const char *Txt_Country;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Another_country;
char *Label;
unsigned NumCty;
@@ -3216,10 +3216,10 @@ static void Rec_ShowCountry (struct Usr_Data *UsrDat,Vie_ViewType_t ViewType)
switch (ViewType)
{
case Vie_VIEW:
- Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Country);
+ Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_HIERARCHY_SINGUL_Abc[Hie_CTY]);
break;
case Vie_EDIT:
- if (asprintf (&Label,"%s*",Txt_Country) < 0)
+ if (asprintf (&Label,"%s*",Txt_HIERARCHY_SINGUL_Abc[Hie_CTY]) < 0)
Err_NotEnoughMemoryExit ();
Frm_LabelColumn ("REC_C1_BOT RM",Par_CodeStr[ParCod_OthCty],Label);
free (Label);
@@ -3239,7 +3239,7 @@ static void Rec_ShowCountry (struct Usr_Data *UsrDat,Vie_ViewType_t ViewType)
HTM_OPTION (HTM_Type_STRING,"",
HTM_OPTION_UNSELECTED,
HTM_OPTION_ENABLED,
- "%s",Txt_Country);
+ "%s",Txt_HIERARCHY_SINGUL_Abc[Hie_CTY]);
HTM_OPTION (HTM_Type_STRING,"0",
UsrDat->CtyCod == 0 ? HTM_OPTION_SELECTED :
HTM_OPTION_UNSELECTED,
@@ -3451,13 +3451,13 @@ static void Rec_ShowTeacherRows (struct Usr_Data *UsrDat,struct Hie_Node *Ins,
static void Rec_ShowInstitution (struct Hie_Node *Ins,bool ShowData)
{
- extern const char *Txt_Institution;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
/***** Institution *****/
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Institution);
+ Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_HIERARCHY_SINGUL_Abc[Hie_INS]);
/* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT DAT_STRONG_%s\"",
@@ -3484,14 +3484,14 @@ static void Rec_ShowInstitution (struct Hie_Node *Ins,bool ShowData)
static void Rec_ShowCenter (struct Usr_Data *UsrDat,bool ShowData)
{
- extern const char *Txt_Center;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
struct Hie_Node Ctr;
/***** Center *****/
HTM_TR_Begin (NULL);
/* Label */
- Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Center);
+ Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_HIERARCHY_SINGUL_Abc[Hie_CTR]);
/* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT DAT_STRONG_%s\"",
@@ -3842,10 +3842,8 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
extern const char *Hlp_PROFILE_Institution;
extern const char *Par_CodeStr[];
extern const char *Txt_Institution_center_and_department;
- extern const char *Txt_Institution;
- extern const char *Txt_Country;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
extern const char *Txt_Another_institution;
- extern const char *Txt_Center;
extern const char *Txt_Another_center;
extern const char *Txt_Department;
extern const char *Txt_Office;
@@ -3870,7 +3868,7 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
sprintf (StrRecordWidth,"%upx",Rec_RECORD_WIDTH);
Box_BoxTableBegin (StrRecordWidth,
IAmATeacher ? Txt_Institution_center_and_department :
- Txt_Institution,
+ Txt_HIERARCHY_SINGUL_Abc[Hie_INS],
NULL,NULL,
Hlp_PROFILE_Institution,Box_NOT_CLOSABLE,2);
@@ -3878,7 +3876,7 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
HTM_TR_Begin (NULL);
/* Label */
- if (asprintf (&Label,"%s*",Txt_Country) < 0)
+ if (asprintf (&Label,"%s*",Txt_HIERARCHY_SINGUL_Abc[Hie_CTY]) < 0)
Err_NotEnoughMemoryExit ();
Frm_LabelColumn ("REC_C1_BOT RM","InsCtyCod",Label);
free (Label);
@@ -3919,7 +3917,7 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
HTM_TR_Begin (NULL);
/* Label */
- if (asprintf (&Label,"%s*",Txt_Institution) < 0)
+ if (asprintf (&Label,"%s*",Txt_HIERARCHY_SINGUL_Abc[Hie_INS]) < 0)
Err_NotEnoughMemoryExit ();
Frm_LabelColumn ("REC_C1_BOT RM",Par_CodeStr[ParCod_OthIns],Label);
free (Label);
@@ -3971,7 +3969,7 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
HTM_TR_Begin (NULL);
/* Label */
- if (asprintf (&Label,"%s*",Txt_Center) < 0)
+ if (asprintf (&Label,"%s*",Txt_HIERARCHY_SINGUL_Abc[Hie_CTR]) < 0)
Err_NotEnoughMemoryExit ();
Frm_LabelColumn ("REC_C1_BOT RM",Par_CodeStr[ParCod_OthCtr],Label);
free (Label);
diff --git a/swad_report.c b/swad_report.c
index af46a13e..008b4a58 100644
--- a/swad_report.c
+++ b/swad_report.c
@@ -482,8 +482,7 @@ static void Rep_WriteSectionUsrInfo (void)
extern const char *Txt_Personal_information;
extern const char *Txt_Name;
extern const char *Txt_Email;
- extern const char *Txt_Country;
- extern const char *Txt_Institution;
+ extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
char CtyName[Nam_MAX_BYTES_FULL_NAME + 1];
struct Hie_Node Ins;
@@ -506,15 +505,13 @@ static void Rep_WriteSectionUsrInfo (void)
/***** User's country *****/
Cty_GetCountryNameInLanguage (Gbl.Usrs.Me.UsrDat.CtyCod,Gbl.Prefs.Language,CtyName);
fprintf (Rep_File,"