diff --git a/swad_changelog.h b/swad_changelog.h index cbe4ca44..098699d4 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -428,10 +428,11 @@ En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 18.66.3 (2019-03-06)" +#define Log_PLATFORM_VERSION "SWAD 18.66.4 (2019-03-06)" #define CSS_FILE "swad18.66.3.css" #define JS_FILE "swad18.64.js" /* + Version 18.66.4: Mar 06, 2019 Code refactoring in user's figures. (238678 lines) Version 18.66.3: Mar 06, 2019 Changed order of figures in user's profile. (238674 lines) Version 18.66.2: Mar 06, 2019 Fixed bug while sending a new password, reported by Rosa María Cantarero López. (238672 lines) Version 18.66.1: Mar 06, 2019 Changed order of figures in user's profile. (238671 lines) diff --git a/swad_profile.c b/swad_profile.c index 27a3ce2e..a1a30912 100644 --- a/swad_profile.c +++ b/swad_profile.c @@ -74,6 +74,10 @@ extern struct Globals Gbl; /***************************** Private prototypes ****************************/ /*****************************************************************************/ +static void Prf_ShowTimeSinceFirstClick (const struct UsrFigures *UsrFigures, + const struct UsrData *UsrDat); +static void Prf_ShowNumCrssWithRole (const struct UsrData *UsrDat, + Rol_Role_t Role); static void Prf_PutLinkCalculateFigures (const char *EncryptedUsrCod); static unsigned long Prf_GetRankingFigure (long UsrCod,const char *FieldName); @@ -352,18 +356,10 @@ void Prf_ChangeProfileVisibility (void) void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat) { - extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; - extern const char *Txt_courses_ABBREVIATION; - extern const char *Txt_teachers_ABBREVIATION; - extern const char *Txt_students_ABBREVIATION; extern const char *Txt_Files_uploaded; extern const char *Txt_file; extern const char *Txt_files; extern const char *Txt_public_FILES; - extern const char *Txt_TIME_Since; - extern const char *Txt_day; - extern const char *Txt_days; - extern const char *Txt_Today; extern const char *Txt_Clicks; extern const char *Txt_clicks; extern const char *Txt_Timeline; @@ -378,14 +374,12 @@ void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat) extern const char *Txt_Messages; extern const char *Txt_message; extern const char *Txt_messages; + extern const char *Txt_day; bool UsrIsBannedFromRanking; struct UsrFigures UsrFigures; - unsigned NumCrssUsrIsTch; - unsigned NumCrssUsrIsNET; - unsigned NumCrssUsrIsStd; + Rol_Role_t Role; unsigned NumFiles; unsigned NumPublicFiles; - char IdFirstClickTime[Frm_MAX_BYTES_ID + 1]; /***** Get figures *****/ Prf_GetUsrFigures (UsrDat->UsrCod,&UsrFigures); @@ -394,93 +388,14 @@ void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat) fprintf (Gbl.F.Out,"
" "
"); } +/*****************************************************************************/ +/************** Show time since first click in user's profile ****************/ +/*****************************************************************************/ + +static void Prf_ShowTimeSinceFirstClick (const struct UsrFigures *UsrFigures, + const struct UsrData *UsrDat) + { + extern const char *Txt_TIME_Since; + extern const char *Txt_day; + extern const char *Txt_days; + extern const char *Txt_Today; + char IdFirstClickTime[Frm_MAX_BYTES_ID + 1]; + + /* Time since first click */ + fprintf (Gbl.F.Out,"
  • ", + Txt_TIME_Since, + Gbl.Prefs.URLIcons); + if (UsrFigures->FirstClickTimeUTC) + { + /* Create unique id */ + Frm_SetUniqueId (IdFirstClickTime); + + fprintf (Gbl.F.Out,"",IdFirstClickTime); + if (UsrFigures->NumDays > 0) + fprintf (Gbl.F.Out," (%d %s)", + UsrFigures->NumDays, + (UsrFigures->NumDays == 1) ? Txt_day : + Txt_days); + fprintf (Gbl.F.Out,"", + IdFirstClickTime,(long) UsrFigures->FirstClickTimeUTC, + (unsigned) Gbl.Prefs.DateFormat,Txt_Today); + } + else // First click time is unknown or user never logged + /***** Button to fetch and store user's figures *****/ + Prf_PutLinkCalculateFigures (UsrDat->EncryptedUsrCod); + fprintf (Gbl.F.Out,"
  • "); + } + +/*****************************************************************************/ +/************** Show time since first click in user's profile ****************/ +/*****************************************************************************/ + +static void Prf_ShowNumCrssWithRole (const struct UsrData *UsrDat, + Rol_Role_t Role) + { + extern const char *Rol_Icons[Rol_NUM_ROLES]; + extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; + extern const char *Txt_courses_ABBREVIATION; + extern const char *Txt_teachers_ABBREVIATION; + extern const char *Txt_students_ABBREVIATION; + unsigned NumCrss; + + /***** Number of courses in which the user has a given role *****/ + NumCrss = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Role); + fprintf (Gbl.F.Out,"
  • " + "%u %s", + Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex], + Gbl.Prefs.URLIcons,Rol_Icons[Role], + NumCrss, + Txt_courses_ABBREVIATION); + if (NumCrss) + fprintf (Gbl.F.Out," (%u %s/%u %s)", + Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Role, + (1 << Rol_NET) | + (1 << Rol_TCH)), + Txt_teachers_ABBREVIATION, + Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Role, + (1 << Rol_STD)), + Txt_students_ABBREVIATION); + fprintf (Gbl.F.Out,"
  • "); + } + /*****************************************************************************/ /******** Put contextual link with animated icon to update an action *********/ /*****************************************************************************/ diff --git a/swad_role.c b/swad_role.c index 4bfd0843..4f5def80 100644 --- a/swad_role.c +++ b/swad_role.c @@ -36,6 +36,21 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ +#define Rol_NUM_ROLES 10 +const char *Rol_Icons[Rol_NUM_ROLES] = + { + "user.svg", // Rol_UNK + "user.svg", // Rol_GST + "user.svg", // Rol_USR + "user.svg", // Rol_STD + "user-tie.svg", // Rol_NET + "user-tie.svg", // Rol_TCH + "user-tie.svg", // Rol_DEG_ADM + "user-tie.svg", // Rol_CTR_ADM + "user-tie.svg", // Rol_INS_ADM + "user-tie.svg", // Rol_SYS_ADM + }; + /*****************************************************************************/ /***************************** Private constants *****************************/ /*****************************************************************************/ diff --git a/swad_user.c b/swad_user.c index 6d2bda69..91e55321 100644 --- a/swad_user.c +++ b/swad_user.c @@ -7470,11 +7470,12 @@ static void Usr_UpdateMyPrefAboutListWithPhotosPhotoInDB (void) static void Usr_PutLinkToSeeAdmins (void) { + extern const char *Rol_Icons[Rol_NUM_ROLES]; extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; /***** Put form to list admins *****/ Lay_PutContextualLinkIconText (ActLstOth,NULL,NULL, - "user-tie.svg", + Rol_Icons[Rol_DEG_ADM], Txt_ROLES_PLURAL_Abc[Rol_DEG_ADM][Usr_SEX_UNKNOWN]); }