Version 23.9.2: Sep 19, 2023 Code refactoring in hierarchy.

This commit is contained in:
acanas 2023-09-19 10:28:52 +02:00
parent 95df356512
commit 1735b451dc
23 changed files with 399 additions and 322 deletions

View File

@ -1561,7 +1561,7 @@ int swad__getUsers (struct soap *soap,
API_Set_gSOAP_RuntimeEnv (soap);
Gbl.WebService.Function = API_getUsers;
Gbl.Hierarchy.Node[HieLvl_CRS].Cod = (courseCode > 0) ? (long) courseCode :
-1L;
-1L;
/***** Check web service key *****/
if ((ReturnCode = API_CheckAPIKey (wsKey)) != SOAP_OK)
@ -1642,7 +1642,7 @@ int swad__findUsers (struct soap *soap,
API_Set_gSOAP_RuntimeEnv (soap);
Gbl.WebService.Function = API_findUsers;
Gbl.Hierarchy.Node[HieLvl_CRS].Cod = (courseCode > 0) ? (long) courseCode :
-1L;
-1L;
/***** Check web service key *****/
if ((ReturnCode = API_CheckAPIKey (wsKey)) != SOAP_OK)
@ -2862,7 +2862,7 @@ int swad__getNotifications (struct soap *soap,
Ntf_NotifyEvent_t NotifyEvent;
long EventTime;
char PhotoURL[Cns_MAX_BYTES_WWW + 1];
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
long Cod;
struct For_Forum ForumSelected;
char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
@ -2929,13 +2929,13 @@ int swad__getNotifications (struct soap *soap,
getNotificationsOut->notificationsArray.__ptr[NumNotif].eventTime = EventTime;
/* Get course (row[7]) */
Hie.Crs.Cod = Str_ConvertStrCodToLongCod (row[7]);
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = Str_ConvertStrCodToLongCod (row[7]);
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
/* Get user's code of the user who caused the event (row[3]) */
Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[3]);
if (API_GetSomeUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Hie.Crs.Cod)) // Get some user's data from database
if (API_GetSomeUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Hie[HieLvl_CRS].Cod)) // Get some user's data from database
{
getNotificationsOut->notificationsArray.__ptr[NumNotif].userNickname =
soap_malloc (soap,Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1);
@ -2977,16 +2977,16 @@ int swad__getNotifications (struct soap *soap,
}
/* Get institution (row[4]) */
Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[4]);
Ins_GetInstitDataByCod (&Hie.Ins);
Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[4]);
Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
/* Get center (row[5]) */
Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[5]);
Ctr_GetCenterDataByCod (&Hie.Ctr);
Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[5]);
Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
/* Get degree (row[6]) */
Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[6]);
Deg_GetDegreeDataByCod (&Hie.Deg);
Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[6]);
Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
/* Get message/post/... code (row[8]) */
Cod = Str_ConvertStrCodToLongCod (row[8]);
@ -3005,18 +3005,18 @@ int swad__getNotifications (struct soap *soap,
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Forum,ForumName);
}
else if (Hie.Crs.Cod > 0)
else if (Hie[HieLvl_CRS].Cod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Course,Hie.Crs.ShrtName);
else if (Hie.Deg.Cod > 0)
Txt_Course,Hie[HieLvl_CRS].ShrtName);
else if (Hie[HieLvl_DEG].Cod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Degree,Hie.Deg.ShrtName);
else if (Hie.Ctr.Cod > 0)
Txt_Degree,Hie[HieLvl_DEG].ShrtName);
else if (Hie[HieLvl_CTR].Cod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Center,Hie.Ctr.ShrtName);
else if (Hie.Ins.Cod > 0)
Txt_Center,Hie[HieLvl_CTR].ShrtName);
else if (Hie[HieLvl_INS].Cod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Institution,Hie.Ins.ShrtName);
Txt_Institution,Hie[HieLvl_INS].ShrtName);
else
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"-",
Ntf_MAX_BYTES_NOTIFY_LOCATION);
@ -3029,7 +3029,7 @@ int swad__getNotifications (struct soap *soap,
/* Get summary and content */
ContentStr = NULL;
Ntf_GetNotifSummaryAndContent (SummaryStr,&ContentStr,NotifyEvent,
Cod,Hie.Crs.Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
Cod,Hie[HieLvl_CRS].Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
true);
Length = strlen (SummaryStr);

View File

@ -143,12 +143,12 @@ void Adm_DB_RemUsrAsAdmin (long UsrCod)
/********* Remove administrators of an institution, center or degree *********/
/*****************************************************************************/
void Adm_DB_RemAdmins (HieLvl_Level_t Level)
void Adm_DB_RemAdmins (HieLvl_Level_t Level,long Cod)
{
DB_QueryDELETE ("can not remove administrators",
"DELETE FROM usr_admins"
" WHERE Scope='%s'"
" AND Cod=%ld",
Hie_GetDBStrFromLevel (Level),
Gbl.Hierarchy.Node[Level].Cod);
Cod);
}

View File

@ -41,6 +41,6 @@ bool Adm_DB_CheckIfUsrIsSuperuser (long UsrCod);
void Adm_DB_RemAdmin (long UsrCod,HieLvl_Level_t Level);
void Adm_DB_RemUsrAsAdmin (long UsrCod);
void Adm_DB_RemAdmins (HieLvl_Level_t Level);
void Adm_DB_RemAdmins (HieLvl_Level_t Level,long Cod);
#endif

View File

@ -5408,7 +5408,7 @@ static void Brw_WriteCurrentClipboard (void)
extern const char *Txt_folder;
extern const char *Txt_link;
extern const char *Txt_all_files_inside_the_root_folder;
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
struct GroupData GrpDat;
struct Prj_Project Prj;
struct Usr_Data UsrDat;
@ -5430,131 +5430,131 @@ static void Brw_WriteCurrentClipboard (void)
switch (Gbl.FileBrowser.Clipboard.FileBrowser)
{
case Brw_ADMI_DOC_INS:
Hie.Ins.Cod = Gbl.FileBrowser.Clipboard.Cod;
Ins_GetInstitDataByCod (&Hie.Ins);
Hie[HieLvl_INS].Cod = Gbl.FileBrowser.Clipboard.Cod;
Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>",
Txt_documents_management_area,
Txt_institution,Hie.Ins.ShrtName);
Txt_institution,Hie[HieLvl_INS].ShrtName);
break;
case Brw_ADMI_SHR_INS:
Hie.Ins.Cod = Gbl.FileBrowser.Clipboard.Cod;
Ins_GetInstitDataByCod (&Hie.Ins);
Hie[HieLvl_INS].Cod = Gbl.FileBrowser.Clipboard.Cod;
Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>",
Txt_shared_files_area,
Txt_institution,Hie.Ins.ShrtName);
Txt_institution,Hie[HieLvl_INS].ShrtName);
break;
case Brw_ADMI_DOC_CTR:
Hie.Ctr.Cod = Gbl.FileBrowser.Clipboard.Cod;
Ctr_GetCenterDataByCod (&Hie.Ctr);
Hie[HieLvl_CTR].Cod = Gbl.FileBrowser.Clipboard.Cod;
Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>",
Txt_documents_management_area,
Txt_center,Hie.Ctr.ShrtName);
Txt_center,Hie[HieLvl_CTR].ShrtName);
break;
case Brw_ADMI_SHR_CTR:
Hie.Ctr.Cod = Gbl.FileBrowser.Clipboard.Cod;
Ctr_GetCenterDataByCod (&Hie.Ctr);
Hie[HieLvl_CTR].Cod = Gbl.FileBrowser.Clipboard.Cod;
Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>",
Txt_shared_files_area,
Txt_center,Hie.Ctr.ShrtName);
Txt_center,Hie[HieLvl_CTR].ShrtName);
break;
case Brw_ADMI_DOC_DEG:
Hie.Deg.Cod = Gbl.FileBrowser.Clipboard.Cod;
Deg_GetDegreeDataByCod (&Hie.Deg);
Hie[HieLvl_DEG].Cod = Gbl.FileBrowser.Clipboard.Cod;
Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>",
Txt_documents_management_area,
Txt_degree,Hie.Deg.ShrtName);
Txt_degree,Hie[HieLvl_DEG].ShrtName);
break;
case Brw_ADMI_SHR_DEG:
Hie.Deg.Cod = Gbl.FileBrowser.Clipboard.Cod;
Deg_GetDegreeDataByCod (&Hie.Deg);
Hie[HieLvl_DEG].Cod = Gbl.FileBrowser.Clipboard.Cod;
Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>",
Txt_shared_files_area,
Txt_degree,Hie.Deg.ShrtName);
Txt_degree,Hie[HieLvl_DEG].ShrtName);
break;
case Brw_ADMI_DOC_CRS:
Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>",
Txt_documents_management_area,
Txt_course,Hie.Crs.ShrtName);
Txt_course,Hie[HieLvl_CRS].ShrtName);
break;
case Brw_ADMI_DOC_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetGroupDataByCod (&GrpDat);
Hie.Crs.Cod = GrpDat.CrsCod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = GrpDat.CrsCod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_documents_management_area,
Txt_course,Hie.Crs.ShrtName,
Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_TCH_CRS:
Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>",
Txt_teachers_files_area,
Txt_course,Hie.Crs.ShrtName);
Txt_course,Hie[HieLvl_CRS].ShrtName);
break;
case Brw_ADMI_TCH_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetGroupDataByCod (&GrpDat);
Hie.Crs.Cod = GrpDat.CrsCod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = GrpDat.CrsCod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_teachers_files_area,
Txt_course,Hie.Crs.ShrtName,
Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_SHR_CRS:
Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>",
Txt_shared_files_area,
Txt_course,Hie.Crs.ShrtName);
Txt_course,Hie[HieLvl_CRS].ShrtName);
break;
case Brw_ADMI_SHR_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetGroupDataByCod (&GrpDat);
Hie.Crs.Cod = GrpDat.CrsCod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = GrpDat.CrsCod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_shared_files_area,
Txt_course,Hie.Crs.ShrtName,
Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_ASG_USR:
Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Txt_assignments_area,
Txt_course,Hie.Crs.ShrtName,
Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName);
break;
case Brw_ADMI_WRK_USR:
Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Txt_works_area,
Txt_course,Hie.Crs.ShrtName,
Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName);
break;
case Brw_ADMI_ASG_CRS:
Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
Usr_GetAllUsrDataFromUsrCod (&UsrDat,
@ -5563,13 +5563,13 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Txt_assignments_area,
Txt_course,Hie.Crs.ShrtName,
Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_user[UsrDat.Sex],UsrDat.FullName);
Usr_UsrDataDestructor (&UsrDat);
break;
case Brw_ADMI_WRK_CRS:
Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
Usr_GetAllUsrDataFromUsrCod (&UsrDat,
@ -5578,7 +5578,7 @@ static void Brw_WriteCurrentClipboard (void)
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Txt_works_area,
Txt_course,Hie.Crs.ShrtName,
Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_user[UsrDat.Sex],UsrDat.FullName);
Usr_UsrDataDestructor (&UsrDat);
break;
@ -5587,33 +5587,33 @@ static void Brw_WriteCurrentClipboard (void)
Prj_AllocMemProject (&Prj);
Prj.PrjCod = Gbl.FileBrowser.Clipboard.Cod;
Prj_GetProjectDataByCod (&Prj);
Hie.Crs.Cod = Prj.CrsCod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = Prj.CrsCod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Gbl.FileBrowser.Clipboard.FileBrowser == Brw_ADMI_DOC_PRJ ? Txt_project_documents :
Txt_project_assessment,
Txt_course,Hie.Crs.ShrtName,
Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_project,Prj.Title);
Prj_FreeMemProject (&Prj);
break;
case Brw_ADMI_MRK_CRS:
Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>",
Txt_marks_management_area,
Txt_course,Hie.Crs.ShrtName);
Txt_course,Hie[HieLvl_CRS].ShrtName);
break;
case Brw_ADMI_MRK_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetGroupDataByCod (&GrpDat);
Hie.Crs.Cod = GrpDat.CrsCod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = GrpDat.CrsCod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_marks_management_area,
Txt_course,Hie.Crs.ShrtName,
Txt_course,Hie[HieLvl_CRS].ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break;
case Brw_ADMI_BRF_USR:
@ -5966,7 +5966,7 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
extern const char *Txt_Links_copied;
extern const char *Txt_Folders_copied;
extern const char *Txt_You_can_not_paste_file_or_folder_here;
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
struct GroupData GrpDat;
struct Usr_Data UsrDat;
long PrjCod;
@ -5987,36 +5987,36 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
{
case Brw_ADMI_DOC_INS:
case Brw_ADMI_SHR_INS:
Hie.Ins.Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Ins_GetInstitDataByCod (&Hie.Ins))
Hie[HieLvl_INS].Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Ins_GetInstitDataByCod (&Hie[HieLvl_INS]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
Cfg_PATH_INS_PRIVATE,
(unsigned) (Hie.Ins.Cod % 100),
(unsigned) Hie.Ins.Cod,
(unsigned) (Hie[HieLvl_INS].Cod % 100),
(unsigned) Hie[HieLvl_INS].Cod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else
Err_WrongCopySrcExit ();
break;
case Brw_ADMI_DOC_CTR:
case Brw_ADMI_SHR_CTR:
Hie.Ctr.Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Ctr_GetCenterDataByCod (&Hie.Ctr))
Hie[HieLvl_CTR].Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
Cfg_PATH_CTR_PRIVATE,
(unsigned) (Hie.Ctr.Cod % 100),
(unsigned) Hie.Ctr.Cod,
(unsigned) (Hie[HieLvl_CTR].Cod % 100),
(unsigned) Hie[HieLvl_CTR].Cod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else
Err_WrongCopySrcExit ();
break;
case Brw_ADMI_DOC_DEG:
case Brw_ADMI_SHR_DEG:
Hie.Deg.Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Deg_GetDegreeDataByCod (&Hie.Deg))
Hie[HieLvl_DEG].Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
Cfg_PATH_DEG_PRIVATE,
(unsigned) (Hie.Deg.Cod % 100),
(unsigned) Hie.Deg.Cod,
(unsigned) (Hie[HieLvl_DEG].Cod % 100),
(unsigned) Hie[HieLvl_DEG].Cod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else
Err_WrongCopySrcExit ();
@ -6025,10 +6025,10 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
case Brw_ADMI_TCH_CRS:
case Brw_ADMI_SHR_CRS:
case Brw_ADMI_MRK_CRS:
Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetCourseDataByCod (&Hie.Crs))
Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Hie.Crs.Cod,
Cfg_PATH_CRS_PRIVATE,Hie[HieLvl_CRS].Cod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else
Err_WrongCopySrcExit ();
@ -6039,10 +6039,10 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
case Brw_ADMI_MRK_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetGroupDataByCod (&GrpDat);
Hie.Crs.Cod = GrpDat.CrsCod;
if (Crs_GetCourseDataByCod (&Hie.Crs))
Hie[HieLvl_CRS].Cod = GrpDat.CrsCod;
if (Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Hie.Crs.Cod,Cfg_FOLDER_GRP,
Cfg_PATH_CRS_PRIVATE,Hie[HieLvl_CRS].Cod,Cfg_FOLDER_GRP,
GrpDat.GrpCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else
@ -6050,8 +6050,8 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
break;
case Brw_ADMI_ASG_CRS:
case Brw_ADMI_WRK_CRS:
Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetCourseDataByCod (&Hie.Crs))
Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
{
Usr_UsrDataConstructor (&UsrDat);
if (Usr_DB_ChkIfUsrCodExists (Gbl.FileBrowser.Clipboard.WorksUsrCod))
@ -6061,7 +6061,7 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS); // Check that user exists
snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Hie.Crs.Cod,Cfg_FOLDER_USR,
Cfg_PATH_CRS_PRIVATE,Hie[HieLvl_CRS].Cod,Cfg_FOLDER_USR,
(unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100),
Gbl.FileBrowser.Clipboard.WorksUsrCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
@ -6072,10 +6072,10 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
break;
case Brw_ADMI_ASG_USR:
case Brw_ADMI_WRK_USR:
Hie.Crs.Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetCourseDataByCod (&Hie.Crs))
Hie[HieLvl_CRS].Cod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Hie.Crs.Cod,Cfg_FOLDER_USR,
Cfg_PATH_CRS_PRIVATE,Hie[HieLvl_CRS].Cod,Cfg_FOLDER_USR,
(unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100),
Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
@ -6085,10 +6085,10 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
case Brw_ADMI_DOC_PRJ:
case Brw_ADMI_ASS_PRJ:
PrjCod = Gbl.FileBrowser.Clipboard.Cod;
Hie.Crs.Cod = Prj_DB_GetCrsOfPrj (PrjCod);
if (Crs_GetCourseDataByCod (&Hie.Crs))
Hie[HieLvl_CRS].Cod = Prj_DB_GetCrsOfPrj (PrjCod);
if (Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Hie.Crs.Cod,Cfg_FOLDER_PRJ,
Cfg_PATH_CRS_PRIVATE,Hie[HieLvl_CRS].Cod,Cfg_FOLDER_PRJ,
(unsigned) (PrjCod % 100),
PrjCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
@ -9542,7 +9542,10 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (InsShortName),
"class=\"LT BT_LINK\"");
Str_FreeGoToTitle ();
Lgo_DrawLogo (HieLvl_INS,InsCod,InsShortName,20,"BT_LINK LT");
Lgo_DrawLogo (HieLvl_INS,
InsCod,
InsShortName,
20,"BT_LINK LT");
HTM_TxtF ("&nbsp;%s",InsShortName);
HTM_BUTTON_End ();
Frm_EndForm ();
@ -9559,7 +9562,10 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (CtrShortName),
"class=\"LT BT_LINK\"");
Str_FreeGoToTitle ();
Lgo_DrawLogo (HieLvl_CTR,CtrCod,CtrShortName,20,"LT");
Lgo_DrawLogo (HieLvl_CTR,
CtrCod,
CtrShortName,
20,"LT");
HTM_TxtF ("&nbsp;%s",CtrShortName);
HTM_BUTTON_End ();
Frm_EndForm ();
@ -9576,7 +9582,10 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (DegShortName),
"class=\"LT BT_LINK\"");
Str_FreeGoToTitle ();
Lgo_DrawLogo (HieLvl_DEG,DegCod,DegShortName,20,"LT");
Lgo_DrawLogo (HieLvl_DEG,
DegCod,
DegShortName,
20,"LT");
HTM_TxtF ("&nbsp;%s",DegShortName);
HTM_BUTTON_End ();
Frm_EndForm ();

View File

@ -956,7 +956,10 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams,
if (TypeViewCallForExam == Cfe_NORMAL_VIEW)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"EXAM_TIT_%s\"",
Ins.WWW,The_GetSuffix ());
Lgo_DrawLogo (HieLvl_INS,Ins.Cod,Ins.FullName,64,NULL);
Lgo_DrawLogo (HieLvl_INS,
Ins.Cod,
Ins.FullName,
64,NULL);
HTM_BR ();
HTM_Txt (Ins.FullName);
if (TypeViewCallForExam == Cfe_NORMAL_VIEW)
@ -1609,20 +1612,20 @@ static void Cfe_GetNotifContentCallForExam (const struct Cfe_CallsForExams *Call
extern const char *Txt_CALL_FOR_EXAM_Material_allowed;
extern const char *Txt_CALL_FOR_EXAM_Other_information;
extern const char *Txt_hours_ABBREVIATION;
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
char StrExamDate[Cns_MAX_BYTES_DATE + 1];
/***** Get data of course *****/
Hie.Crs.Cod = CallsForExams->CallForExam.CrsCod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = CallsForExams->CallForExam.CrsCod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
/***** Get data of degree *****/
Hie.Deg.Cod = Hie.Crs.PrtCod;
Deg_GetDegreeDataByCod (&Hie.Deg);
Hie[HieLvl_DEG].Cod = Hie[HieLvl_CRS].PrtCod;
Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
/***** Get data of institution *****/
Hie.Ins.Cod = Deg_DB_GetInsCodOfDegreeByCod (Hie.Deg.Cod);
Ins_GetInstitDataByCod (&Hie.Ins);
Hie[HieLvl_INS].Cod = Deg_DB_GetInsCodOfDegreeByCod (Hie[HieLvl_DEG].Cod);
Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
/***** Convert struct date to a date string *****/
Dat_ConvDateToDateStr (&CallsForExams->CallForExam.ExamDate,StrExamDate);
@ -1643,8 +1646,8 @@ static void Cfe_GetNotifContentCallForExam (const struct Cfe_CallsForExams *Call
"%s: %s<br />"
"%s: %s<br />"
"%s: %s",
Txt_Institution,Hie.Ins.FullName,
Txt_Degree,Hie.Deg.FullName,
Txt_Institution,Hie[HieLvl_INS].FullName,
Txt_Degree,Hie[HieLvl_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,

View File

@ -201,7 +201,10 @@ void Ctr_DrawCenterLogoAndNameWithLink (struct Hie_Node *Ctr,Act_Action_t Action
Str_FreeGoToTitle ();
/***** Center logo and name *****/
Lgo_DrawLogo (HieLvl_CTR,Ctr->Cod,Ctr->ShrtName,16,ClassLogo);
Lgo_DrawLogo (HieLvl_CTR,
Ctr->Cod,
Ctr->ShrtName,
16,ClassLogo);
HTM_TxtF ("&nbsp;%s",Ctr->FullName);
/***** End link *****/
@ -797,7 +800,10 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
/* Center logo */
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ctr->FullName);
Lgo_DrawLogo (HieLvl_CTR,Ctr->Cod,Ctr->ShrtName,20,NULL);
Lgo_DrawLogo (HieLvl_CTR,
Ctr->Cod,
Ctr->ShrtName,
20,NULL);
HTM_TD_End ();
/* Place */
@ -1295,7 +1301,10 @@ static void Ctr_PutFormToCreateCenter (const struct Plc_Places *Places)
/***** Center logo *****/
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ctr_EditingCtr->FullName);
Lgo_DrawLogo (HieLvl_CTR,-1L,"",20,NULL);
Lgo_DrawLogo (HieLvl_CTR,
-1L,
"",
20,NULL);
HTM_TD_End ();
/***** Place *****/

View File

@ -632,10 +632,11 @@ TODO: Francisco Javier Fern
Me sale este error, no si por no recordar yo la sintaxis apropiada para mandar a varios destinatarios. ¿No era así?
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
*/
#define Log_PLATFORM_VERSION "SWAD 23.9.1 (2023-09-19)"
#define Log_PLATFORM_VERSION "SWAD 23.9.2 (2023-09-19)"
#define CSS_FILE "swad22.120.4.css"
#define JS_FILE "swad22.49.js"
/*
Version 23.9.2: Sep 19, 2023 Code refactoring in hierarchy. (337600 lines)
Version 23.9.1: Sep 19, 2023 Code refactoring in hierarchy and admins. (337521 lines)
Version 23.9: Sep 19, 2023 Code refactoring in hierarchy. (337589 lines)
Version 23.8: Sep 18, 2023 Code refactoring in hierarchy. (337625 lines)

View File

@ -187,7 +187,10 @@ void Cht_ShowListOfAvailableChatRooms (void)
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),"%s %s",
Txt_Degree,Deg.ShrtName);
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,ThisRoomFullName,1,IsLastItemInLevel);
Lgo_DrawLogo (HieLvl_DEG,Deg.Cod,Deg.ShrtName,16,NULL);
Lgo_DrawLogo (HieLvl_DEG,
Deg.Cod,
Deg.ShrtName,
16,NULL);
Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName);
/* Get my courses in this degree from database */

View File

@ -153,7 +153,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
extern const char *Hlp_PROFILE_Courses;
extern const char *Txt_My_courses;
extern const char *Txt_System;
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
bool IsLastItemInLevel[1 + 6];
bool Highlight; // Highlight because degree, course, etc. is selected
MYSQL_RES *mysql_resCty;
@ -208,24 +208,24 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resCty);
/***** Get data of this institution *****/
Hie.Cty.Cod = Str_ConvertStrCodToLongCod (row[0]);
if (!Cty_GetBasicCountryDataByCod (&Hie.Cty))
Hie[HieLvl_CTY].Cod = Str_ConvertStrCodToLongCod (row[0]);
if (!Cty_GetBasicCountryDataByCod (&Hie[HieLvl_CTY]))
Err_WrongCountrExit ();
/***** Write link to country *****/
Highlight = (Gbl.Hierarchy.Node[HieLvl_INS].Cod <= 0 &&
Gbl.Hierarchy.Node[HieLvl_CTY].Cod == Hie.Cty.Cod);
Gbl.Hierarchy.Node[HieLvl_CTY].Cod == Hie[HieLvl_CTY].Cod);
HTM_LI_Begin (Highlight ? "class=\"BG_HIGHLIGHT\"" :
NULL);
IsLastItemInLevel[2] = (NumCty == NumCtys - 1);
Lay_IndentDependingOnLevel (2,IsLastItemInLevel);
Frm_BeginForm (ActMyCrs);
ParCod_PutPar (ParCod_Cty,Hie.Cty.Cod);
ParCod_PutPar (ParCod_Cty,Hie[HieLvl_CTY].Cod);
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeCtyInf),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
Cty_DrawCountryMap (&Hie.Cty,"ICO16x16");
HTM_TxtF ("&nbsp;%s",Hie.Cty.FullName);
Cty_DrawCountryMap (&Hie[HieLvl_CTY],"ICO16x16");
HTM_TxtF ("&nbsp;%s",Hie[HieLvl_CTY].FullName);
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_LI_End ();
@ -233,7 +233,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get my institutions in this country *****/
NumInss = Ins_DB_GetInssFromUsr (&mysql_resIns,
Gbl.Usrs.Me.UsrDat.UsrCod,
Hie.Cty.Cod);
Hie[HieLvl_CTY].Cod);
for (NumIns = 0;
NumIns < NumInss;
NumIns++)
@ -242,24 +242,27 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resIns);
/***** Get data of this institution *****/
Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[0]);
if (!Ins_GetInstitDataByCod (&Hie.Ins))
Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[0]);
if (!Ins_GetInstitDataByCod (&Hie[HieLvl_INS]))
Err_WrongInstitExit ();
/***** Write link to institution *****/
Highlight = (Gbl.Hierarchy.Node[HieLvl_CTR].Cod <= 0 &&
Gbl.Hierarchy.Node[HieLvl_INS].Cod == Hie.Ins.Cod);
Gbl.Hierarchy.Node[HieLvl_INS].Cod == Hie[HieLvl_INS].Cod);
HTM_LI_Begin (Highlight ? "class=\"BG_HIGHLIGHT\"" :
NULL);
IsLastItemInLevel[3] = (NumIns == NumInss - 1);
Lay_IndentDependingOnLevel (3,IsLastItemInLevel);
Frm_BeginForm (ActMyCrs);
ParCod_PutPar (ParCod_Ins,Hie.Ins.Cod);
ParCod_PutPar (ParCod_Ins,Hie[HieLvl_INS].Cod);
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeInsInf),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
Lgo_DrawLogo (HieLvl_INS,Hie.Ins.Cod,Hie.Ins.ShrtName,16,NULL);
HTM_TxtF ("&nbsp;%s",Hie.Ins.ShrtName);
Lgo_DrawLogo (HieLvl_INS,
Hie[HieLvl_INS].Cod,
Hie[HieLvl_INS].ShrtName,
16,NULL);
HTM_TxtF ("&nbsp;%s",Hie[HieLvl_INS].ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_LI_End ();
@ -267,7 +270,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get my centers in this institution *****/
NumCtrs = Ctr_DB_GetCtrsFromUsr (&mysql_resCtr,
Gbl.Usrs.Me.UsrDat.UsrCod,
Hie.Ins.Cod);
Hie[HieLvl_INS].Cod);
for (NumCtr = 0;
NumCtr < NumCtrs;
NumCtr++)
@ -276,24 +279,27 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resCtr);
/***** Get data of this center *****/
Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[0]);
if (!Ctr_GetCenterDataByCod (&Hie.Ctr))
Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[0]);
if (!Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]))
Err_WrongCenterExit ();
/***** Write link to center *****/
Highlight = (Gbl.Hierarchy.Level == HieLvl_CTR &&
Gbl.Hierarchy.Node[HieLvl_CTR].Cod == Hie.Ctr.Cod);
Gbl.Hierarchy.Node[HieLvl_CTR].Cod == Hie[HieLvl_CTR].Cod);
HTM_LI_Begin (Highlight ? "class=\"BG_HIGHLIGHT\"" :
NULL);
IsLastItemInLevel[4] = (NumCtr == NumCtrs - 1);
Lay_IndentDependingOnLevel (4,IsLastItemInLevel);
Frm_BeginForm (ActMyCrs);
ParCod_PutPar (ParCod_Ctr,Hie.Ctr.Cod);
ParCod_PutPar (ParCod_Ctr,Hie[HieLvl_CTR].Cod);
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeCtrInf),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
Lgo_DrawLogo (HieLvl_CTR,Hie.Ctr.Cod,Hie.Ctr.ShrtName,16,NULL);
HTM_TxtF ("&nbsp;%s",Hie.Ctr.ShrtName);
Lgo_DrawLogo (HieLvl_CTR,
Hie[HieLvl_CTR].Cod,
Hie[HieLvl_CTR].ShrtName,
16,NULL);
HTM_TxtF ("&nbsp;%s",Hie[HieLvl_CTR].ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_LI_End ();
@ -301,7 +307,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get my degrees in this center *****/
NumDegs = Deg_DB_GetDegsFromUsr (&mysql_resDeg,
Gbl.Usrs.Me.UsrDat.UsrCod,
Hie.Ctr.Cod);
Hie[HieLvl_CTR].Cod);
for (NumDeg = 0;
NumDeg < NumDegs;
NumDeg++)
@ -310,24 +316,27 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resDeg);
/***** Get data of this degree *****/
Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[0]);
if (!Deg_GetDegreeDataByCod (&Hie.Deg))
Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[0]);
if (!Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]))
Err_WrongDegreeExit ();
/***** Write link to degree *****/
Highlight = (Gbl.Hierarchy.Level == HieLvl_DEG &&
Gbl.Hierarchy.Node[HieLvl_DEG].Cod == Hie.Deg.Cod);
Gbl.Hierarchy.Node[HieLvl_DEG].Cod == Hie[HieLvl_DEG].Cod);
HTM_LI_Begin (Highlight ? "class=\"BG_HIGHLIGHT\"" :
NULL);
IsLastItemInLevel[5] = (NumDeg == NumDegs - 1);
Lay_IndentDependingOnLevel (5,IsLastItemInLevel);
Frm_BeginForm (ActMyCrs);
ParCod_PutPar (ParCod_Deg,Hie.Deg.Cod);
ParCod_PutPar (ParCod_Deg,Hie[HieLvl_DEG].Cod);
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeDegInf),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
Lgo_DrawLogo (HieLvl_DEG,Hie.Deg.Cod,Hie.Deg.ShrtName,16,NULL);
HTM_TxtF ("&nbsp;%s",Hie.Deg.ShrtName);
Lgo_DrawLogo (HieLvl_DEG,
Hie[HieLvl_DEG].Cod,
Hie[HieLvl_DEG].ShrtName,
16,NULL);
HTM_TxtF ("&nbsp;%s",Hie[HieLvl_DEG].ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
HTM_LI_End ();
@ -335,7 +344,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get my courses in this degree *****/
NumCrss = Crs_DB_GetCrssFromUsr (&mysql_resCrs,
Gbl.Usrs.Me.UsrDat.UsrCod,
Hie.Deg.Cod);
Hie[HieLvl_DEG].Cod);
for (NumCrs = 0;
NumCrs < NumCrss;
NumCrs++)
@ -344,30 +353,30 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resCrs);
/***** Get data of this course *****/
Hie.Crs.Cod = Str_ConvertStrCodToLongCod (row[0]);
if (!Crs_GetCourseDataByCod (&Hie.Crs))
Hie[HieLvl_CRS].Cod = Str_ConvertStrCodToLongCod (row[0]);
if (!Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
Err_WrongCourseExit ();
/***** Write link to course *****/
Highlight = (Gbl.Hierarchy.Level == HieLvl_CRS &&
Gbl.Hierarchy.Node[HieLvl_CRS].Cod == Hie.Crs.Cod);
Gbl.Hierarchy.Node[HieLvl_CRS].Cod == Hie[HieLvl_CRS].Cod);
HTM_LI_Begin (Highlight ? "class=\"BG_HIGHLIGHT\"" :
NULL);
IsLastItemInLevel[6] = (NumCrs == NumCrss - 1);
Lay_IndentDependingOnLevel (6,IsLastItemInLevel);
Frm_BeginForm (ActMyCrs);
ParCod_PutPar (ParCod_Crs,Hie.Crs.Cod);
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Hie.Crs.ShrtName),
ParCod_PutPar (ParCod_Crs,Hie[HieLvl_CRS].Cod);
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Hie[HieLvl_CRS].ShrtName),
"class=\"BT_LINK FORM_IN_%s\"",
The_GetSuffix ());
Str_FreeGoToTitle ();
Ico_PutIcon ("chalkboard-teacher.svg",Ico_BLACK,Hie.Crs.FullName,"ICO16x16");
HTM_TxtF ("&nbsp;%s",Hie.Crs.ShrtName);
Ico_PutIcon ("chalkboard-teacher.svg",Ico_BLACK,Hie[HieLvl_CRS].FullName,"ICO16x16");
HTM_TxtF ("&nbsp;%s",Hie[HieLvl_CRS].ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
/***** Put link to register students *****/
Enr_PutButtonInlineToRegisterStds (Hie.Crs.Cod);
Enr_PutButtonInlineToRegisterStds (Hie[HieLvl_CRS].Cod);
HTM_LI_End ();
}
@ -2419,7 +2428,10 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (row[2]),
"class=\"LT BT_LINK\"");
Str_FreeGoToTitle ();
Lgo_DrawLogo (HieLvl_DEG,Deg.Cod,Deg.ShrtName,20,"CT");
Lgo_DrawLogo (HieLvl_DEG,
Deg.Cod,
Deg.ShrtName,
20,"CT");
HTM_TxtF ("&nbsp;%s&nbsp;(%s)",row[2],row[6]);
HTM_BUTTON_End ();
Frm_EndForm ();

View File

@ -203,7 +203,10 @@ void Deg_DrawDegreeLogoAndNameWithLink (struct Hie_Node *Deg,Act_Action_t Action
Str_FreeGoToTitle ();
/***** Degree logo and name *****/
Lgo_DrawLogo (HieLvl_DEG,Deg->Cod,Deg->ShrtName,16,ClassLogo);
Lgo_DrawLogo (HieLvl_DEG,
Deg->Cod,
Deg->ShrtName,
16,ClassLogo);
HTM_TxtF ("&nbsp;%s",Deg->FullName);
/***** End link *****/
@ -367,7 +370,10 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
/* Degree logo */
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",DegInLst->FullName);
Lgo_DrawLogo (HieLvl_DEG,DegInLst->Cod,DegInLst->ShrtName,20,NULL);
Lgo_DrawLogo (HieLvl_DEG,
DegInLst->Cod,
DegInLst->ShrtName
,20,NULL);
HTM_TD_End ();
/* Degree short name */
@ -546,7 +552,10 @@ static void Deg_PutFormToCreateDegree (const struct DegTyp_DegTypes *DegTypes)
/***** Degree logo *****/
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Deg_EditingDeg->FullName);
Lgo_DrawLogo (HieLvl_DEG,-1L,"",20,NULL);
Lgo_DrawLogo (HieLvl_DEG,
-1L,
"",
20,NULL);
HTM_TD_End ();
/***** Degree short name *****/

View File

@ -1775,15 +1775,24 @@ static void For_WriteLinkToForum (const struct For_Forums *Forums,
break;
case For_FORUM_INSTIT_USRS:
case For_FORUM_INSTIT_TCHS:
Lgo_DrawLogo (HieLvl_INS,Forum->HieCod,ForumName,16,NULL);
Lgo_DrawLogo (HieLvl_INS,
Forum->HieCod,
ForumName,
16,NULL);
break;
case For_FORUM_CENTER_USRS:
case For_FORUM_CENTER_TCHS:
Lgo_DrawLogo (HieLvl_CTR,Forum->HieCod,ForumName,16,NULL);
Lgo_DrawLogo (HieLvl_CTR,
Forum->HieCod,
ForumName,
16,NULL);
break;
case For_FORUM_DEGREE_USRS:
case For_FORUM_DEGREE_TCHS:
Lgo_DrawLogo (HieLvl_DEG,Forum->HieCod,ForumName,16,NULL);
Lgo_DrawLogo (HieLvl_DEG,
Forum->HieCod,
ForumName,
16,NULL);
break;
case For_FORUM_COURSE_USRS:
case For_FORUM_COURSE_TCHS:
@ -1823,7 +1832,7 @@ void For_SetForumName (const struct For_Forum *Forum,
extern const char *Txt_only_teachers;
extern const char *Txt_only_teachers_NO_HTML[1 + Lan_NUM_LANGUAGES];
extern const char *Txt_Unknown_FORUM;
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
switch (Forum->Type)
{
@ -1849,62 +1858,62 @@ void For_SetForumName (const struct For_Forum *Forum,
Txt_only_teachers_NO_HTML[Language]);
break;
case For_FORUM_INSTIT_USRS:
Hie.Ins.Cod = Forum->HieCod;
if (!Ins_GetInstitDataByCod (&Hie.Ins))
Hie[HieLvl_INS].Cod = Forum->HieCod;
if (!Ins_GetInstitDataByCod (&Hie[HieLvl_INS]))
Err_WrongInstitExit ();
Str_Copy (ForumName,Hie.Ins.ShrtName,For_MAX_BYTES_FORUM_NAME);
Str_Copy (ForumName,Hie[HieLvl_INS].ShrtName,For_MAX_BYTES_FORUM_NAME);
break;
case For_FORUM_INSTIT_TCHS:
Hie.Ins.Cod = Forum->HieCod;
if (!Ins_GetInstitDataByCod (&Hie.Ins))
Hie[HieLvl_INS].Cod = Forum->HieCod;
if (!Ins_GetInstitDataByCod (&Hie[HieLvl_INS]))
Err_WrongInstitExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
Hie.Ins.ShrtName,
Hie[HieLvl_INS].ShrtName,
UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]);
break;
case For_FORUM_CENTER_USRS:
Hie.Ctr.Cod = Forum->HieCod;
if (!Ctr_GetCenterDataByCod (&Hie.Ctr))
Hie[HieLvl_CTR].Cod = Forum->HieCod;
if (!Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]))
Err_WrongCenterExit ();
Str_Copy (ForumName,Hie.Ctr.ShrtName,For_MAX_BYTES_FORUM_NAME);
Str_Copy (ForumName,Hie[HieLvl_CTR].ShrtName,For_MAX_BYTES_FORUM_NAME);
break;
case For_FORUM_CENTER_TCHS:
Hie.Ctr.Cod = Forum->HieCod;
if (!Ctr_GetCenterDataByCod (&Hie.Ctr))
Hie[HieLvl_CTR].Cod = Forum->HieCod;
if (!Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]))
Err_WrongCenterExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
Hie.Ctr.ShrtName,
Hie[HieLvl_CTR].ShrtName,
UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]);
break;
case For_FORUM_DEGREE_USRS:
Hie.Deg.Cod = Forum->HieCod;
if (!Deg_GetDegreeDataByCod (&Hie.Deg))
Hie[HieLvl_DEG].Cod = Forum->HieCod;
if (!Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]))
Err_WrongDegreeExit ();
Str_Copy (ForumName,Hie.Deg.ShrtName,For_MAX_BYTES_FORUM_NAME);
Str_Copy (ForumName,Hie[HieLvl_DEG].ShrtName,For_MAX_BYTES_FORUM_NAME);
break;
case For_FORUM_DEGREE_TCHS:
Hie.Deg.Cod = Forum->HieCod;
if (!Deg_GetDegreeDataByCod (&Hie.Deg))
Hie[HieLvl_DEG].Cod = Forum->HieCod;
if (!Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]))
Err_WrongDegreeExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
Hie.Deg.ShrtName,
Hie[HieLvl_DEG].ShrtName,
UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]);
break;
case For_FORUM_COURSE_USRS:
Hie.Crs.Cod = Forum->HieCod;
if (!Crs_GetCourseDataByCod (&Hie.Crs))
Hie[HieLvl_CRS].Cod = Forum->HieCod;
if (!Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
Err_WrongCourseExit ();
Str_Copy (ForumName,Hie.Crs.ShrtName,For_MAX_BYTES_FORUM_NAME);
Str_Copy (ForumName,Hie[HieLvl_CRS].ShrtName,For_MAX_BYTES_FORUM_NAME);
break;
case For_FORUM_COURSE_TCHS:
Hie.Crs.Cod = Forum->HieCod;
if (!Crs_GetCourseDataByCod (&Hie.Crs))
Hie[HieLvl_CRS].Cod = Forum->HieCod;
if (!Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]))
Err_WrongCourseExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
Hie.Crs.ShrtName,
Hie[HieLvl_CRS].ShrtName,
UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]);
break;

View File

@ -508,7 +508,8 @@ static void Hie_DrawLogo (const char *ShrtText)
default:
Lgo_DrawLogo (LogoScope[Gbl.Hierarchy.Level],
*LogoCode[Gbl.Hierarchy.Level],
ShrtText,40,"TOP_LOGO");
ShrtText,
40,"TOP_LOGO");
break;
}
}
@ -676,7 +677,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
MYSQL_ROW row;
unsigned NumRow;
unsigned NumRows;
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
/***** Get institutions, centers, degrees admin by user from database *****/
NumRows = Hie_DB_GetInsCtrDegAdminBy (&mysql_res,UsrCod);
@ -713,33 +714,33 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
HTM_TxtF ("&nbsp;%s",Txt_all_degrees);
break;
case HieLvl_INS: // Institution
if ((Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
if ((Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
{
/* Get data of institution */
Ins_GetInstitDataByCod (&Hie.Ins);
Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
/* Write institution logo and name */
Ins_DrawInstitLogoAndNameWithLink (&Hie.Ins,ActSeeInsInf,"LT");
Ins_DrawInstitLogoAndNameWithLink (&Hie[HieLvl_INS],ActSeeInsInf,"LT");
}
break;
case HieLvl_CTR: // Center
if ((Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
if ((Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
{
/* Get data of center */
Ctr_GetCenterDataByCod (&Hie.Ctr);
Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
/* Write center logo and name */
Ctr_DrawCenterLogoAndNameWithLink (&Hie.Ctr,ActSeeCtrInf,"LT");
Ctr_DrawCenterLogoAndNameWithLink (&Hie[HieLvl_CTR],ActSeeCtrInf,"LT");
}
break;
case HieLvl_DEG: // Degree
if ((Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
if ((Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[1])) > 0)
{
/* Get data of degree */
Deg_GetDegreeDataByCod (&Hie.Deg);
Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
/* Write degree logo and name */
Deg_DrawDegreeLogoAndNameWithLink (&Hie.Deg,ActSeeDegInf,"LT");
Deg_DrawDegreeLogoAndNameWithLink (&Hie[HieLvl_DEG],ActSeeDegInf,"LT");
}
break;
default: // There are no administrators in other scopes

View File

@ -33,19 +33,6 @@
#include "swad_degree.h"
#include "swad_institution.h"
/*****************************************************************************/
/******************************* Public types ********************************/
/*****************************************************************************/
struct Hie_Hierarchy
{
struct Hie_Node Cty;
struct Hie_Node Ins;
struct Hie_Node Ctr;
struct Hie_Node Deg;
struct Hie_Node Crs;
};
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/

View File

@ -67,7 +67,10 @@ void HieCfg_Title (bool PutLink,
LogoWWW,LogoFullName,The_GetSuffix ());
/* Logo and name */
Lgo_DrawLogo (LogoScope,LogoCod,LogoShrtName,64,NULL);
Lgo_DrawLogo (LogoScope,
LogoCod,
LogoShrtName,
64,NULL);
HTM_BR ();
HTM_Txt (TextFullName);

View File

@ -215,7 +215,10 @@ void Ins_DrawInstitutionLogoWithLink (struct Hie_Node *Ins,unsigned Size)
ParCod_PutPar (ParCod_Ins,Ins->Cod);
HTM_BUTTON_Submit_Begin (Ins->FullName,"class=\"BT_LINK\"");
}
Lgo_DrawLogo (HieLvl_INS,Ins->Cod,Ins->FullName,Size,NULL);
Lgo_DrawLogo (HieLvl_INS,
Ins->Cod,
Ins->FullName,
Size,NULL);
if (PutLink)
{
HTM_BUTTON_End ();
@ -240,7 +243,10 @@ void Ins_DrawInstitLogoAndNameWithLink (struct Hie_Node *Ins,Act_Action_t Action
Str_FreeGoToTitle ();
/***** Institution logo and name *****/
Lgo_DrawLogo (HieLvl_INS,Ins->Cod,Ins->ShrtName,16,ClassLogo);
Lgo_DrawLogo (HieLvl_INS,
Ins->Cod,
Ins->ShrtName,
16,ClassLogo);
HTM_TxtF ("&nbsp;%s",Ins->FullName);
/***** End link *****/
@ -935,7 +941,10 @@ static void Ins_ListInstitutionsForEdition (void)
/* Institution logo */
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ins->FullName);
Lgo_DrawLogo (HieLvl_INS,Ins->Cod,Ins->ShrtName,20,NULL);
Lgo_DrawLogo (HieLvl_INS,
Ins->Cod,
Ins->ShrtName,
20,NULL);
HTM_TD_End ();
/* Institution short name */
@ -1380,7 +1389,10 @@ static void Ins_PutFormToCreateInstitution (void)
/***** Institution logo *****/
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ins_EditingIns->FullName);
Lgo_DrawLogo (HieLvl_INS,-1L,"",20,NULL);
Lgo_DrawLogo (HieLvl_INS,
-1L,
"",
20,NULL);
HTM_TD_End ();
/***** Institution short name *****/
@ -2253,7 +2265,9 @@ static void Ins_ShowInss (MYSQL_RES **mysql_res,unsigned NumInss,
"class=\"LM BT_LINK\"");
if (Gbl.Usrs.Listing.WithPhotos)
{
Lgo_DrawLogo (HieLvl_INS,Ins.Cod,Ins.ShrtName,
Lgo_DrawLogo (HieLvl_INS,
Ins.Cod,
Ins.ShrtName,
40,NULL);
HTM_NBSP ();
}

View File

@ -1466,19 +1466,19 @@ static void Lay_WriteFootFromHTMLFile (void)
void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
long InsCod,long DegCod,long CrsCod)
{
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
/***** Get data of institution *****/
Hie.Ins.Cod = InsCod;
Ins_GetInstitDataByCod (&Hie.Ins);
Hie[HieLvl_INS].Cod = InsCod;
Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
/***** Get data of degree *****/
Hie.Deg.Cod = DegCod;
Deg_GetDegreeDataByCod (&Hie.Deg);
Hie[HieLvl_DEG].Cod = DegCod;
Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
/***** Get data of course *****/
Hie.Crs.Cod = CrsCod;
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = CrsCod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
/***** Begin table *****/
HTM_TABLE_BeginWidePadding (10);
@ -1490,8 +1490,11 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
if (InsCod > 0)
{
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\"",Hie.Ins.WWW);
Lgo_DrawLogo (HieLvl_INS,Hie.Ins.Cod,Hie.Ins.ShrtName,40,NULL);
HTM_A_Begin ("href=\"%s\" target=\"_blank\"",Hie[HieLvl_INS].WWW);
Lgo_DrawLogo (HieLvl_INS,
Hie[HieLvl_INS].Cod,
Hie[HieLvl_INS].ShrtName,
40,NULL);
if (!PrintView)
HTM_A_End ();
}
@ -1505,27 +1508,27 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\""
" class=\"CLASSPHOTO_TITLE CLASSPHOTO_%s\"",
Hie.Ins.WWW,The_GetSuffix ());
HTM_Txt (Hie.Ins.FullName);
Hie[HieLvl_INS].WWW,The_GetSuffix ());
HTM_Txt (Hie[HieLvl_INS].FullName);
if (!PrintView)
HTM_A_End ();
}
if (DegCod > 0)
{
if (Hie.Ins.Cod > 0)
if (Hie[HieLvl_INS].Cod > 0)
HTM_Txt (" - ");
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\""
" class=\"CLASSPHOTO_TITLE CLASSPHOTO_%s\"",
Hie.Deg.WWW,The_GetSuffix ());
HTM_Txt (Hie.Deg.FullName);
Hie[HieLvl_DEG].WWW,The_GetSuffix ());
HTM_Txt (Hie[HieLvl_DEG].FullName);
if (!PrintView)
HTM_A_End ();
}
HTM_BR ();
if (CrsCod > 0)
{
HTM_Txt (Hie.Crs.FullName);
HTM_Txt (Hie[HieLvl_CRS].FullName);
if (DrawingClassPhoto && !Gbl.Usrs.ClassPhoto.AllGroups)
{
HTM_BR ();
@ -1541,8 +1544,11 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\""
" class=\"CLASSPHOTO_TITLE CLASSPHOTO_%s\"",
Hie.Deg.WWW,The_GetSuffix ());
Lgo_DrawLogo (HieLvl_DEG,Hie.Deg.Cod,Hie.Deg.ShrtName,40,NULL);
Hie[HieLvl_DEG].WWW,The_GetSuffix ());
Lgo_DrawLogo (HieLvl_DEG,
Hie[HieLvl_DEG].Cod,
Hie[HieLvl_DEG].ShrtName,
40,NULL);
if (!PrintView)
HTM_A_End ();
}

View File

@ -204,7 +204,7 @@ void Log_GetAndShowLastClicks (void)
Act_Action_t Action;
const char *ClassRow;
time_t TimeDiff;
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
/***** Get last clicks from database *****/
NumClicks = Log_DB_GetLastClicks (&mysql_res);
@ -247,19 +247,19 @@ void Log_GetAndShowLastClicks (void)
TimeDiff = (time_t) 0;
/* Get country code (row[4]) */
Hie.Cty.Cod = Str_ConvertStrCodToLongCod (row[4]);
Cty_GetCountryNameInLanguage (Hie.Cty.Cod,Gbl.Prefs.Language,
Hie.Cty.FullName);
Hie[HieLvl_CTY].Cod = Str_ConvertStrCodToLongCod (row[4]);
Cty_GetCountryNameInLanguage (Hie[HieLvl_CTY].Cod,Gbl.Prefs.Language,
Hie[HieLvl_CTY].FullName);
/* Get institution code (row[5]),
center code (row[6])
and degree code (row[7]) */
Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[5]);
Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[6]);
Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[7]);
Ins_DB_GetInsShrtName (Hie.Ins.Cod,Hie.Ins.ShrtName);
Ctr_DB_GetShortNameOfCenterByCod (Hie.Ctr.Cod,Hie.Ctr.ShrtName);
Deg_DB_GetShortNameOfDegreeByCod (Hie.Deg.Cod,Hie.Deg.ShrtName);
Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[5]);
Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[6]);
Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[7]);
Ins_DB_GetInsShrtName (Hie[HieLvl_INS].Cod,Hie[HieLvl_INS].ShrtName);
Ctr_DB_GetShortNameOfCenterByCod (Hie[HieLvl_CTR].Cod,Hie[HieLvl_CTR].ShrtName);
Deg_DB_GetShortNameOfDegreeByCod (Hie[HieLvl_DEG].Cod,Hie[HieLvl_DEG].ShrtName);
/* Print table row */
HTM_TR_Begin (NULL);
@ -281,22 +281,22 @@ void Log_GetAndShowLastClicks (void)
HTM_TD_Begin ("class=\"LC_CTY %s_%s\"",
ClassRow,The_GetSuffix ());
HTM_Txt (Hie.Cty.FullName); // Country
HTM_Txt (Hie[HieLvl_CTY].FullName); // Country
HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_INS %s_%s\"",
ClassRow,The_GetSuffix ());
HTM_Txt (Hie.Ins.ShrtName); // Institution
HTM_Txt (Hie[HieLvl_INS].ShrtName); // Institution
HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_CTR %s_%s\"",
ClassRow,The_GetSuffix ());
HTM_Txt (Hie.Ctr.ShrtName); // Center
HTM_Txt (Hie[HieLvl_CTR].ShrtName); // Center
HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_DEG %s_%s\"",
ClassRow,The_GetSuffix ());
HTM_Txt (Hie.Deg.ShrtName); // Degree
HTM_Txt (Hie[HieLvl_DEG].ShrtName); // Degree
HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_ACT %s_%s\"",

View File

@ -62,7 +62,9 @@ static void Lgo_PutIconToRemoveLogo (Act_Action_t ActionRem);
/***************** Draw institution, center or degree logo *******************/
/*****************************************************************************/
void Lgo_DrawLogo (HieLvl_Level_t Level,long HieCod,const char *AltText,
void Lgo_DrawLogo (HieLvl_Level_t Level,
long HieCod,
const char *AltText,
unsigned Size,const char *Class)
{
static const char *HieIcon[HieLvl_NUM_LEVELS] =

View File

@ -27,7 +27,9 @@
/***************************** Public prototypes *****************************/
/*****************************************************************************/
void Lgo_DrawLogo (HieLvl_Level_t Level,long HieCod,const char *AltText,
void Lgo_DrawLogo (HieLvl_Level_t Level,
long HieCod,
const char *AltText,
unsigned Size,const char *Class);
void Lgo_PutIconToChangeLogo (HieLvl_Level_t Level);
void Lgo_RequestLogo (HieLvl_Level_t Level);

View File

@ -340,7 +340,7 @@ void Ntf_ShowMyNotifications (void)
bool AllNotifications;
Ntf_NotifyEvent_t NotifyEvent = (Ntf_NotifyEvent_t) 0; // Initialized to avoid warning
struct Usr_Data UsrDat;
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
long Cod;
struct For_Forums Forums;
char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
@ -419,20 +419,20 @@ void Ntf_ShowMyNotifications (void)
Usr_DONT_GET_ROLE_IN_CURRENT_CRS);
/* Get institution code (row[2]) */
Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[2]);
Ins_GetInstitDataByCod (&Hie.Ins);
Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[2]);
Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
/* Get center code (row[3]) */
Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[3]);
Ctr_GetCenterDataByCod (&Hie.Ctr);
Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[3]);
Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
/* Get degree code (row[4]) */
Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[4]);
Deg_GetDegreeDataByCod (&Hie.Deg);
Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[4]);
Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
/* Get course code (row[5]) */
Hie.Crs.Cod = Str_ConvertStrCodToLongCod (row[5]);
Crs_GetCourseDataByCod (&Hie.Crs);
Hie[HieLvl_CRS].Cod = Str_ConvertStrCodToLongCod (row[5]);
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
/* Get message/post/... code (row[6]) */
Cod = Str_ConvertStrCodToLongCod (row[6]);
@ -488,7 +488,7 @@ void Ntf_ShowMyNotifications (void)
ClassBg,The_GetSuffix ());
if (PutLink)
{
Action = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.Cod,&UsrDat,Cod,&Forums);
Action = Ntf_StartFormGoToAction (NotifyEvent,Hie[HieLvl_CRS].Cod,&UsrDat,Cod,&Forums);
PutLink = Frm_CheckIfInside ();
}
@ -506,7 +506,7 @@ void Ntf_ShowMyNotifications (void)
HTM_TD_Begin ("class=\"LT %s_%s\"",ClassBg,The_GetSuffix ());
if (PutLink)
{
Action = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.Cod,&UsrDat,Cod,&Forums);
Action = Ntf_StartFormGoToAction (NotifyEvent,Hie[HieLvl_CRS].Cod,&UsrDat,Cod,&Forums);
PutLink = Frm_CheckIfInside ();
HTM_BUTTON_Submit_Begin (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent],
@ -539,7 +539,7 @@ void Ntf_ShowMyNotifications (void)
{
if (PutLink)
{
Action = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.Cod,&UsrDat,Cod,&Forums);
Action = Ntf_StartFormGoToAction (NotifyEvent,Hie[HieLvl_CRS].Cod,&UsrDat,Cod,&Forums);
PutLink = Frm_CheckIfInside ();
}
@ -563,7 +563,7 @@ void Ntf_ShowMyNotifications (void)
{
if (PutLink)
{
Action = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.Cod,&UsrDat,Cod,&Forums);
Action = Ntf_StartFormGoToAction (NotifyEvent,Hie[HieLvl_CRS].Cod,&UsrDat,Cod,&Forums);
PutLink = Frm_CheckIfInside ();
}
@ -575,14 +575,14 @@ void Ntf_ShowMyNotifications (void)
HTM_SPAN_Begin ("class=\"%s_%s\"",
ClassTxt,The_GetSuffix ());
if (Hie.Crs.Cod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Course,Hie.Crs.ShrtName);
else if (Hie.Deg.Cod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Degree,Hie.Deg.ShrtName);
else if (Hie.Ctr.Cod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Center,Hie.Ctr.ShrtName);
else if (Hie.Ins.Cod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Institution,Hie.Ins.ShrtName);
if (Hie[HieLvl_CRS].Cod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Course,Hie[HieLvl_CRS].ShrtName);
else if (Hie[HieLvl_DEG].Cod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Degree,Hie[HieLvl_DEG].ShrtName);
else if (Hie[HieLvl_CTR].Cod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Center,Hie[HieLvl_CTR].ShrtName);
else if (Hie[HieLvl_INS].Cod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Institution,Hie[HieLvl_INS].ShrtName);
else
HTM_Hyphen ();
@ -614,7 +614,7 @@ void Ntf_ShowMyNotifications (void)
ContentStr = NULL;
Ntf_GetNotifSummaryAndContent (SummaryStr,&ContentStr,NotifyEvent,
Cod,Hie.Crs.Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
Cod,Hie[HieLvl_CRS].Cod,Gbl.Usrs.Me.UsrDat.UsrCod,
false);
HTM_TR_Begin (NULL);
@ -1272,7 +1272,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (const struct Usr_Data *ToUsrDat
Lan_Language_t ToUsrLanguage;
struct Usr_Data FromUsrDat;
Ntf_NotifyEvent_t NotifyEvent = (Ntf_NotifyEvent_t) 0; // Initialized to avoid warning
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
long Cod;
struct For_Forum ForumSelected;
char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
@ -1339,16 +1339,16 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (const struct Usr_Data *ToUsrDat
center code (row[3]),
degree code (row[4]),
course code (row[5]) */
Hie.Ins.Cod = Str_ConvertStrCodToLongCod (row[2]);
Hie.Ctr.Cod = Str_ConvertStrCodToLongCod (row[3]);
Hie.Deg.Cod = Str_ConvertStrCodToLongCod (row[4]);
Hie.Crs.Cod = Str_ConvertStrCodToLongCod (row[5]);
Hie[HieLvl_INS].Cod = Str_ConvertStrCodToLongCod (row[2]);
Hie[HieLvl_CTR].Cod = Str_ConvertStrCodToLongCod (row[3]);
Hie[HieLvl_DEG].Cod = Str_ConvertStrCodToLongCod (row[4]);
Hie[HieLvl_CRS].Cod = Str_ConvertStrCodToLongCod (row[5]);
/* Get data of institution, center, degree and course */
Ins_GetInstitDataByCod (&Hie.Ins);
Ctr_GetCenterDataByCod (&Hie.Ctr);
Deg_GetDegreeDataByCod (&Hie.Deg);
Crs_GetCourseDataByCod (&Hie.Crs);
Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
/* Get message/post/... code (row[6]) */
Cod = Str_ConvertStrCodToLongCod (row[6]);
@ -1386,10 +1386,10 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (const struct Usr_Data *ToUsrDat
case Ntf_EVENT_NOTICE:
case Ntf_EVENT_MESSAGE:
case Ntf_EVENT_SURVEY:
if (Hie.Crs.Cod > 0)
if (Hie[HieLvl_CRS].Cod > 0)
fprintf (FileMail,"%s: %s\n",
Txt_Course_NO_HTML[ToUsrLanguage],
Hie.Crs.FullName);
Hie[HieLvl_CRS].FullName);
break;
case Ntf_EVENT_FORUM_POST_COURSE:
case Ntf_EVENT_FORUM_REPLY:
@ -1440,7 +1440,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (const struct Usr_Data *ToUsrDat
*NumMails = 1;
/* Update statistics about notifications */
Ntf_UpdateNumNotifSent (Hie.Deg.Cod,Hie.Crs.Cod,NotifyEvent,
Ntf_UpdateNumNotifSent (Hie[HieLvl_DEG].Cod,Hie[HieLvl_CRS].Cod,NotifyEvent,
*NumNotif,*NumMails);
}

View File

@ -2261,7 +2261,10 @@ static void Pho_ShowOrPrintListDegrees (struct Pho_DegPhotos *DegPhotos,
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf,"CT");
else // Pho_DEGREES_PRINT
{
Lgo_DrawLogo (HieLvl_DEG,Deg.Cod,Deg.ShrtName,20,"CT");
Lgo_DrawLogo (HieLvl_DEG,
Deg.Cod,
Deg.ShrtName,
20,"CT");
HTM_TxtF ("&nbsp;%s",Deg.FullName);
}
HTM_TD_End ();

View File

@ -1655,8 +1655,10 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"LM\" style=\"width:%upx;\"",Rec_DEGREE_LOGO_SIZE);
Lgo_DrawLogo (HieLvl_DEG,Gbl.Hierarchy.Node[HieLvl_DEG].Cod,
Gbl.Hierarchy.Node[HieLvl_DEG].ShrtName,Rec_DEGREE_LOGO_SIZE,NULL);
Lgo_DrawLogo (HieLvl_DEG,
Gbl.Hierarchy.Node[HieLvl_DEG].Cod,
Gbl.Hierarchy.Node[HieLvl_DEG].ShrtName,
Rec_DEGREE_LOGO_SIZE,NULL);
HTM_TD_End ();
HTM_TD_Begin ("class=\"REC_HEAD CM\"");
@ -2535,7 +2537,9 @@ static void Rec_ShowInstitutionInHead (struct Hie_Node *Ins,bool PutFormLinks)
ParCod_PutPar (ParCod_Ins,Ins->Cod);
HTM_BUTTON_Submit_Begin (Ins->FullName,"class=\"BT_LINK\"");
}
Lgo_DrawLogo (HieLvl_INS,Ins->Cod,Ins->ShrtName,
Lgo_DrawLogo (HieLvl_INS,
Ins->Cod,
Ins->ShrtName,
Rec_INSTITUTION_LOGO_SIZE,NULL);
if (PutFormLinks)
{

View File

@ -85,11 +85,11 @@ static void TmlNot_WriteAuthorTimeAndContent (const struct TmlNot_Note *Not,
static void TmlNot_WriteContent (const struct TmlNot_Note *Not);
static void TmlNot_GetAndWriteNoPost (const struct TmlNot_Note *Not);
static void TmlNot_GetLocationInHierarchy (const struct TmlNot_Note *Not,
struct Hie_Hierarchy *Hie,
struct Hie_Node Hie[HieLvl_NUM_LEVELS],
struct For_Forum *Forum,
char ForumName[For_MAX_BYTES_FORUM_NAME + 1]);
static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
const struct Hie_Hierarchy *Hie,
struct Hie_Node Hie[HieLvl_NUM_LEVELS],
const char ForumName[For_MAX_BYTES_FORUM_NAME + 1]);
static void TmlNot_PutFormGoToAction (const struct TmlNot_Note *Not,
@ -390,7 +390,7 @@ static void TmlNot_WriteContent (const struct TmlNot_Note *Not)
static void TmlNot_GetAndWriteNoPost (const struct TmlNot_Note *Not)
{
struct Hie_Hierarchy Hie;
struct Hie_Node Hie[HieLvl_NUM_LEVELS];
struct For_Forums Forums;
char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1];
@ -400,14 +400,14 @@ static void TmlNot_GetAndWriteNoPost (const struct TmlNot_Note *Not)
/***** Get location in hierarchy *****/
if (!Not->Unavailable)
TmlNot_GetLocationInHierarchy (Not,&Hie,&Forums.Forum,ForumName);
TmlNot_GetLocationInHierarchy (Not,Hie,&Forums.Forum,ForumName);
/***** Write note type *****/
TmlNot_PutFormGoToAction (Not,&Forums);
/***** Write location in hierarchy *****/
if (!Not->Unavailable)
TmlNot_WriteLocationInHierarchy (Not,&Hie,ForumName);
TmlNot_WriteLocationInHierarchy (Not,Hie,ForumName);
/***** Get and write note summary *****/
/* Get note summary */
@ -424,16 +424,16 @@ static void TmlNot_GetAndWriteNoPost (const struct TmlNot_Note *Not)
/*****************************************************************************/
static void TmlNot_GetLocationInHierarchy (const struct TmlNot_Note *Not,
struct Hie_Hierarchy *Hie,
struct Hie_Node Hie[HieLvl_NUM_LEVELS],
struct For_Forum *Forum,
char ForumName[For_MAX_BYTES_FORUM_NAME + 1])
{
/***** Initialize location in hierarchy *****/
Hie->Cty.Cod =
Hie->Ins.Cod =
Hie->Ctr.Cod =
Hie->Deg.Cod =
Hie->Crs.Cod = -1L;
Hie[HieLvl_CTY].Cod =
Hie[HieLvl_INS].Cod =
Hie[HieLvl_CTR].Cod =
Hie[HieLvl_DEG].Cod =
Hie[HieLvl_CRS].Cod = -1L;
/***** Get location in hierarchy *****/
switch (Not->Type)
@ -441,28 +441,28 @@ static void TmlNot_GetLocationInHierarchy (const struct TmlNot_Note *Not,
case TmlNot_INS_DOC_PUB_FILE:
case TmlNot_INS_SHA_PUB_FILE:
/* Get institution data */
Hie->Ins.Cod = Not->HieCod;
Ins_GetInstitDataByCod (&Hie->Ins);
Hie[HieLvl_INS].Cod = Not->HieCod;
Ins_GetInstitDataByCod (&Hie[HieLvl_INS]);
break;
case TmlNot_CTR_DOC_PUB_FILE:
case TmlNot_CTR_SHA_PUB_FILE:
/* Get center data */
Hie->Ctr.Cod = Not->HieCod;
Ctr_GetCenterDataByCod (&Hie->Ctr);
Hie[HieLvl_CTR].Cod = Not->HieCod;
Ctr_GetCenterDataByCod (&Hie[HieLvl_CTR]);
break;
case TmlNot_DEG_DOC_PUB_FILE:
case TmlNot_DEG_SHA_PUB_FILE:
/* Get degree data */
Hie->Deg.Cod = Not->HieCod;
Deg_GetDegreeDataByCod (&Hie->Deg);
Hie[HieLvl_DEG].Cod = Not->HieCod;
Deg_GetDegreeDataByCod (&Hie[HieLvl_DEG]);
break;
case TmlNot_CRS_DOC_PUB_FILE:
case TmlNot_CRS_SHA_PUB_FILE:
case TmlNot_CALL_FOR_EXAM:
case TmlNot_NOTICE:
/* Get course data */
Hie->Crs.Cod = Not->HieCod;
Crs_GetCourseDataByCod (&Hie->Crs);
Hie[HieLvl_CRS].Cod = Not->HieCod;
Crs_GetCourseDataByCod (&Hie[HieLvl_CRS]);
break;
case TmlNot_FORUM_POST:
/* Get forum type of the post */
@ -481,7 +481,7 @@ static void TmlNot_GetLocationInHierarchy (const struct TmlNot_Note *Not,
/*****************************************************************************/
static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
const struct Hie_Hierarchy *Hie,
struct Hie_Node Hie[HieLvl_NUM_LEVELS],
const char ForumName[For_MAX_BYTES_FORUM_NAME + 1])
{
extern const char *Txt_Institution;
@ -501,21 +501,21 @@ static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
/* Write location (institution) in hierarchy */
HTM_TxtF ("%s:&nbsp;%s",
Txt_Institution,
Hie->Ins.ShrtName);
Hie[HieLvl_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",
Txt_Center,
Hie->Ctr.ShrtName);
Hie[HieLvl_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",
Txt_Degree,
Hie->Deg.ShrtName);
Hie[HieLvl_DEG].ShrtName);
break;
case TmlNot_CRS_DOC_PUB_FILE:
case TmlNot_CRS_SHA_PUB_FILE:
@ -524,7 +524,7 @@ static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
/* Write location (course) in hierarchy */
HTM_TxtF ("%s:&nbsp;%s",
Txt_Course,
Hie->Crs.ShrtName);
Hie[HieLvl_CRS].ShrtName);
break;
case TmlNot_FORUM_POST:
/* Write forum name */