Version 21.56.2: Nov 10, 2021 Code refactoring in pointers to text.

This commit is contained in:
acanas 2021-11-10 19:28:47 +01:00
parent 5e737fb2b7
commit 25356528f9
17 changed files with 312 additions and 302 deletions

View File

@ -3373,75 +3373,76 @@ static void Brw_ShowFileBrowser (void)
extern const char *Txt_Temporary_private_storage_area;
extern const char *Txt_Project_documents;
extern const char *Txt_Project_assessment;
const char *Brw_TitleOfFileBrowser[Brw_NUM_TYPES_FILE_BROWSER];
const char *Brw_HelpOfFileBrowser[Brw_NUM_TYPES_FILE_BROWSER];
static const char **Brw_TitleOfFileBrowser[Brw_NUM_TYPES_FILE_BROWSER] =
{
[Brw_UNKNOWN ] = NULL,
[Brw_SHOW_DOC_CRS] = &Txt_Documents_area,
[Brw_SHOW_MRK_CRS] = &Txt_Marks_area,
[Brw_ADMI_DOC_CRS] = &Txt_Documents_management_area,
[Brw_ADMI_SHR_CRS] = &Txt_Shared_files_area,
[Brw_ADMI_SHR_GRP] = &Txt_Shared_files_area,
[Brw_ADMI_WRK_USR] = &Txt_Works_area,
[Brw_ADMI_WRK_CRS] = &Txt_Works_area,
[Brw_ADMI_MRK_CRS] = &Txt_Marks_management_area,
[Brw_ADMI_BRF_USR] = &Txt_Temporary_private_storage_area,
[Brw_SHOW_DOC_GRP] = &Txt_Documents_area,
[Brw_ADMI_DOC_GRP] = &Txt_Documents_management_area,
[Brw_SHOW_MRK_GRP] = &Txt_Marks_area,
[Brw_ADMI_MRK_GRP] = &Txt_Marks_management_area,
[Brw_ADMI_ASG_USR] = &Txt_Assignments_area,
[Brw_ADMI_ASG_CRS] = &Txt_Assignments_area,
[Brw_SHOW_DOC_DEG] = &Txt_Documents_area,
[Brw_ADMI_DOC_DEG] = &Txt_Documents_management_area,
[Brw_SHOW_DOC_CTR] = &Txt_Documents_area,
[Brw_ADMI_DOC_CTR] = &Txt_Documents_management_area,
[Brw_SHOW_DOC_INS] = &Txt_Documents_area,
[Brw_ADMI_DOC_INS] = &Txt_Documents_management_area,
[Brw_ADMI_SHR_DEG] = &Txt_Shared_files_area,
[Brw_ADMI_SHR_CTR] = &Txt_Shared_files_area,
[Brw_ADMI_SHR_INS] = &Txt_Shared_files_area,
[Brw_ADMI_TCH_CRS] = &Txt_Teachers_files_area,
[Brw_ADMI_TCH_GRP] = &Txt_Teachers_files_area,
[Brw_ADMI_DOC_PRJ] = &Txt_Project_documents,
[Brw_ADMI_ASS_PRJ] = &Txt_Project_assessment,
};
static const char **Brw_HelpOfFileBrowser[Brw_NUM_TYPES_FILE_BROWSER] =
{
[Brw_UNKNOWN ] = NULL,
[Brw_SHOW_DOC_CRS] = &Hlp_FILES_Documents,
[Brw_SHOW_MRK_CRS] = &Hlp_FILES_Marks,
[Brw_ADMI_DOC_CRS] = &Hlp_FILES_Documents,
[Brw_ADMI_SHR_CRS] = &Hlp_FILES_Shared,
[Brw_ADMI_SHR_GRP] = &Hlp_FILES_Shared,
[Brw_ADMI_WRK_USR] = &Hlp_FILES_Homework_for_students,
[Brw_ADMI_WRK_CRS] = &Hlp_FILES_Homework_for_teachers,
[Brw_ADMI_MRK_CRS] = &Hlp_FILES_Marks,
[Brw_ADMI_BRF_USR] = &Hlp_FILES_Briefcase,
[Brw_SHOW_DOC_GRP] = &Hlp_FILES_Documents,
[Brw_ADMI_DOC_GRP] = &Hlp_FILES_Documents,
[Brw_SHOW_MRK_GRP] = &Hlp_FILES_Marks,
[Brw_ADMI_MRK_GRP] = &Hlp_FILES_Marks,
[Brw_ADMI_ASG_USR] = &Hlp_FILES_Homework_for_students,
[Brw_ADMI_ASG_CRS] = &Hlp_FILES_Homework_for_teachers,
[Brw_SHOW_DOC_DEG] = &Hlp_FILES_Documents,
[Brw_ADMI_DOC_DEG] = &Hlp_FILES_Documents,
[Brw_SHOW_DOC_CTR] = &Hlp_FILES_Documents,
[Brw_ADMI_DOC_CTR] = &Hlp_FILES_Documents,
[Brw_SHOW_DOC_INS] = &Hlp_FILES_Documents,
[Brw_ADMI_DOC_INS] = &Hlp_FILES_Documents,
[Brw_ADMI_SHR_DEG] = &Hlp_FILES_Shared,
[Brw_ADMI_SHR_CTR] = &Hlp_FILES_Shared,
[Brw_ADMI_SHR_INS] = &Hlp_FILES_Shared,
[Brw_ADMI_TCH_CRS] = &Hlp_FILES_Private,
[Brw_ADMI_TCH_GRP] = &Hlp_FILES_Private,
[Brw_ADMI_DOC_PRJ] = &Hlp_ASSESSMENT_Projects,
[Brw_ADMI_ASS_PRJ] = &Hlp_ASSESSMENT_Projects,
};
struct Brw_NumObjects Removed;
char FileBrowserSectionId[32];
bool IAmTeacherOrSysAdm = Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM;
/***** Set title of file browser *****/
Brw_TitleOfFileBrowser[Brw_UNKNOWN ] = NULL;
Brw_TitleOfFileBrowser[Brw_SHOW_DOC_CRS] = Txt_Documents_area;
Brw_TitleOfFileBrowser[Brw_SHOW_MRK_CRS] = Txt_Marks_area;
Brw_TitleOfFileBrowser[Brw_ADMI_DOC_CRS] = Txt_Documents_management_area;
Brw_TitleOfFileBrowser[Brw_ADMI_SHR_CRS] = Txt_Shared_files_area;
Brw_TitleOfFileBrowser[Brw_ADMI_SHR_GRP] = Txt_Shared_files_area;
Brw_TitleOfFileBrowser[Brw_ADMI_WRK_USR] = Txt_Works_area;
Brw_TitleOfFileBrowser[Brw_ADMI_WRK_CRS] = Txt_Works_area;
Brw_TitleOfFileBrowser[Brw_ADMI_MRK_CRS] = Txt_Marks_management_area;
Brw_TitleOfFileBrowser[Brw_ADMI_BRF_USR] = Txt_Temporary_private_storage_area;
Brw_TitleOfFileBrowser[Brw_SHOW_DOC_GRP] = Txt_Documents_area;
Brw_TitleOfFileBrowser[Brw_ADMI_DOC_GRP] = Txt_Documents_management_area;
Brw_TitleOfFileBrowser[Brw_SHOW_MRK_GRP] = Txt_Marks_area;
Brw_TitleOfFileBrowser[Brw_ADMI_MRK_GRP] = Txt_Marks_management_area;
Brw_TitleOfFileBrowser[Brw_ADMI_ASG_USR] = Txt_Assignments_area;
Brw_TitleOfFileBrowser[Brw_ADMI_ASG_CRS] = Txt_Assignments_area;
Brw_TitleOfFileBrowser[Brw_SHOW_DOC_DEG] = Txt_Documents_area;
Brw_TitleOfFileBrowser[Brw_ADMI_DOC_DEG] = Txt_Documents_management_area;
Brw_TitleOfFileBrowser[Brw_SHOW_DOC_CTR] = Txt_Documents_area;
Brw_TitleOfFileBrowser[Brw_ADMI_DOC_CTR] = Txt_Documents_management_area;
Brw_TitleOfFileBrowser[Brw_SHOW_DOC_INS] = Txt_Documents_area;
Brw_TitleOfFileBrowser[Brw_ADMI_DOC_INS] = Txt_Documents_management_area;
Brw_TitleOfFileBrowser[Brw_ADMI_SHR_DEG] = Txt_Shared_files_area;
Brw_TitleOfFileBrowser[Brw_ADMI_SHR_CTR] = Txt_Shared_files_area;
Brw_TitleOfFileBrowser[Brw_ADMI_SHR_INS] = Txt_Shared_files_area;
Brw_TitleOfFileBrowser[Brw_ADMI_TCH_CRS] = Txt_Teachers_files_area;
Brw_TitleOfFileBrowser[Brw_ADMI_TCH_GRP] = Txt_Teachers_files_area;
Brw_TitleOfFileBrowser[Brw_ADMI_DOC_PRJ] = Txt_Project_documents;
Brw_TitleOfFileBrowser[Brw_ADMI_ASS_PRJ] = Txt_Project_assessment;
/***** Set help link of file browser *****/
Brw_HelpOfFileBrowser[Brw_UNKNOWN ] = NULL;
Brw_HelpOfFileBrowser[Brw_SHOW_DOC_CRS] = Hlp_FILES_Documents;
Brw_HelpOfFileBrowser[Brw_SHOW_MRK_CRS] = Hlp_FILES_Marks;
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_CRS] = Hlp_FILES_Documents;
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_CRS] = Hlp_FILES_Shared;
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_GRP] = Hlp_FILES_Shared;
Brw_HelpOfFileBrowser[Brw_ADMI_WRK_USR] = Hlp_FILES_Homework_for_students;
Brw_HelpOfFileBrowser[Brw_ADMI_WRK_CRS] = Hlp_FILES_Homework_for_teachers;
Brw_HelpOfFileBrowser[Brw_ADMI_MRK_CRS] = Hlp_FILES_Marks;
Brw_HelpOfFileBrowser[Brw_ADMI_BRF_USR] = Hlp_FILES_Briefcase;
Brw_HelpOfFileBrowser[Brw_SHOW_DOC_GRP] = Hlp_FILES_Documents;
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_GRP] = Hlp_FILES_Documents;
Brw_HelpOfFileBrowser[Brw_SHOW_MRK_GRP] = Hlp_FILES_Marks;
Brw_HelpOfFileBrowser[Brw_ADMI_MRK_GRP] = Hlp_FILES_Marks;
Brw_HelpOfFileBrowser[Brw_ADMI_ASG_USR] = Hlp_FILES_Homework_for_students;
Brw_HelpOfFileBrowser[Brw_ADMI_ASG_CRS] = Hlp_FILES_Homework_for_teachers;
Brw_HelpOfFileBrowser[Brw_SHOW_DOC_DEG] = Hlp_FILES_Documents;
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_DEG] = Hlp_FILES_Documents;
Brw_HelpOfFileBrowser[Brw_SHOW_DOC_CTR] = Hlp_FILES_Documents;
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_CTR] = Hlp_FILES_Documents;
Brw_HelpOfFileBrowser[Brw_SHOW_DOC_INS] = Hlp_FILES_Documents;
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_INS] = Hlp_FILES_Documents;
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_DEG] = Hlp_FILES_Shared;
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_CTR] = Hlp_FILES_Shared;
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_INS] = Hlp_FILES_Shared;
Brw_HelpOfFileBrowser[Brw_ADMI_TCH_CRS] = Hlp_FILES_Private;
Brw_HelpOfFileBrowser[Brw_ADMI_TCH_GRP] = Hlp_FILES_Private;
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_PRJ] = Hlp_ASSESSMENT_Projects;
Brw_HelpOfFileBrowser[Brw_ADMI_ASS_PRJ] = Hlp_ASSESSMENT_Projects;
/***** Set contextual icon in box *****/
Gbl.FileBrowser.IconViewEdit = Brw_ICON_NONE;
switch (Gbl.FileBrowser.Type)
@ -3512,9 +3513,9 @@ static void Brw_ShowFileBrowser (void)
"file_browser_%u",Gbl.FileBrowser.Id);
HTM_SECTION_Begin (FileBrowserSectionId);
Box_BoxBegin ("100%",Brw_TitleOfFileBrowser[Gbl.FileBrowser.Type],
Box_BoxBegin ("100%",*Brw_TitleOfFileBrowser[Gbl.FileBrowser.Type],
Brw_PutIconsFileBrowser,NULL,
Brw_HelpOfFileBrowser[Gbl.FileBrowser.Type],Box_NOT_CLOSABLE);
*Brw_HelpOfFileBrowser[Gbl.FileBrowser.Type],Box_NOT_CLOSABLE);
/***** Subtitle *****/
Brw_WriteSubtitleOfFileBrowser ();
@ -5769,12 +5770,12 @@ static void Brw_WriteCurrentClipboard (void)
Usr_MAX_BYTES_FULL_NAME +
Prj_MAX_BYTES_PROJECT_TITLE];
char FileNameToShow[NAME_MAX + 1];
const char *TxtFileType[Brw_NUM_FILE_TYPES] =
static const char **TxtFileType[Brw_NUM_FILE_TYPES] =
{
[Brw_IS_UNKNOWN] = Txt_file_folder,
[Brw_IS_FILE ] = Txt_file,
[Brw_IS_FOLDER ] = Txt_folder,
[Brw_IS_LINK ] = Txt_link,
[Brw_IS_UNKNOWN] = &Txt_file_folder,
[Brw_IS_FILE ] = &Txt_file,
[Brw_IS_FOLDER ] = &Txt_folder,
[Brw_IS_LINK ] = &Txt_link,
};
switch (Gbl.FileBrowser.Clipboard.FileBrowser)
@ -5987,7 +5988,7 @@ static void Brw_WriteCurrentClipboard (void)
Ale_ShowAlert (Ale_CLIPBOARD,"%s: %s, %s <strong>%s</strong>.",
Txt_Copy_source,TxtClipboardZone,
TxtFileType[Gbl.FileBrowser.Clipboard.FilFolLnk.Type],
*TxtFileType[Gbl.FileBrowser.Clipboard.FilFolLnk.Type],
FileNameToShow);
}
else

View File

@ -602,13 +602,14 @@ TODO: FIX BUG, URGENT! En las fechas como par
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
*/
#define Log_PLATFORM_VERSION "SWAD 21.56.1 (2021-11-10)"
#define Log_PLATFORM_VERSION "SWAD 21.56.2 (2021-11-10)"
#define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.69.1.js"
/*
TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 21.56.2: Nov 10, 2021 Code refactoring in pointers to text. (319501 lines)
Version 21.56.1: Nov 10, 2021 Code refactoring in switch statements (until swad_enrolment.c). (319490 lines)
Version 21.56: Nov 10, 2021 Code refactoring in hierarchy. (319618 lines)
Version 21.55.2: Nov 10, 2021 Code refactoring in switch statements (until swad_button.c). (319875 lines)

View File

@ -159,7 +159,8 @@ unsigned Cty_DB_GetCtysFull (MYSQL_RES **mysql_res)
static const char *OrderBySubQueryFmt[Cty_NUM_ORDERS] =
{
[Cty_ORDER_BY_COUNTRY ] = "Name_%s",
[Cty_ORDER_BY_NUM_USRS] = "NumUsrs DESC,Name_%s",
[Cty_ORDER_BY_NUM_USRS] = "NumUsrs DESC,"
"Name_%s",
};
unsigned NumCtys;
Lan_Language_t Lan;

View File

@ -1639,7 +1639,7 @@ void Dat_WriteLocalDateHMSFromUTC (const char *Id,time_t TimeUTC,
bool WriteToday,bool WriteDateOnSameDay,
bool WriteWeekDay,unsigned WriteHMS)
{
static const char *SeparatorStr[] =
static const char *SeparatorStr[Dat_NUM_SEPARATORS] =
{
[Dat_SEPARATOR_NONE ] = "",
[Dat_SEPARATOR_COMMA] = ",&nbsp;",

View File

@ -114,6 +114,7 @@ typedef enum
} Dat_Format_t; // Do not change these numbers because they are used in database
#define Dat_FORMAT_DEFAULT Dat_FORMAT_YYYY_MM_DD
#define Dat_NUM_SEPARATORS 3
typedef enum
{
Dat_SEPARATOR_NONE, // No separator

View File

@ -83,7 +83,8 @@ unsigned Deg_DB_GetDegreeTypes (MYSQL_RES **mysql_res,
static const char *OrderBySubQuery[DegTyp_NUM_ORDERS] =
{
[DegTyp_ORDER_BY_DEGREE_TYPE] = "DegTypName",
[DegTyp_ORDER_BY_NUM_DEGREES] = "NumDegs DESC,DegTypName",
[DegTyp_ORDER_BY_NUM_DEGREES] = "NumDegs DESC,"
"DegTypName",
};
/***** Get types of degree from database *****/

View File

@ -64,7 +64,8 @@ unsigned Dpt_DB_GetListDepartments (MYSQL_RES **mysql_res,
static const char *OrderBySubQuery[Dpt_NUM_ORDERS] =
{
[Dpt_ORDER_BY_DEPARTMENT] = "FullName",
[Dpt_ORDER_BY_NUM_TCHS ] = "NumTchs DESC,FullName",
[Dpt_ORDER_BY_NUM_TCHS ] = "NumTchs DESC,"
"FullName",
};
return (unsigned)

View File

@ -124,8 +124,12 @@ unsigned Exa_DB_GetListExams (MYSQL_RES **mysql_res,Exa_Order_t SelectedOrder)
{
static const char *OrderBySubQuery[Exa_NUM_ORDERS] =
{
[Exa_ORDER_BY_START_DATE] = "StartTime DESC,EndTime DESC,exa_exams.Title DESC",
[Exa_ORDER_BY_END_DATE ] = "EndTime DESC,StartTime DESC,exa_exams.Title DESC",
[Exa_ORDER_BY_START_DATE] = "StartTime DESC,"
"EndTime DESC,"
"exa_exams.Title DESC",
[Exa_ORDER_BY_END_DATE ] = "EndTime DESC,"
"StartTime DESC,"
"exa_exams.Title DESC",
[Exa_ORDER_BY_TITLE ] = "exa_exams.Title",
};
char *HiddenSubQuery;

View File

@ -951,10 +951,10 @@ static void ExaSet_ListOneOrMoreQuestionsForEdition (struct Exa_Exams *Exams,
[Qst_INVALID_QUESTION] = "times-red.svg",
[Qst_VALID_QUESTION ] = "check-green.svg",
};
const char *Title[Qst_NUM_VALIDITIES] =
static const char **Title[Qst_NUM_VALIDITIES] =
{
[Qst_INVALID_QUESTION] = Txt_Invalid_question,
[Qst_VALID_QUESTION ] = Txt_Valid_question,
[Qst_INVALID_QUESTION] = &Txt_Invalid_question,
[Qst_VALID_QUESTION ] = &Txt_Valid_question,
};
/***** Begin table *****/
@ -1005,7 +1005,7 @@ static void ExaSet_ListOneOrMoreQuestionsForEdition (struct Exa_Exams *Exams,
Lay_PutContextualLinkOnlyIcon (NextAction[Question.Validity],Anchor,
ExaSet_PutParamsOneQst,Exams,
Icon[Question.Validity],
Title[Question.Validity]);
*Title[Question.Validity]);
HTM_TD_End ();

View File

@ -76,8 +76,8 @@ static void Fol_ListFollowersUsr (struct UsrData *UsrDat);
static void Fol_ShowFollowedOrFollower (struct UsrData *UsrDat);
static void Fol_WriteRowUsrToFollowOnRightColumn (struct UsrData *UsrDat);
static void Fol_PutInactiveIconToFollowUnfollow (void);
static void Fol_PutIconToFollow (struct UsrData *UsrDat);
static void Fol_PutIconToUnfollow (struct UsrData *UsrDat);
static void Fol_PutIconToFollow (const char EncryptedUsrCod[Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1]);
static void Fol_PutIconToUnfollow (const char EncryptedUsrCod[Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1]);
static void Fol_RequestFollowUsrs (Act_Action_t NextAction);
static void Fol_RequestUnfollowUsrs (Act_Action_t NextAction);
@ -135,34 +135,34 @@ void Fol_SuggestUsrsToFollowMainZone (void)
Fol_PutIconsWhoToFollow,NULL,
Hlp_START_Profiles_who_to_follow,Box_NOT_CLOSABLE,2);
/***** Initialize structure with user's data *****/
Usr_UsrDataConstructor (&UsrDat);
/***** Initialize structure with user's data *****/
Usr_UsrDataConstructor (&UsrDat);
/***** List users *****/
for (NumUsr = 0;
NumUsr < NumUsrs;
NumUsr++)
{
/***** Get user *****/
row = mysql_fetch_row (mysql_res);
/***** List users *****/
for (NumUsr = 0;
NumUsr < NumUsrs;
NumUsr++)
{
/***** Get user *****/
row = mysql_fetch_row (mysql_res);
/* Get user's code (row[0]) */
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
/* Get user's code (row[0]) */
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
/***** Show user *****/
if ((NumUsr % Fol_NUM_COLUMNS_FOLLOW) == 0)
HTM_TR_Begin (NULL);
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat,
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS))
Fol_ShowFollowedOrFollower (&UsrDat);
if ((NumUsr % Fol_NUM_COLUMNS_FOLLOW) == (Fol_NUM_COLUMNS_FOLLOW-1) ||
NumUsr == NumUsrs - 1)
HTM_TR_End ();
}
/***** Show user *****/
if ((NumUsr % Fol_NUM_COLUMNS_FOLLOW) == 0)
HTM_TR_Begin (NULL);
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat,
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS))
Fol_ShowFollowedOrFollower (&UsrDat);
if ((NumUsr % Fol_NUM_COLUMNS_FOLLOW) == (Fol_NUM_COLUMNS_FOLLOW-1) ||
NumUsr == NumUsrs - 1)
HTM_TR_End ();
}
/***** Free memory used for user's data *****/
Usr_UsrDataDestructor (&UsrDat);
/***** Free memory used for user's data *****/
Usr_UsrDataDestructor (&UsrDat);
/***** End table and box *****/
Box_BoxTableEnd ();
@ -198,42 +198,42 @@ void Fol_SuggestUsrsToFollowMainZoneOnRightColumn (void)
/***** Begin container *****/
HTM_DIV_Begin ("class=\"CONNECTED\"");
/***** Title with link to suggest more users to follow *****/
Frm_BeginForm (ActSeeSocPrf);
HTM_BUTTON_SUBMIT_Begin (Txt_Who_to_follow,"BT_LINK CONNECTED_TXT",NULL);
HTM_Txt (Txt_Who_to_follow);
HTM_BUTTON_End ();
Frm_EndForm ();
/***** Title with link to suggest more users to follow *****/
Frm_BeginForm (ActSeeSocPrf);
HTM_BUTTON_SUBMIT_Begin (Txt_Who_to_follow,"BT_LINK CONNECTED_TXT",NULL);
HTM_Txt (Txt_Who_to_follow);
HTM_BUTTON_End ();
Frm_EndForm ();
/***** Begin table *****/
HTM_TABLE_Begin (NULL);
/***** Begin table *****/
HTM_TABLE_Begin (NULL);
/***** Initialize structure with user's data *****/
Usr_UsrDataConstructor (&UsrDat);
/***** Initialize structure with user's data *****/
Usr_UsrDataConstructor (&UsrDat);
/***** List users *****/
for (NumUsr = 0;
NumUsr < NumUsrs;
NumUsr++)
{
/***** Get user *****/
row = mysql_fetch_row (mysql_res);
/***** List users *****/
for (NumUsr = 0;
NumUsr < NumUsrs;
NumUsr++)
{
/***** Get user *****/
row = mysql_fetch_row (mysql_res);
/* Get user's code (row[0]) */
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
/* Get user's code (row[0]) */
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
/***** Show user *****/
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat,
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS))
Fol_WriteRowUsrToFollowOnRightColumn (&UsrDat);
}
/***** Show user *****/
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat,
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS))
Fol_WriteRowUsrToFollowOnRightColumn (&UsrDat);
}
/***** Free memory used for user's data *****/
Usr_UsrDataDestructor (&UsrDat);
/***** Free memory used for user's data *****/
Usr_UsrDataDestructor (&UsrDat);
/***** End table *****/
HTM_TABLE_End ();
/***** End table *****/
HTM_TABLE_End ();
/***** End container *****/
HTM_DIV_End ();
@ -265,9 +265,9 @@ static void Fol_PutIconToUpdateWhoToFollow (void)
extern const char *Txt_Update;
Frm_BeginForm (ActSeeSocPrf);
HTM_BUTTON_Animated_Begin (Txt_Update,"BT_LINK",NULL);
Ico_PutCalculateIcon (Txt_Update);
HTM_BUTTON_End ();
HTM_BUTTON_Animated_Begin (Txt_Update,"BT_LINK",NULL);
Ico_PutCalculateIcon (Txt_Update);
HTM_BUTTON_End ();
Frm_EndForm ();
}
@ -324,55 +324,55 @@ void Fol_ShowFollowingAndFollowers (const struct UsrData *UsrDat,
/***** Begin section *****/
HTM_SECTION_Begin (Fol_FOLLOW_SECTION_ID);
/***** Followed users *****/
HTM_DIV_Begin ("id=\"following_side\"");
HTM_DIV_Begin ("class=\"FOLLOW_SIDE\"");
/***** Followed users *****/
HTM_DIV_Begin ("id=\"following_side\"");
HTM_DIV_Begin ("class=\"FOLLOW_SIDE\"");
/* User follows me? */
HTM_DIV_Begin ("id=\"follows_me\" class=\"DAT_LIGHT\"");
if (UsrFollowsMe)
HTM_Txt (Txt_FOLLOWS_YOU);
HTM_DIV_End ();
/* User follows me? */
HTM_DIV_Begin ("id=\"follows_me\" class=\"DAT_LIGHT\"");
if (UsrFollowsMe)
HTM_Txt (Txt_FOLLOWS_YOU);
HTM_DIV_End ();
/* Number of followed */
Fol_ShowNumberOfFollowingOrFollowers (UsrDat,
NumFollowing,
ActSeeFlg,Txt_Following);
/* Number of followed */
Fol_ShowNumberOfFollowingOrFollowers (UsrDat,
NumFollowing,
ActSeeFlg,Txt_Following);
/* End following side */
HTM_DIV_End ();
HTM_DIV_End ();
/* End following side */
HTM_DIV_End ();
HTM_DIV_End ();
/***** Followers *****/
HTM_DIV_Begin ("id=\"followers_side\"");
HTM_DIV_Begin ("class=\"FOLLOW_SIDE\"");
/***** Followers *****/
HTM_DIV_Begin ("id=\"followers_side\"");
HTM_DIV_Begin ("class=\"FOLLOW_SIDE\"");
/* Number of followers */
Fol_ShowNumberOfFollowingOrFollowers (UsrDat,
NumFollowers,
ActSeeFlr,Txt_Followers);
/* Number of followers */
Fol_ShowNumberOfFollowingOrFollowers (UsrDat,
NumFollowers,
ActSeeFlr,Txt_Followers);
/* I follow user? */
HTM_DIV_Begin ("id=\"follow_usr\"");
if (Gbl.Usrs.Me.Logged && // Logged
!ItsMe) // Not me!
{
Frm_BeginForm (IFollowUsr ? ActUnfUsr :
ActFolUsr);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,
IFollowUsr ? "user-check.svg" :
"user-plus.svg",
IFollowUsr ? Txt_Following_unfollow :
Txt_Follow,
"ICO_HIGHLIGHT ICO40x40");
Frm_EndForm ();
}
HTM_DIV_End ();
/* I follow user? */
HTM_DIV_Begin ("id=\"follow_usr\"");
if (Gbl.Usrs.Me.Logged && // Logged
!ItsMe) // Not me!
{
Frm_BeginForm (IFollowUsr ? ActUnfUsr :
ActFolUsr);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,
IFollowUsr ? "user-check.svg" :
"user-plus.svg",
IFollowUsr ? Txt_Following_unfollow :
Txt_Follow,
"ICO_HIGHLIGHT ICO40x40");
Frm_EndForm ();
}
HTM_DIV_End ();
/* End followers side */
HTM_DIV_End ();
HTM_DIV_End ();
/* End followers side */
HTM_DIV_End ();
HTM_DIV_End ();
/***** End section *****/
HTM_SECTION_End ();
@ -395,50 +395,50 @@ static void Fol_ShowNumberOfFollowingOrFollowers (const struct UsrData *UsrDat,
/***** Begin container *****/
HTM_DIV_Begin ("class=\"FOLLOW_BOX\"");
/***** Number *****/
if (NumUsrs)
{
/* Form to list users */
Frm_BeginFormAnchor (Action,Fol_FOLLOW_SECTION_ID);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
HTM_BUTTON_SUBMIT_Begin (Title,
(Gbl.Action.Act == Action) ? "BT_LINK FOLLOW_NUM_B" :
"BT_LINK FOLLOW_NUM",
NULL);
}
else
HTM_SPAN_Begin ("class=\"%s\"",(Gbl.Action.Act == Action) ? "FOLLOW_NUM_B" :
"FOLLOW_NUM");
HTM_Unsigned (NumUsrs);
if (NumUsrs)
{
HTM_BUTTON_End ();
Frm_EndForm ();
}
else
HTM_SPAN_End ();
/***** Number *****/
if (NumUsrs)
{
/* Form to list users */
Frm_BeginFormAnchor (Action,Fol_FOLLOW_SECTION_ID);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
HTM_BUTTON_SUBMIT_Begin (Title,
(Gbl.Action.Act == Action) ? "BT_LINK FOLLOW_NUM_B" :
"BT_LINK FOLLOW_NUM",
NULL);
}
else
HTM_SPAN_Begin ("class=\"%s\"",(Gbl.Action.Act == Action) ? "FOLLOW_NUM_B" :
"FOLLOW_NUM");
HTM_Unsigned (NumUsrs);
if (NumUsrs)
{
HTM_BUTTON_End ();
Frm_EndForm ();
}
else
HTM_SPAN_End ();
/***** Text *****/
HTM_DIV_Begin ("class=\"%s\"",
(Gbl.Action.Act == Action) ? The_ClassFormOutBoxBold[Gbl.Prefs.Theme] :
The_ClassFormOutBox [Gbl.Prefs.Theme]);
if (NumUsrs)
{
/* Form to list users */
Frm_BeginFormAnchor (Action,Fol_FOLLOW_SECTION_ID);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
HTM_BUTTON_SUBMIT_Begin (Title,
(Gbl.Action.Act == Action) ? The_ClassFormLinkOutBoxBold[Gbl.Prefs.Theme] :
The_ClassFormLinkOutBox [Gbl.Prefs.Theme],
NULL);
}
HTM_Txt (Title);
if (NumUsrs)
{
HTM_BUTTON_End ();
Frm_EndForm ();
}
HTM_DIV_End ();
/***** Text *****/
HTM_DIV_Begin ("class=\"%s\"",
(Gbl.Action.Act == Action) ? The_ClassFormOutBoxBold[Gbl.Prefs.Theme] :
The_ClassFormOutBox [Gbl.Prefs.Theme]);
if (NumUsrs)
{
/* Form to list users */
Frm_BeginFormAnchor (Action,Fol_FOLLOW_SECTION_ID);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
HTM_BUTTON_SUBMIT_Begin (Title,
(Gbl.Action.Act == Action) ? The_ClassFormLinkOutBoxBold[Gbl.Prefs.Theme] :
The_ClassFormLinkOutBox [Gbl.Prefs.Theme],
NULL);
}
HTM_Txt (Title);
if (NumUsrs)
{
HTM_BUTTON_End ();
Frm_EndForm ();
}
HTM_DIV_End ();
/***** End container *****/
HTM_DIV_End ();
@ -490,24 +490,24 @@ static void Fol_ListFollowingUsr (struct UsrData *UsrDat)
NULL,NULL,
NULL,Box_NOT_CLOSABLE,2);
for (NumUsr = 0;
NumUsr < NumUsrs;
NumUsr++)
{
/***** Get user's code *****/
FollowingUsrDat.UsrCod = DB_GetNextCode (mysql_res);
for (NumUsr = 0;
NumUsr < NumUsrs;
NumUsr++)
{
/***** Get user's code *****/
FollowingUsrDat.UsrCod = DB_GetNextCode (mysql_res);
/***** Show user *****/
if ((NumUsr % Fol_NUM_COLUMNS_FOLLOW) == 0)
HTM_TR_Begin (NULL);
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&FollowingUsrDat,
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS))
Fol_ShowFollowedOrFollower (&FollowingUsrDat);
if ((NumUsr % Fol_NUM_COLUMNS_FOLLOW) == (Fol_NUM_COLUMNS_FOLLOW-1) ||
NumUsr == NumUsrs - 1)
HTM_TR_End ();
}
/***** Show user *****/
if ((NumUsr % Fol_NUM_COLUMNS_FOLLOW) == 0)
HTM_TR_Begin (NULL);
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&FollowingUsrDat,
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS))
Fol_ShowFollowedOrFollower (&FollowingUsrDat);
if ((NumUsr % Fol_NUM_COLUMNS_FOLLOW) == (Fol_NUM_COLUMNS_FOLLOW-1) ||
NumUsr == NumUsrs - 1)
HTM_TR_End ();
}
/***** End table and box *****/
Box_BoxTableEnd ();
@ -649,10 +649,10 @@ static void Fol_ShowFollowedOrFollower (struct UsrData *UsrDat)
if (Fol_DB_CheckUsrIsFollowerOf (Gbl.Usrs.Me.UsrDat.UsrCod,
UsrDat->UsrCod)) // I follow user
/* Form to unfollow */
Fol_PutIconToUnfollow (UsrDat);
Fol_PutIconToUnfollow (UsrDat->EnUsrCod);
else if (Visible) // I do not follow this user and I can follow
/* Form to follow */
Fol_PutIconToFollow (UsrDat);
Fol_PutIconToFollow (UsrDat->EnUsrCod);
}
HTM_TD_End ();
@ -705,10 +705,10 @@ static void Fol_WriteRowUsrToFollowOnRightColumn (struct UsrData *UsrDat)
if (Fol_DB_CheckUsrIsFollowerOf (Gbl.Usrs.Me.UsrDat.UsrCod,
UsrDat->UsrCod)) // I follow user
/* Form to unfollow */
Fol_PutIconToUnfollow (UsrDat);
Fol_PutIconToUnfollow (UsrDat->EnUsrCod);
else if (Visible) // I do not follow this user and I can follow
/* Form to follow */
Fol_PutIconToFollow (UsrDat);
Fol_PutIconToFollow (UsrDat->EnUsrCod);
}
HTM_TD_End ();
@ -725,7 +725,7 @@ static void Fol_PutInactiveIconToFollowUnfollow (void)
{
/***** Inactive icon to follow/unfollow *****/
HTM_DIV_Begin ("class=\"FOLLOW_USR_ICO ICO_HIDDEN\"");
Ico_PutIcon ("user.svg","","ICO16x16");
Ico_PutIcon ("user.svg","","ICO16x16");
HTM_DIV_End ();
}
@ -733,15 +733,15 @@ static void Fol_PutInactiveIconToFollowUnfollow (void)
/*********************** Put icon to follow another user *********************/
/*****************************************************************************/
static void Fol_PutIconToFollow (struct UsrData *UsrDat)
static void Fol_PutIconToFollow (const char EncryptedUsrCod[Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1])
{
extern const char *Txt_Follow;
/***** Form to unfollow *****/
Frm_BeginForm (ActFolUsr);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-plus.svg",
Txt_Follow,"FOLLOW_USR_ICO ICO_HIGHLIGHT ICO16x16");
Usr_PutParamUsrCodEncrypted (EncryptedUsrCod);
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-plus.svg",
Txt_Follow,"FOLLOW_USR_ICO ICO_HIGHLIGHT ICO16x16");
Frm_EndForm ();
}
@ -749,15 +749,15 @@ static void Fol_PutIconToFollow (struct UsrData *UsrDat)
/********************** Put icon to unfollow another user ********************/
/*****************************************************************************/
static void Fol_PutIconToUnfollow (struct UsrData *UsrDat)
static void Fol_PutIconToUnfollow (const char EncryptedUsrCod[Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1])
{
extern const char *Txt_Unfollow;
/* Form to follow */
Frm_BeginForm (ActUnfUsr);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-check.svg",
Txt_Unfollow,"FOLLOW_USR_ICO ICO_HIGHLIGHT ICO16x16");
Usr_PutParamUsrCodEncrypted (EncryptedUsrCod);
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-check.svg",
Txt_Unfollow,"FOLLOW_USR_ICO ICO_HIGHLIGHT ICO16x16");
Frm_EndForm ();
}

View File

@ -123,7 +123,6 @@ unsigned Gam_DB_GetListGames (MYSQL_RES **mysql_res,Gam_Order_t SelectedOrder)
"gam_games.Title DESC",
[Gam_ORDER_BY_TITLE ] = "gam_games.Title",
};
;
char *HiddenSubQuery;
unsigned NumGames;

View File

@ -298,7 +298,8 @@ unsigned Ins_DB_GetFullListOfInssInCty (MYSQL_RES **mysql_res,long CtyCod)
static const char *OrderBySubQuery[Ins_NUM_ORDERS] =
{
[Ins_ORDER_BY_INSTITUTION] = "FullName",
[Ins_ORDER_BY_NUM_USRS ] = "NumUsrs DESC,FullName",
[Ins_ORDER_BY_NUM_USRS ] = "NumUsrs DESC,"
"FullName",
};
/***** Get institutions from database *****/

View File

@ -1788,11 +1788,11 @@ static void Msg_ShowFormSelectCourseSentOrRecMsgs (const struct Msg_Messages *Me
extern const char *Txt_Messages_received_from_A_COURSE;
extern const char *Txt_Messages_sent_from_A_COURSE;
extern const char *Txt_any_course;
const char *TxtSelector[Msg_NUM_TYPES_OF_MSGS] =
static const char **TxtSelector[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_WRITING ] = NULL,
[Msg_RECEIVED] = Txt_Messages_received_from_A_COURSE,
[Msg_SENT ] = Txt_Messages_sent_from_A_COURSE
[Msg_RECEIVED] = &Txt_Messages_received_from_A_COURSE,
[Msg_SENT ] = &Txt_Messages_sent_from_A_COURSE
};
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -1815,7 +1815,7 @@ static void Msg_ShowFormSelectCourseSentOrRecMsgs (const struct Msg_Messages *Me
/***** Course selection *****/
HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
HTM_TxtF ("%s&nbsp;",TxtSelector[Messages->TypeOfMessages]);
HTM_TxtF ("%s&nbsp;",*TxtSelector[Messages->TypeOfMessages]);
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,
"name=\"FilterCrsCod\"");
@ -1855,11 +1855,11 @@ static void Msg_ShowFormToFilterMsgs (const struct Msg_Messages *Messages)
extern const char *Txt_MSG_From;
extern const char *Txt_MSG_To;
extern const char *Txt_MSG_Content;
const char *TxtFromTo[Msg_NUM_TYPES_OF_MSGS] =
static const char **TxtFromTo[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_WRITING ] = NULL,
[Msg_RECEIVED] = Txt_MSG_From,
[Msg_SENT ] = Txt_MSG_To
[Msg_RECEIVED] = &Txt_MSG_From,
[Msg_SENT ] = &Txt_MSG_To
};
/***** Begin table *****/
@ -1870,7 +1870,7 @@ static void Msg_ShowFormToFilterMsgs (const struct Msg_Messages *Messages)
/***** Filter authors/recipients *****/
HTM_TD_Begin ("class=\"LM\"");
HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
HTM_TxtColonNBSP (TxtFromTo[Messages->TypeOfMessages]);
HTM_TxtColonNBSP (*TxtFromTo[Messages->TypeOfMessages]);
HTM_INPUT_SEARCH ("FilterFromTo",Usr_MAX_CHARS_FIRSTNAME_OR_SURNAME * 3,
Messages->FilterFromTo,
"size=\"20\"");

View File

@ -552,7 +552,7 @@ static void Prf_ShowNumFilesCurrentlyPublished (const struct UsrData *UsrDat)
Prf_BeginListItem (Txt_Files_uploaded,"file.svg");
HTM_TxtF ("%u&nbsp;%s",NumFiles,(NumFiles == 1) ? Txt_file :
Txt_files);
Txt_files);
HTM_NBSP ();
HTM_Txt ("(");
HTM_TxtF ("%u&nbsp;%s",NumPublicFiles,Txt_public_FILES);

View File

@ -114,22 +114,22 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Hie
extern const char *Txt_documents_in_my_courses;
extern const char *Txt_open_documents;
extern const char *Txt_Search;
const char *Titles[Sch_NUM_WHAT_TO_SEARCH] =
static const char **Titles[Sch_NUM_WHAT_TO_SEARCH] =
{
[Sch_SEARCH_UNKNOWN ] = "",
[Sch_SEARCH_ALL ] = Txt_all,
[Sch_SEARCH_COUNTRIES ] = Txt_countries,
[Sch_SEARCH_INSTITS ] = Txt_institutions,
[Sch_SEARCH_CENTERS ] = Txt_centers,
[Sch_SEARCH_DEGREES ] = Txt_degrees,
[Sch_SEARCH_COURSES ] = Txt_courses,
[Sch_SEARCH_USERS ] = Txt_users[Usr_SEX_UNKNOWN],
[Sch_SEARCH_TEACHERS ] = Txt_ROLES_PLURAL_abc[Rol_TCH][Usr_SEX_UNKNOWN],
[Sch_SEARCH_STUDENTS ] = Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_UNKNOWN],
[Sch_SEARCH_GUESTS ] = Txt_ROLES_PLURAL_abc[Rol_GST][Usr_SEX_UNKNOWN],
[Sch_SEARCH_OPEN_DOCUMENTS ] = Txt_open_documents,
[Sch_SEARCH_DOCUM_IN_MY_COURSES] = Txt_documents_in_my_courses,
[Sch_SEARCH_MY_DOCUMENTS ] = Txt_my_documents,
[Sch_SEARCH_UNKNOWN ] = NULL,
[Sch_SEARCH_ALL ] = &Txt_all,
[Sch_SEARCH_COUNTRIES ] = &Txt_countries,
[Sch_SEARCH_INSTITS ] = &Txt_institutions,
[Sch_SEARCH_CENTERS ] = &Txt_centers,
[Sch_SEARCH_DEGREES ] = &Txt_degrees,
[Sch_SEARCH_COURSES ] = &Txt_courses,
[Sch_SEARCH_USERS ] = &Txt_users[0],
[Sch_SEARCH_TEACHERS ] = &Txt_ROLES_PLURAL_abc[Rol_TCH][0],
[Sch_SEARCH_STUDENTS ] = &Txt_ROLES_PLURAL_abc[Rol_STD][0],
[Sch_SEARCH_GUESTS ] = &Txt_ROLES_PLURAL_abc[Rol_GST][0],
[Sch_SEARCH_OPEN_DOCUMENTS ] = &Txt_open_documents,
[Sch_SEARCH_DOCUM_IN_MY_COURSES] = &Txt_documents_in_my_courses,
[Sch_SEARCH_MY_DOCUMENTS ] = &Txt_my_documents,
};
Sch_WhatToSearch_t WhatToSearch;
unsigned WTS;
@ -178,7 +178,7 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Hie
WTS = (unsigned) WhatToSearch;
HTM_OPTION (HTM_Type_UNSIGNED,&WTS,
Gbl.Search.WhatToSearch == WhatToSearch,false,
"%s",Titles[WhatToSearch]);
"%s",*Titles[WhatToSearch]);
}
HTM_SELECT_End ();
HTM_LABEL_End ();

View File

@ -305,28 +305,28 @@ static void Tml_Usr_PutDisabledIconFavSha (Tml_Usr_FavSha_t FavSha,
[Tml_Usr_FAV_UNF_COMM] = Tml_Fav_ICON_FAV,
[Tml_Usr_SHA_UNS_NOTE] = Tml_Sha_ICON_SHARE,
};
const char *TitleWithUsrs[Tml_Usr_NUM_FAV_SHA] =
static const char **TitleWithUsrs[Tml_Usr_NUM_FAV_SHA] =
{
[Tml_Usr_FAV_UNF_NOTE] = Txt_TIMELINE_Favourited_by_X_USERS,
[Tml_Usr_FAV_UNF_COMM] = Txt_TIMELINE_Favourited_by_X_USERS,
[Tml_Usr_SHA_UNS_NOTE] = Txt_TIMELINE_Shared_by_X_USERS,
[Tml_Usr_FAV_UNF_NOTE] = &Txt_TIMELINE_Favourited_by_X_USERS,
[Tml_Usr_FAV_UNF_COMM] = &Txt_TIMELINE_Favourited_by_X_USERS,
[Tml_Usr_SHA_UNS_NOTE] = &Txt_TIMELINE_Shared_by_X_USERS,
};
const char *TitleWithoutUsrs[Tml_Usr_NUM_FAV_SHA] =
static const char **TitleWithoutUsrs[Tml_Usr_NUM_FAV_SHA] =
{
[Tml_Usr_FAV_UNF_NOTE] = Txt_TIMELINE_Not_favourited_by_anyone,
[Tml_Usr_FAV_UNF_COMM] = Txt_TIMELINE_Not_favourited_by_anyone,
[Tml_Usr_SHA_UNS_NOTE] = Txt_TIMELINE_Not_shared_by_anyone,
[Tml_Usr_FAV_UNF_NOTE] = &Txt_TIMELINE_Not_favourited_by_anyone,
[Tml_Usr_FAV_UNF_COMM] = &Txt_TIMELINE_Not_favourited_by_anyone,
[Tml_Usr_SHA_UNS_NOTE] = &Txt_TIMELINE_Not_shared_by_anyone,
};
/***** Disabled icon to fav/share *****/
if (NumUsrs)
{
Ico_PutDivIcon ("TL_ICO_DISABLED",Icon[FavSha],
Str_BuildStringLong (TitleWithUsrs[FavSha],(long) NumUsrs));
Str_BuildStringLong (*TitleWithUsrs[FavSha],(long) NumUsrs));
Str_FreeString ();
}
else
Ico_PutDivIcon ("TL_ICO_DISABLED",Icon[FavSha],TitleWithoutUsrs[FavSha]);
Ico_PutDivIcon ("TL_ICO_DISABLED",Icon[FavSha],*TitleWithoutUsrs[FavSha]);
}
/*****************************************************************************/

View File

@ -5556,16 +5556,16 @@ static void Usr_PutOptionsListUsrs (const bool ICanChooseOption[Usr_LIST_USRS_NU
extern const char *Txt_Follow;
extern const char *Txt_Unfollow;
extern const char *Txt_Continue;
const char *Label[Usr_LIST_USRS_NUM_OPTIONS] =
static const char **Label[Usr_LIST_USRS_NUM_OPTIONS] =
{
[Usr_OPTION_UNKNOWN ] = NULL,
[Usr_OPTION_RECORDS ] = Txt_View_records,
[Usr_OPTION_HOMEWORK ] = Txt_View_homework,
[Usr_OPTION_ATTENDANCE] = Txt_View_attendance,
[Usr_OPTION_MESSAGE ] = Txt_Send_message,
[Usr_OPTION_EMAIL ] = Txt_Create_email_message,
[Usr_OPTION_FOLLOW ] = Txt_Follow,
[Usr_OPTION_UNFOLLOW ] = Txt_Unfollow,
[Usr_OPTION_RECORDS ] = &Txt_View_records,
[Usr_OPTION_HOMEWORK ] = &Txt_View_homework,
[Usr_OPTION_ATTENDANCE] = &Txt_View_attendance,
[Usr_OPTION_MESSAGE ] = &Txt_Send_message,
[Usr_OPTION_EMAIL ] = &Txt_Create_email_message,
[Usr_OPTION_FOLLOW ] = &Txt_Follow,
[Usr_OPTION_UNFOLLOW ] = &Txt_Unfollow,
};
Usr_ListUsrsOption_t Opt;
@ -5581,7 +5581,7 @@ static void Usr_PutOptionsListUsrs (const bool ICanChooseOption[Usr_LIST_USRS_NU
Opt <= (Usr_ListUsrsOption_t) (Usr_LIST_USRS_NUM_OPTIONS - 1);
Opt++)
if (ICanChooseOption[Opt])
Usr_ShowOneListUsrsOption (Opt,Label[Opt]);
Usr_ShowOneListUsrsOption (Opt,*Label[Opt]);
/* End list of options */
HTM_UL_End ();