Version 21.56.5: Nov 10, 2021 Code refactoring in switch statements.

This commit is contained in:
acanas 2021-11-10 23:05:08 +01:00
parent f9b4ab100b
commit 17e63e751c
15 changed files with 283 additions and 457 deletions

View File

@ -42,6 +42,7 @@
#define Act_MAX_CHARS_ACTION_TXT (256 - 1) // 255 #define Act_MAX_CHARS_ACTION_TXT (256 - 1) // 255
#define Act_MAX_BYTES_ACTION_TXT Act_MAX_CHARS_ACTION_TXT // 255 #define Act_MAX_BYTES_ACTION_TXT Act_MAX_CHARS_ACTION_TXT // 255
#define Act_NUM_CONTENTS 2
typedef enum typedef enum
{ {
Act_CONT_NORM, Act_CONT_NORM,

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. 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.4 (2021-11-10)" #define Log_PLATFORM_VERSION "SWAD 21.56.5 (2021-11-10)"
#define CSS_FILE "swad20.45.css" #define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.69.1.js" #define JS_FILE "swad20.69.1.js"
/* /*
TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 21.56.5: Nov 10, 2021 Code refactoring in switch statements. (319181 lines)
Version 21.56.4: Nov 10, 2021 Code refactoring in switch statements (until swad_network_database.c). (319362 lines) Version 21.56.4: Nov 10, 2021 Code refactoring in switch statements (until swad_network_database.c). (319362 lines)
Version 21.56.3: Nov 10, 2021 Code refactoring in switch statements (until swad_logo.c). (319403 lines) Version 21.56.3: Nov 10, 2021 Code refactoring in switch statements (until swad_logo.c). (319403 lines)
Version 21.56.2: Nov 10, 2021 Code refactoring in pointers to text. (319501 lines) Version 21.56.2: Nov 10, 2021 Code refactoring in pointers to text. (319501 lines)

View File

@ -161,12 +161,28 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
extern const char *Txt_New_nickname; extern const char *Txt_New_nickname;
extern const char *Txt_Change_nickname; extern const char *Txt_Change_nickname;
extern const char *Txt_Save_changes; extern const char *Txt_Save_changes;
static const struct
{
Act_Action_t Remove;
Act_Action_t Change;
} NextAction[Rol_NUM_ROLES] =
{
[Rol_UNK ] = {ActRemOldNicOth,ActChgNicOth},
[Rol_GST ] = {ActRemOldNicOth,ActChgNicOth},
[Rol_USR ] = {ActRemOldNicOth,ActChgNicOth},
[Rol_STD ] = {ActRemOldNicStd,ActChgNicStd},
[Rol_NET ] = {ActRemOldNicTch,ActChgNicTch},
[Rol_TCH ] = {ActRemOldNicTch,ActChgNicTch},
[Rol_DEG_ADM] = {ActRemOldNicOth,ActChgNicOth},
[Rol_CTR_ADM] = {ActRemOldNicOth,ActChgNicOth},
[Rol_INS_ADM] = {ActRemOldNicOth,ActChgNicOth},
[Rol_SYS_ADM] = {ActRemOldNicOth,ActChgNicOth},
};
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1]; char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
unsigned NumNicks; unsigned NumNicks;
unsigned NumNick; unsigned NumNick;
Act_Action_t NextAction;
char NickWithArr[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; char NickWithArr[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1];
const struct UsrData *UsrDat = (ItsMe ? &Gbl.Usrs.Me.UsrDat : const struct UsrData *UsrDat = (ItsMe ? &Gbl.Usrs.Me.UsrDat :
&Gbl.Usrs.Other.UsrDat); &Gbl.Usrs.Other.UsrDat);
@ -206,11 +222,11 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
/* The first nickname is the current one */ /* The first nickname is the current one */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Label */ /* Label */
Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Current_nickname); Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Current_nickname);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT USR_ID\""); HTM_TD_Begin ("class=\"REC_C2_BOT LT USR_ID\"");
} }
else // NumNick >= 2 else // NumNick >= 2
{ {
@ -218,11 +234,11 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
{ {
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Label */ /* Label */
Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Other_nicknames); Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Other_nicknames);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT DAT\""); HTM_TD_Begin ("class=\"REC_C2_BOT LT DAT\"");
} }
/* Form to remove old nickname */ /* Form to remove old nickname */
@ -230,23 +246,8 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
Ico_PutContextualIconToRemove (ActRemMyNck,Nck_NICKNAME_SECTION_ID, Ico_PutContextualIconToRemove (ActRemMyNck,Nck_NICKNAME_SECTION_ID,
Nck_PutParamsRemoveMyNick,row[0]); Nck_PutParamsRemoveMyNick,row[0]);
else else
{ Ico_PutContextualIconToRemove (NextAction[UsrDat->Roles.InCurrentCrs].Remove,Nck_NICKNAME_SECTION_ID,
switch (UsrDat->Roles.InCurrentCrs)
{
case Rol_STD:
NextAction = ActRemOldNicStd;
break;
case Rol_NET:
case Rol_TCH:
NextAction = ActRemOldNicTch;
break;
default: // Guest, user or admin
NextAction = ActRemOldNicOth;
break;
}
Ico_PutContextualIconToRemove (NextAction,Nck_NICKNAME_SECTION_ID,
Nck_PutParamsRemoveOtherNick,row[0]); Nck_PutParamsRemoveOtherNick,row[0]);
}
} }
/* Nickname */ /* Nickname */
@ -265,33 +266,20 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
Frm_BeginFormAnchor (ActChgMyNck,Nck_NICKNAME_SECTION_ID); Frm_BeginFormAnchor (ActChgMyNck,Nck_NICKNAME_SECTION_ID);
else else
{ {
switch (UsrDat->Roles.InCurrentCrs) Frm_BeginFormAnchor (NextAction[UsrDat->Roles.InCurrentCrs].Change,Nck_NICKNAME_SECTION_ID);
{
case Rol_STD:
NextAction = ActChgNicStd;
break;
case Rol_NET:
case Rol_TCH:
NextAction = ActChgNicTch;
break;
default: // Guest, user or admin
NextAction = ActChgNicOth;
break;
}
Frm_BeginFormAnchor (NextAction,Nck_NICKNAME_SECTION_ID);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod); Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
} }
snprintf (NickWithArr,sizeof (NickWithArr),"@%s",row[0]); snprintf (NickWithArr,sizeof (NickWithArr),"@%s",row[0]);
Par_PutHiddenParamString (NULL,"NewNick",NickWithArr); // Nickname Par_PutHiddenParamString (NULL,"NewNick",NickWithArr); // Nickname
Btn_PutConfirmButtonInline (Txt_Use_this_nickname); Btn_PutConfirmButtonInline (Txt_Use_this_nickname);
Frm_EndForm (); Frm_EndForm ();
} }
if (NumNick == 1 || if (NumNick == 1 ||
NumNick == NumNicks) NumNick == NumNicks)
{ {
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();
} }
else else
@ -304,7 +292,7 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
/* Label */ /* Label */
Frm_LabelColumn ("REC_C1_BOT RT","NewNick", Frm_LabelColumn ("REC_C1_BOT RT","NewNick",
NumNicks ? Txt_New_nickname : // A new nickname NumNicks ? Txt_New_nickname : // A new nickname
Txt_Nickname); // The first nickname Txt_Nickname); // The first nickname
/* Data */ /* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT DAT\""); HTM_TD_Begin ("class=\"REC_C2_BOT LT DAT\"");
@ -312,20 +300,7 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
Frm_BeginFormAnchor (ActChgMyNck,Nck_NICKNAME_SECTION_ID); Frm_BeginFormAnchor (ActChgMyNck,Nck_NICKNAME_SECTION_ID);
else else
{ {
switch (UsrDat->Roles.InCurrentCrs) Frm_BeginFormAnchor (NextAction[UsrDat->Roles.InCurrentCrs].Change,Nck_NICKNAME_SECTION_ID);
{
case Rol_STD:
NextAction = ActChgNicStd;
break;
case Rol_NET:
case Rol_TCH:
NextAction = ActChgNicTch;
break;
default: // Guest, user or admin
NextAction = ActChgNicOth;
break;
}
Frm_BeginFormAnchor (NextAction,Nck_NICKNAME_SECTION_ID);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod); Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
} }
snprintf (NickWithArr,sizeof (NickWithArr),"@%s", snprintf (NickWithArr,sizeof (NickWithArr),"@%s",

View File

@ -909,51 +909,27 @@ void Ntf_GetNotifSummaryAndContent (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
void Ntf_MarkNotifOneFileAsRemoved (const char *Path) void Ntf_MarkNotifOneFileAsRemoved (const char *Path)
{ {
extern const Brw_FileBrowser_t Brw_DB_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER]; extern const Brw_FileBrowser_t Brw_DB_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER];
static const Ntf_NotifyEvent_t NotifyEvent[Brw_NUM_TYPES_FILE_BROWSER] =
{
[Brw_ADMI_DOC_CRS] = Ntf_EVENT_DOCUMENT_FILE,
[Brw_ADMI_DOC_GRP] = Ntf_EVENT_DOCUMENT_FILE,
[Brw_ADMI_TCH_CRS] = Ntf_EVENT_TEACHERS_FILE,
[Brw_ADMI_TCH_GRP] = Ntf_EVENT_TEACHERS_FILE,
[Brw_ADMI_SHR_CRS] = Ntf_EVENT_SHARED_FILE,
[Brw_ADMI_SHR_GRP] = Ntf_EVENT_SHARED_FILE,
[Brw_ADMI_MRK_CRS] = Ntf_EVENT_MARKS_FILE,
[Brw_ADMI_MRK_GRP] = Ntf_EVENT_MARKS_FILE,
};
Brw_FileBrowser_t FileBrowser = Brw_DB_FileBrowserForDB_files[Gbl.FileBrowser.Type]; Brw_FileBrowser_t FileBrowser = Brw_DB_FileBrowserForDB_files[Gbl.FileBrowser.Type];
long FilCod; long FilCod;
Ntf_NotifyEvent_t NotifyEvent;
switch (FileBrowser) if (NotifyEvent[FileBrowser])
{ {
case Brw_ADMI_DOC_CRS: /***** Get file code *****/
case Brw_ADMI_DOC_GRP: FilCod = Brw_DB_GetFilCodByPath (Path,false); // Any file, public or not
case Brw_ADMI_TCH_CRS: if (FilCod > 0)
case Brw_ADMI_TCH_GRP: /***** Set notification as removed *****/
case Brw_ADMI_SHR_CRS: Ntf_DB_MarkNotifAsRemoved (NotifyEvent[FileBrowser],FilCod);
case Brw_ADMI_SHR_GRP:
case Brw_ADMI_MRK_CRS:
case Brw_ADMI_MRK_GRP:
/***** Get file code *****/
FilCod = Brw_DB_GetFilCodByPath (Path,false); // Any file, public or not
if (FilCod > 0)
{
/***** Set notification as removed *****/
switch (FileBrowser)
{
case Brw_ADMI_DOC_CRS:
case Brw_ADMI_DOC_GRP:
NotifyEvent = Ntf_EVENT_DOCUMENT_FILE;
break;
case Brw_ADMI_TCH_CRS:
case Brw_ADMI_TCH_GRP:
NotifyEvent = Ntf_EVENT_TEACHERS_FILE;
break;
case Brw_ADMI_SHR_CRS:
case Brw_ADMI_SHR_GRP:
NotifyEvent = Ntf_EVENT_SHARED_FILE;
break;
case Brw_ADMI_MRK_CRS:
case Brw_ADMI_MRK_GRP:
NotifyEvent = Ntf_EVENT_MARKS_FILE;
break;
default:
return;
}
Ntf_DB_MarkNotifAsRemoved (NotifyEvent,FilCod);
}
break;
default:
break;
} }
} }
@ -964,48 +940,24 @@ void Ntf_MarkNotifOneFileAsRemoved (const char *Path)
void Ntf_MarkNotifChildrenOfFolderAsRemoved (const char *Path) void Ntf_MarkNotifChildrenOfFolderAsRemoved (const char *Path)
{ {
extern const Brw_FileBrowser_t Brw_DB_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER]; extern const Brw_FileBrowser_t Brw_DB_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER];
Brw_FileBrowser_t FileBrowser = Brw_DB_FileBrowserForDB_files[Gbl.FileBrowser.Type]; static const Ntf_NotifyEvent_t NotifyEvent[Brw_NUM_TYPES_FILE_BROWSER] =
Ntf_NotifyEvent_t NotifyEvent;
switch (FileBrowser)
{ {
case Brw_ADMI_DOC_CRS: [Brw_ADMI_DOC_CRS] = Ntf_EVENT_DOCUMENT_FILE,
case Brw_ADMI_DOC_GRP: [Brw_ADMI_DOC_GRP] = Ntf_EVENT_DOCUMENT_FILE,
case Brw_ADMI_TCH_CRS: [Brw_ADMI_TCH_CRS] = Ntf_EVENT_TEACHERS_FILE,
case Brw_ADMI_TCH_GRP: [Brw_ADMI_TCH_GRP] = Ntf_EVENT_TEACHERS_FILE,
case Brw_ADMI_SHR_CRS: [Brw_ADMI_SHR_CRS] = Ntf_EVENT_SHARED_FILE,
case Brw_ADMI_SHR_GRP: [Brw_ADMI_SHR_GRP] = Ntf_EVENT_SHARED_FILE,
case Brw_ADMI_MRK_CRS: [Brw_ADMI_MRK_CRS] = Ntf_EVENT_MARKS_FILE,
case Brw_ADMI_MRK_GRP: [Brw_ADMI_MRK_GRP] = Ntf_EVENT_MARKS_FILE,
/***** Set notification as removed *****/ };
switch (FileBrowser) Brw_FileBrowser_t FileBrowser = Brw_DB_FileBrowserForDB_files[Gbl.FileBrowser.Type];
{
case Brw_ADMI_DOC_CRS: if (NotifyEvent[FileBrowser])
case Brw_ADMI_DOC_GRP: /***** Set notification as removed *****/
NotifyEvent = Ntf_EVENT_DOCUMENT_FILE; Ntf_DB_MarkNotifChildrenOfFolderAsRemoved (NotifyEvent[FileBrowser],FileBrowser,
break; Brw_GetCodForFileBrowser (),
case Brw_ADMI_TCH_CRS: Path);
case Brw_ADMI_TCH_GRP:
NotifyEvent = Ntf_EVENT_TEACHERS_FILE;
break;
case Brw_ADMI_SHR_CRS:
case Brw_ADMI_SHR_GRP:
NotifyEvent = Ntf_EVENT_SHARED_FILE;
break;
case Brw_ADMI_MRK_CRS:
case Brw_ADMI_MRK_GRP:
NotifyEvent = Ntf_EVENT_MARKS_FILE;
break;
default:
return;
}
Ntf_DB_MarkNotifChildrenOfFolderAsRemoved (NotifyEvent,FileBrowser,
Brw_GetCodForFileBrowser (),
Path);
break;
default:
break;
}
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1016,6 +968,29 @@ void Ntf_MarkNotifChildrenOfFolderAsRemoved (const char *Path)
unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod) unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
{ {
static unsigned (*GetUsrsBrowser[Brw_NUM_TYPES_FILE_BROWSER]) (MYSQL_RES **mysql_res) =
{
// Notify all users in course except me
[Brw_ADMI_DOC_CRS] = Enr_DB_GetUsrsFromCurrentCrsExceptMe,
[Brw_ADMI_SHR_CRS] = Enr_DB_GetUsrsFromCurrentCrsExceptMe,
[Brw_ADMI_MRK_CRS] = Enr_DB_GetUsrsFromCurrentCrsExceptMe,
// Notify all teachers in course except me
[Brw_ADMI_TCH_CRS] = Enr_DB_GetTchsFromCurrentCrsExceptMe,
// Notify all users in group except me
[Brw_ADMI_DOC_GRP] = Grp_DB_GetUsrsFromCurrentGrpExceptMe,
[Brw_ADMI_SHR_GRP] = Grp_DB_GetUsrsFromCurrentGrpExceptMe,
[Brw_ADMI_MRK_GRP] = Grp_DB_GetUsrsFromCurrentGrpExceptMe,
// Notify all teachers in group except me
[Brw_ADMI_TCH_GRP] = Grp_DB_GetTchsFromCurrentGrpExceptMe,
};
static unsigned (*GetUsrsForum[For_NUM_TYPES_FORUM]) (MYSQL_RES **mysql_res) =
{
[For_FORUM_COURSE_USRS] = Enr_DB_GetUsrsFromCurrentCrsExceptMe,
[For_FORUM_COURSE_TCHS] = Enr_DB_GetTchsFromCurrentCrsExceptMe,
};
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
unsigned NumUsrs = 0; // Initialized to avoid warning unsigned NumUsrs = 0; // Initialized to avoid warning
unsigned NumUsr; unsigned NumUsr;
@ -1037,27 +1012,10 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
case Ntf_EVENT_TEACHERS_FILE: case Ntf_EVENT_TEACHERS_FILE:
case Ntf_EVENT_SHARED_FILE: case Ntf_EVENT_SHARED_FILE:
case Ntf_EVENT_MARKS_FILE: case Ntf_EVENT_MARKS_FILE:
switch (Gbl.FileBrowser.Type) if (GetUsrsBrowser[Gbl.FileBrowser.Type])
{ NumUsrs = GetUsrsBrowser[Gbl.FileBrowser.Type] (&mysql_res);
case Brw_ADMI_DOC_CRS: else
case Brw_ADMI_SHR_CRS: return 0;
case Brw_ADMI_MRK_CRS: // Notify all users in course except me
NumUsrs = Enr_DB_GetUsrsFromCurrentCrsExceptMe (&mysql_res);
break;
case Brw_ADMI_TCH_CRS: // Notify all teachers in course except me
NumUsrs = Enr_DB_GetTchsFromCurrentCrsExceptMe (&mysql_res);
break;
case Brw_ADMI_DOC_GRP:
case Brw_ADMI_SHR_GRP:
case Brw_ADMI_MRK_GRP: // Notify all users in group except me
NumUsrs = Grp_DB_GetUsrsFromCurrentGrpExceptMe (&mysql_res);
break;
case Brw_ADMI_TCH_GRP: // Notify all teachers in group except me
NumUsrs = Grp_DB_GetTchsFromCurrentGrpExceptMe (&mysql_res);
break;
default: // This function should not be called in other cases
return 0;
}
break; break;
case Ntf_EVENT_ASSIGNMENT: case Ntf_EVENT_ASSIGNMENT:
NumUsrs = Asg_DB_GetUsrsFromAssignmentExceptMe (&mysql_res,Cod); NumUsrs = Asg_DB_GetUsrsFromAssignmentExceptMe (&mysql_res,Cod);
@ -1096,17 +1054,10 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
// Check if forum is for users or for all users in the course // Check if forum is for users or for all users in the course
For_GetForumTypeAndLocationOfAPost (Cod,&ForumSelected); For_GetForumTypeAndLocationOfAPost (Cod,&ForumSelected);
switch (ForumSelected.Type) if (GetUsrsForum[ForumSelected.Type])
{ NumUsrs = GetUsrsForum[ForumSelected.Type] (&mysql_res);
case For_FORUM_COURSE_USRS: else
NumUsrs = Enr_DB_GetUsrsFromCurrentCrsExceptMe (&mysql_res); return 0;
break;
case For_FORUM_COURSE_TCHS:
NumUsrs = Enr_DB_GetTchsFromCurrentCrsExceptMe (&mysql_res);
break;
default:
return 0;
}
break; break;
case Ntf_EVENT_FORUM_REPLY: case Ntf_EVENT_FORUM_REPLY:
// Cod is the code of the post // Cod is the code of the post

View File

@ -214,20 +214,18 @@ List --> |Name.Start | -> |Name.Start |
void Par_CreateListOfParams (void) void Par_CreateListOfParams (void)
{ {
static void (*CreateListOfParams[Act_NUM_CONTENTS]) (void) =
{
[Act_CONT_NORM] = Par_CreateListOfParamsFromQueryString,
[Act_CONT_DATA] = Par_CreateListOfParamsFromTmpFile,
};
/***** Initialize empty list of parameters *****/ /***** Initialize empty list of parameters *****/
Gbl.Params.List = NULL; Gbl.Params.List = NULL;
/***** Get list *****/ /***** Get list *****/
if (Gbl.Params.ContentLength) if (Gbl.Params.ContentLength)
switch (Gbl.ContentReceivedByCGI) CreateListOfParams[Gbl.ContentReceivedByCGI] ();
{
case Act_CONT_NORM:
Par_CreateListOfParamsFromQueryString ();
break;
case Act_CONT_DATA:
Par_CreateListOfParamsFromTmpFile ();
break;
}
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -730,7 +730,19 @@ void Pwd_ShowFormChgOtherUsrPwd (void)
{ {
extern const char *Txt_Password; extern const char *Txt_Password;
extern const char *Txt_Change_password; extern const char *Txt_Change_password;
Act_Action_t NextAction; static const Act_Action_t NextAction[Rol_NUM_ROLES] =
{
[Rol_UNK ] = ActChgPwdOth,
[Rol_GST ] = ActChgPwdOth,
[Rol_USR ] = ActChgPwdOth,
[Rol_STD ] = ActChgPwdStd,
[Rol_NET ] = ActChgPwdTch,
[Rol_TCH ] = ActChgPwdTch,
[Rol_DEG_ADM] = ActChgPwdOth,
[Rol_CTR_ADM] = ActChgPwdOth,
[Rol_INS_ADM] = ActChgPwdOth,
[Rol_SYS_ADM] = ActChgPwdOth,
};
/***** Begin section *****/ /***** Begin section *****/
HTM_SECTION_Begin (Pwd_PASSWORD_SECTION_ID); HTM_SECTION_Begin (Pwd_PASSWORD_SECTION_ID);
@ -745,20 +757,7 @@ void Pwd_ShowFormChgOtherUsrPwd (void)
/***** Form to change password *****/ /***** Form to change password *****/
/* Begin form */ /* Begin form */
switch (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs) Frm_BeginFormAnchor (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs],Pwd_PASSWORD_SECTION_ID);
{
case Rol_STD:
NextAction = ActChgPwdStd;
break;
case Rol_NET:
case Rol_TCH:
NextAction = ActChgPwdTch;
break;
default: // Guest, user or admin
NextAction = ActChgPwdOth;
break;
}
Frm_BeginFormAnchor (NextAction,Pwd_PASSWORD_SECTION_ID);
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EnUsrCod); Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EnUsrCod);
/* New password */ /* New password */

View File

@ -177,7 +177,19 @@ void Pho_PutIconToChangeUsrPhoto (void)
bool PhotoExists; bool PhotoExists;
char PhotoURL[PATH_MAX + 1]; char PhotoURL[PATH_MAX + 1];
const char *TitleText; const char *TitleText;
Act_Action_t NextAction; static const Act_Action_t NextAction[Rol_NUM_ROLES] =
{
[Rol_UNK ] = ActReqOthPho,
[Rol_GST ] = ActReqOthPho,
[Rol_USR ] = ActReqOthPho,
[Rol_STD ] = ActReqStdPho,
[Rol_NET ] = ActReqTchPho,
[Rol_TCH ] = ActReqTchPho,
[Rol_DEG_ADM] = ActReqOthPho,
[Rol_CTR_ADM] = ActReqOthPho,
[Rol_INS_ADM] = ActReqOthPho,
[Rol_SYS_ADM] = ActReqOthPho,
};
bool ItsMe = Usr_ItsMe (Gbl.Record.UsrDat->UsrCod); bool ItsMe = Usr_ItsMe (Gbl.Record.UsrDat->UsrCod);
/***** Link for changing / uploading the photo *****/ /***** Link for changing / uploading the photo *****/
@ -196,20 +208,7 @@ void Pho_PutIconToChangeUsrPhoto (void)
PhotoExists = Pho_BuildLinkToPhoto (Gbl.Record.UsrDat,PhotoURL); PhotoExists = Pho_BuildLinkToPhoto (Gbl.Record.UsrDat,PhotoURL);
TitleText = PhotoExists ? Txt_Change_photo : TitleText = PhotoExists ? Txt_Change_photo :
Txt_Upload_photo; Txt_Upload_photo;
switch (Gbl.Record.UsrDat->Roles.InCurrentCrs) Lay_PutContextualLinkOnlyIcon (NextAction[Gbl.Record.UsrDat->Roles.InCurrentCrs],NULL,
{
case Rol_STD:
NextAction = ActReqStdPho;
break;
case Rol_NET:
case Rol_TCH:
NextAction = ActReqTchPho;
break;
default: // Guest, user or admin
NextAction = ActReqOthPho;
break;
}
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,
Rec_PutParamUsrCodEncrypted,NULL, Rec_PutParamUsrCodEncrypted,NULL,
"camera.svg", "camera.svg",
TitleText); TitleText);
@ -241,30 +240,27 @@ static void Pho_PutIconToRequestRemoveOtherUsrPhoto (__attribute__((unused)) voi
extern const char *Txt_Remove_photo; extern const char *Txt_Remove_photo;
char PhotoURL[PATH_MAX + 1]; char PhotoURL[PATH_MAX + 1];
bool PhotoExists; bool PhotoExists;
Act_Action_t NextAction; static const Act_Action_t NextAction[Rol_NUM_ROLES] =
{
[Rol_UNK ] = ActReqRemOthPho,
[Rol_GST ] = ActReqRemOthPho,
[Rol_USR ] = ActReqRemOthPho,
[Rol_STD ] = ActReqRemStdPho,
[Rol_NET ] = ActReqRemTchPho,
[Rol_TCH ] = ActReqRemTchPho,
[Rol_DEG_ADM] = ActReqRemOthPho,
[Rol_CTR_ADM] = ActReqRemOthPho,
[Rol_INS_ADM] = ActReqRemOthPho,
[Rol_SYS_ADM] = ActReqRemOthPho,
};
/***** Link to request the removal of another user's photo *****/ /***** Link to request the removal of another user's photo *****/
PhotoExists = Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL); PhotoExists = Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
if (PhotoExists) if (PhotoExists)
{ Lay_PutContextualLinkOnlyIcon (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs],NULL,
switch (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs)
{
case Rol_STD:
NextAction = ActReqRemStdPho;
break;
case Rol_NET:
case Rol_TCH:
NextAction = ActReqRemTchPho;
break;
default: // Guest, user or admin
NextAction = ActReqRemOthPho;
break;
}
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,
Usr_PutParamOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EnUsrCod, Usr_PutParamOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EnUsrCod,
"trash.svg", "trash.svg",
Txt_Remove_photo); Txt_Remove_photo);
}
} }
/*****************************************************************************/ /*****************************************************************************/
@ -306,7 +302,19 @@ static void Pho_ReqPhoto (const struct UsrData *UsrDat)
extern const char *Txt_File_with_the_photo; extern const char *Txt_File_with_the_photo;
extern const char *Txt_Upload_photo; extern const char *Txt_Upload_photo;
bool ItsMe = Usr_ItsMe (UsrDat->UsrCod); bool ItsMe = Usr_ItsMe (UsrDat->UsrCod);
Act_Action_t NextAction; static const Act_Action_t NextAction[Rol_NUM_ROLES] =
{
[Rol_UNK ] = ActDetOthPho,
[Rol_GST ] = ActDetOthPho,
[Rol_USR ] = ActDetOthPho,
[Rol_STD ] = ActDetStdPho,
[Rol_NET ] = ActDetTchPho,
[Rol_TCH ] = ActDetTchPho,
[Rol_DEG_ADM] = ActDetOthPho,
[Rol_CTR_ADM] = ActDetOthPho,
[Rol_INS_ADM] = ActDetOthPho,
[Rol_SYS_ADM] = ActDetOthPho,
};
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Txt_Photo, Box_BoxBegin (NULL,Txt_Photo,
@ -319,20 +327,7 @@ static void Pho_ReqPhoto (const struct UsrData *UsrDat)
Frm_BeginForm (ActDetMyPho); Frm_BeginForm (ActDetMyPho);
else else
{ {
switch (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs) Frm_BeginForm (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs]);
{
case Rol_STD:
NextAction = ActDetStdPho;
break;
case Rol_NET:
case Rol_TCH:
NextAction = ActDetTchPho;
break;
default: // Guest, user or admin
NextAction = ActDetOthPho;
break;
}
Frm_BeginForm (NextAction);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod); Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
} }
@ -486,7 +481,19 @@ void Pho_ReqRemoveUsrPhoto (void)
extern const char *Txt_Remove_photo; extern const char *Txt_Remove_photo;
extern const char *Txt_The_photo_no_longer_exists; extern const char *Txt_The_photo_no_longer_exists;
char PhotoURL[PATH_MAX + 1]; char PhotoURL[PATH_MAX + 1];
Act_Action_t NextAction; static const Act_Action_t NextAction[Rol_NUM_ROLES] =
{
[Rol_UNK ] = ActRemOthPho,
[Rol_GST ] = ActRemOthPho,
[Rol_USR ] = ActRemOthPho,
[Rol_STD ] = ActRemStdPho,
[Rol_NET ] = ActRemTchPho,
[Rol_TCH ] = ActRemTchPho,
[Rol_DEG_ADM] = ActRemOthPho,
[Rol_CTR_ADM] = ActRemOthPho,
[Rol_INS_ADM] = ActRemOthPho,
[Rol_SYS_ADM] = ActRemOthPho,
};
/***** Get user's code from form *****/ /***** Get user's code from form *****/
Usr_GetParamOtherUsrCodEncryptedAndGetListIDs (); Usr_GetParamOtherUsrCodEncryptedAndGetListIDs ();
@ -511,20 +518,7 @@ void Pho_ReqRemoveUsrPhoto (void)
"PHOTO186x248",Pho_NO_ZOOM,false); "PHOTO186x248",Pho_NO_ZOOM,false);
/* End alert */ /* End alert */
switch (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs) Ale_ShowAlertAndButton2 (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs],NULL,NULL,
{
case Rol_STD:
NextAction = ActRemStdPho;
break;
case Rol_NET:
case Rol_TCH:
NextAction = ActRemTchPho;
break;
default: // Guest, user or admin
NextAction = ActRemOthPho;
break;
}
Ale_ShowAlertAndButton2 (NextAction,NULL,NULL,
Usr_PutParamOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EnUsrCod, Usr_PutParamOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EnUsrCod,
Btn_REMOVE_BUTTON,Txt_Remove_photo); Btn_REMOVE_BUTTON,Txt_Remove_photo);
} }
@ -605,7 +599,19 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
unsigned Radius; unsigned Radius;
unsigned BackgroundCode; unsigned BackgroundCode;
char StrFileName[NAME_MAX + 1]; char StrFileName[NAME_MAX + 1];
Act_Action_t NextAction; static const Act_Action_t NextAction[Rol_NUM_ROLES] =
{
[Rol_UNK ] = ActUpdOthPho,
[Rol_GST ] = ActUpdOthPho,
[Rol_USR ] = ActUpdOthPho,
[Rol_STD ] = ActUpdStdPho,
[Rol_NET ] = ActUpdTchPho,
[Rol_TCH ] = ActUpdTchPho,
[Rol_DEG_ADM] = ActUpdOthPho,
[Rol_CTR_ADM] = ActUpdOthPho,
[Rol_INS_ADM] = ActUpdOthPho,
[Rol_SYS_ADM] = ActUpdOthPho,
};
char ErrorTxt[256]; char ErrorTxt[256];
/***** Creates directories if not exist *****/ /***** Creates directories if not exist *****/
@ -688,20 +694,7 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
Frm_BeginForm (ActUpdMyPho); Frm_BeginForm (ActUpdMyPho);
else else
{ {
switch (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs) Frm_BeginForm (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs]);
{
case Rol_STD:
NextAction = ActUpdStdPho;
break;
case Rol_NET:
case Rol_TCH:
NextAction = ActUpdTchPho;
break;
default: // Guest, user or admin
NextAction = ActUpdOthPho;
break;
}
Frm_BeginForm (NextAction);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod); Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
} }
Par_PutHiddenParamString (NULL,"FileName",StrFileName); Par_PutHiddenParamString (NULL,"FileName",StrFileName);
@ -1582,6 +1575,12 @@ static void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
{ {
extern const char *Hlp_ANALYTICS_Degrees; extern const char *Hlp_ANALYTICS_Degrees;
extern const char *Txt_Degrees; extern const char *Txt_Degrees;
static void (*ShowOrPrintDegrees[Set_NUM_USR_LIST_TYPES]) (struct Pho_DegPhotos *DegPhotos,
Pho_AvgPhotoSeeOrPrint_t SeeOrPrint) =
{
[Set_USR_LIST_AS_CLASS_PHOTO] = Pho_ShowOrPrintClassPhotoDegrees,
[Set_USR_LIST_AS_LISTING ] = Pho_ShowOrPrintListDegrees,
};
struct Pho_DegPhotos DegPhotos; struct Pho_DegPhotos DegPhotos;
/***** Get parameters from form *****/ /***** Get parameters from form *****/
@ -1633,17 +1632,8 @@ static void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
Pho_GetMaxStdsPerDegree (&DegPhotos); Pho_GetMaxStdsPerDegree (&DegPhotos);
/***** Draw the classphoto/list *****/ /***** Draw the classphoto/list *****/
switch (Gbl.Usrs.Me.ListType) if (ShowOrPrintDegrees[Gbl.Usrs.Me.ListType])
{ ShowOrPrintDegrees[Gbl.Usrs.Me.ListType] (&DegPhotos,SeeOrPrint);
case Set_USR_LIST_AS_CLASS_PHOTO:
Pho_ShowOrPrintClassPhotoDegrees (&DegPhotos,SeeOrPrint);
break;
case Set_USR_LIST_AS_LISTING:
Pho_ShowOrPrintListDegrees (&DegPhotos,SeeOrPrint);
break;
default:
break;
}
/***** End box *****/ /***** End box *****/
Box_BoxEnd (); Box_BoxEnd ();

View File

@ -3655,14 +3655,13 @@ static void Prj_UpdateProject (struct Prj_Project *Prj)
static bool Prj_CheckIfICanConfigAllProjects (void) static bool Prj_CheckIfICanConfigAllProjects (void)
{ {
switch (Gbl.Usrs.Me.Role.Logged) static const bool ICanConfigAllProjects[Rol_NUM_ROLES] =
{ {
case Rol_TCH: [Rol_TCH ] = true,
case Rol_SYS_ADM: [Rol_SYS_ADM] = true,
return true; };
default:
return false; return ICanConfigAllProjects[Gbl.Usrs.Me.Role.Logged];
}
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -2322,7 +2322,19 @@ static void Rec_PutIconsCommands (__attribute__((unused)) void *Args)
bool ItsMe = Usr_ItsMe (Gbl.Record.UsrDat->UsrCod); bool ItsMe = Usr_ItsMe (Gbl.Record.UsrDat->UsrCod);
bool ICanViewUsrProfile; bool ICanViewUsrProfile;
bool RecipientHasBannedMe; bool RecipientHasBannedMe;
Act_Action_t NextAction; static const Act_Action_t NextAction[Rol_NUM_ROLES] =
{
[Rol_UNK ] = ActReqMdfOth,
[Rol_GST ] = ActReqMdfOth,
[Rol_USR ] = ActReqMdfOth,
[Rol_STD ] = ActReqMdfStd,
[Rol_NET ] = ActReqMdfNET,
[Rol_TCH ] = ActReqMdfTch,
[Rol_DEG_ADM] = ActReqMdfOth,
[Rol_CTR_ADM] = ActReqMdfOth,
[Rol_INS_ADM] = ActReqMdfOth,
[Rol_SYS_ADM] = ActReqMdfOth,
};
if (!Gbl.Form.Inside && // Only if not inside another form if (!Gbl.Form.Inside && // Only if not inside another form
Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB && // Only in main browser tab Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB && // Only in main browser tab
@ -2380,27 +2392,10 @@ static void Rec_PutIconsCommands (__attribute__((unused)) void *Args)
Gbl.Usrs.Me.Role.Logged == Rol_CTR_ADM || Gbl.Usrs.Me.Role.Logged == Rol_CTR_ADM ||
Gbl.Usrs.Me.Role.Logged == Rol_INS_ADM || Gbl.Usrs.Me.Role.Logged == Rol_INS_ADM ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
{ Lay_PutContextualLinkOnlyIcon (NextAction[Gbl.Record.UsrDat->Roles.InCurrentCrs],NULL,
switch (Gbl.Record.UsrDat->Roles.InCurrentCrs)
{
case Rol_STD:
NextAction = ActReqMdfStd;
break;
case Rol_NET:
NextAction = ActReqMdfNET;
break;
case Rol_TCH:
NextAction = ActReqMdfTch;
break;
default: // Guest, user or admin
NextAction = ActReqMdfOth;
break;
}
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,
Rec_PutParamUsrCodEncrypted,NULL, Rec_PutParamUsrCodEncrypted,NULL,
"user-cog.svg", "user-cog.svg",
Txt_Administer_user); Txt_Administer_user);
}
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
{ {

View File

@ -307,18 +307,16 @@ static void Svy_ListAllSurveys (struct Svy_Surveys *Surveys)
static bool Svy_CheckIfICanCreateSvy (void) static bool Svy_CheckIfICanCreateSvy (void)
{ {
switch (Gbl.Usrs.Me.Role.Logged) static const bool ICanCreateSvy[Rol_NUM_ROLES] =
{ {
case Rol_TCH: [Rol_TCH ] = true,
case Rol_DEG_ADM: [Rol_DEG_ADM] = true,
case Rol_CTR_ADM: [Rol_CTR_ADM] = true,
case Rol_INS_ADM: [Rol_INS_ADM] = true,
case Rol_SYS_ADM: [Rol_SYS_ADM] = true,
return true; };
default:
return false; return ICanCreateSvy[Gbl.Usrs.Me.Role.Logged];
}
return false;
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -997,6 +997,11 @@ static void Syl_ChangePlaceItemSyllabus (Syl_ChangePosItem_t UpOrDownPos)
FILE *NewFile; FILE *NewFile;
unsigned NumItem; unsigned NumItem;
struct MoveSubtrees Subtree; struct MoveSubtrees Subtree;
static void (*CalculateSubtreeSyllabus[Syl_NUM_CHANGE_POS_ITEM]) (struct MoveSubtrees *Subtree,unsigned NumItem) =
{
[Syl_GET_UP ] = Syl_CalculateUpSubtreeSyllabus,
[Syl_GET_DOWN] = Syl_CalculateDownSubtreeSyllabus,
};
/***** Reset syllabus context *****/ /***** Reset syllabus context *****/
Syl_ResetSyllabus (&Syllabus); Syl_ResetSyllabus (&Syllabus);
@ -1023,15 +1028,7 @@ static void Syl_ChangePlaceItemSyllabus (Syl_ChangePosItem_t UpOrDownPos)
Fil_CreateUpdateFile (PathFile,".old",PathOldFile,PathNewFile,&NewFile); Fil_CreateUpdateFile (PathFile,".old",PathOldFile,PathNewFile,&NewFile);
/***** Get up or get down position *****/ /***** Get up or get down position *****/
switch (UpOrDownPos) CalculateSubtreeSyllabus[UpOrDownPos] (&Subtree,Syllabus.NumItem);
{
case Syl_GET_UP:
Syl_CalculateUpSubtreeSyllabus (&Subtree,Syllabus.NumItem);
break;
case Syl_GET_DOWN:
Syl_CalculateDownSubtreeSyllabus (&Subtree,Syllabus.NumItem);
break;
}
/***** Create the new XML file *****/ /***** Create the new XML file *****/
Syl_WriteStartFileSyllabus (NewFile); Syl_WriteStartFileSyllabus (NewFile);

View File

@ -35,6 +35,7 @@ typedef enum
} Syl_WhichSyllabus_t; // Which syllabus I want to see } Syl_WhichSyllabus_t; // Which syllabus I want to see
#define Syl_DEFAULT_WHICH_SYLLABUS Syl_LECTURES #define Syl_DEFAULT_WHICH_SYLLABUS Syl_LECTURES
#define Syl_NUM_CHANGE_POS_ITEM 2
typedef enum typedef enum
{ {
Syl_GET_UP, Syl_GET_UP,

View File

@ -53,6 +53,22 @@
extern struct Globals Gbl; extern struct Globals Gbl;
/*****************************************************************************/
/**************************** Private constants ******************************/
/*****************************************************************************/
static const Tml_Not_Type_t Tml_Not_NoteType[Brw_NUM_TYPES_FILE_BROWSER] =
{
[Brw_ADMI_DOC_INS] = TL_NOTE_INS_DOC_PUB_FILE,
[Brw_ADMI_SHR_INS] = TL_NOTE_INS_SHA_PUB_FILE,
[Brw_ADMI_DOC_CTR] = TL_NOTE_CTR_DOC_PUB_FILE,
[Brw_ADMI_SHR_CTR] = TL_NOTE_CTR_SHA_PUB_FILE,
[Brw_ADMI_DOC_DEG] = TL_NOTE_DEG_DOC_PUB_FILE,
[Brw_ADMI_SHR_DEG] = TL_NOTE_DEG_SHA_PUB_FILE,
[Brw_ADMI_DOC_CRS] = TL_NOTE_CRS_DOC_PUB_FILE,
[Brw_ADMI_SHR_CRS] = TL_NOTE_CRS_SHA_PUB_FILE,
};
/*****************************************************************************/ /*****************************************************************************/
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -931,57 +947,14 @@ void Tml_Not_MarkNoteOneFileAsUnavailable (const char *Path)
extern const Brw_FileBrowser_t Brw_DB_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER]; extern const Brw_FileBrowser_t Brw_DB_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER];
Brw_FileBrowser_t FileBrowser = Brw_DB_FileBrowserForDB_files[Gbl.FileBrowser.Type]; Brw_FileBrowser_t FileBrowser = Brw_DB_FileBrowserForDB_files[Gbl.FileBrowser.Type];
long FilCod; long FilCod;
Tml_Not_Type_t NoteType;
switch (FileBrowser) if (Tml_Not_NoteType[FileBrowser])
{ {
case Brw_ADMI_DOC_INS: /***** Get file code *****/
case Brw_ADMI_SHR_INS: FilCod = Brw_DB_GetFilCodByPath (Path,true); // Only if file is public
case Brw_ADMI_DOC_CTR: if (FilCod > 0)
case Brw_ADMI_SHR_CTR: /***** Mark possible note as unavailable *****/
case Brw_ADMI_DOC_DEG: Tml_DB_MarkNoteAsUnavailable (Tml_Not_NoteType[FileBrowser],FilCod);
case Brw_ADMI_SHR_DEG:
case Brw_ADMI_DOC_CRS:
case Brw_ADMI_SHR_CRS:
/***** Get file code *****/
FilCod = Brw_DB_GetFilCodByPath (Path,true); // Only if file is public
if (FilCod > 0)
{
/***** Mark possible note as unavailable *****/
switch (FileBrowser)
{
case Brw_ADMI_DOC_INS:
NoteType = TL_NOTE_INS_DOC_PUB_FILE;
break;
case Brw_ADMI_SHR_INS:
NoteType = TL_NOTE_INS_SHA_PUB_FILE;
break;
case Brw_ADMI_DOC_CTR:
NoteType = TL_NOTE_CTR_DOC_PUB_FILE;
break;
case Brw_ADMI_SHR_CTR:
NoteType = TL_NOTE_CTR_SHA_PUB_FILE;
break;
case Brw_ADMI_DOC_DEG:
NoteType = TL_NOTE_DEG_DOC_PUB_FILE;
break;
case Brw_ADMI_SHR_DEG:
NoteType = TL_NOTE_DEG_SHA_PUB_FILE;
break;
case Brw_ADMI_DOC_CRS:
NoteType = TL_NOTE_CRS_DOC_PUB_FILE;
break;
case Brw_ADMI_SHR_CRS:
NoteType = TL_NOTE_CRS_SHA_PUB_FILE;
break;
default:
return;
}
Tml_DB_MarkNoteAsUnavailable (NoteType,FilCod);
}
break;
default:
break;
} }
} }
@ -993,55 +966,11 @@ void Tml_Not_MarkNotesChildrenOfFolderAsUnavailable (const char *Path)
{ {
extern const Brw_FileBrowser_t Brw_DB_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER]; extern const Brw_FileBrowser_t Brw_DB_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER];
Brw_FileBrowser_t FileBrowser = Brw_DB_FileBrowserForDB_files[Gbl.FileBrowser.Type]; Brw_FileBrowser_t FileBrowser = Brw_DB_FileBrowserForDB_files[Gbl.FileBrowser.Type];
Tml_Not_Type_t NoteType;
switch (FileBrowser) if (Tml_Not_NoteType[FileBrowser])
{ Tml_DB_MarkNotesChildrenOfFolderAsUnavailable (Tml_Not_NoteType[FileBrowser],FileBrowser,
case Brw_ADMI_DOC_INS: Brw_GetCodForFileBrowser (),
case Brw_ADMI_SHR_INS: Path);
case Brw_ADMI_DOC_CTR:
case Brw_ADMI_SHR_CTR:
case Brw_ADMI_DOC_DEG:
case Brw_ADMI_SHR_DEG:
case Brw_ADMI_DOC_CRS:
case Brw_ADMI_SHR_CRS:
/***** Mark possible note as unavailable *****/
switch (FileBrowser)
{
case Brw_ADMI_DOC_INS:
NoteType = TL_NOTE_INS_DOC_PUB_FILE;
break;
case Brw_ADMI_SHR_INS:
NoteType = TL_NOTE_INS_SHA_PUB_FILE;
break;
case Brw_ADMI_DOC_CTR:
NoteType = TL_NOTE_CTR_DOC_PUB_FILE;
break;
case Brw_ADMI_SHR_CTR:
NoteType = TL_NOTE_CTR_SHA_PUB_FILE;
break;
case Brw_ADMI_DOC_DEG:
NoteType = TL_NOTE_DEG_DOC_PUB_FILE;
break;
case Brw_ADMI_SHR_DEG:
NoteType = TL_NOTE_DEG_SHA_PUB_FILE;
break;
case Brw_ADMI_DOC_CRS:
NoteType = TL_NOTE_CRS_DOC_PUB_FILE;
break;
case Brw_ADMI_SHR_CRS:
NoteType = TL_NOTE_CRS_SHA_PUB_FILE;
break;
default:
return;
}
Tml_DB_MarkNotesChildrenOfFolderAsUnavailable (NoteType,FileBrowser,
Brw_GetCodForFileBrowser (),
Path);
break;
default:
break;
}
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -6098,25 +6098,16 @@ static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType,
unsigned NumUsr; unsigned NumUsr;
bool TRIsOpen = false; bool TRIsOpen = false;
bool UsrIsTheMsgSender; bool UsrIsTheMsgSender;
const char *ClassPhoto = "PHOTO21x28"; // Default photo size
struct UsrData UsrDat; struct UsrData UsrDat;
static const char *ClassPhoto[Usr_NUM_CLASS_PHOTO_TYPE] =
{
[Usr_CLASS_PHOTO_SEL ] = "PHOTO21x28",
[Usr_CLASS_PHOTO_SEL_SEE] = "PHOTO45x60",
[Usr_CLASS_PHOTO_PRN ] = "PHOTO45x60",
};
if (Gbl.Usrs.LstUsrs[Role].NumUsrs) if (Gbl.Usrs.LstUsrs[Role].NumUsrs)
{ {
/***** Set width and height of photos *****/
switch (ClassPhotoType)
{
case Usr_CLASS_PHOTO_SEL:
ClassPhoto = "PHOTO21x28";
break;
case Usr_CLASS_PHOTO_SEL_SEE:
ClassPhoto = "PHOTO45x60";
break;
case Usr_CLASS_PHOTO_PRN:
ClassPhoto = "PHOTO45x60";
break;
}
/***** Put a row to select all users *****/ /***** Put a row to select all users *****/
if (PutCheckBoxToSelectUsr) if (PutCheckBoxToSelectUsr)
Usr_PutCheckboxToSelectAllUsers (Role,SelectedUsrs); Usr_PutCheckboxToSelectAllUsers (Role,SelectedUsrs);
@ -6159,26 +6150,26 @@ static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType,
SelectedUsrs); SelectedUsrs);
/***** Show photo *****/ /***** Show photo *****/
Pho_ShowUsrPhotoIfAllowed (&UsrDat,ClassPhoto,Pho_ZOOM,false); Pho_ShowUsrPhotoIfAllowed (&UsrDat,ClassPhoto[ClassPhotoType],Pho_ZOOM,false);
/***** Photo foot *****/ /***** Photo foot *****/
HTM_DIV_Begin ("class=\"CLASSPHOTO_CAPTION\""); HTM_DIV_Begin ("class=\"CLASSPHOTO_CAPTION\"");
/* Name */ /* Name */
if (UsrDat.FrstName[0]) if (UsrDat.FrstName[0])
HTM_Txt (UsrDat.FrstName); HTM_Txt (UsrDat.FrstName);
else else
HTM_NBSP (); HTM_NBSP ();
HTM_BR (); HTM_BR ();
if (UsrDat.Surname1[0]) if (UsrDat.Surname1[0])
HTM_Txt (UsrDat.Surname1); HTM_Txt (UsrDat.Surname1);
else else
HTM_NBSP (); HTM_NBSP ();
HTM_BR (); HTM_BR ();
if (UsrDat.Surname2[0]) if (UsrDat.Surname2[0])
HTM_Txt (UsrDat.Surname2); HTM_Txt (UsrDat.Surname2);
else else
HTM_NBSP (); HTM_NBSP ();
HTM_DIV_End (); HTM_DIV_End ();

View File

@ -113,6 +113,7 @@ typedef enum
// Don't change these numbers! They are used for user's sex in database // Don't change these numbers! They are used for user's sex in database
// Related with class photograph // Related with class photograph
#define Usr_NUM_CLASS_PHOTO_TYPE 3
typedef enum typedef enum
{ {
Usr_CLASS_PHOTO_SEL, // Only for selection of users Usr_CLASS_PHOTO_SEL, // Only for selection of users