mirror of https://github.com/acanas/swad-core.git
Version 21.56.5: Nov 10, 2021 Code refactoring in switch statements.
This commit is contained in:
parent
f9b4ab100b
commit
17e63e751c
|
@ -42,6 +42,7 @@
|
|||
#define Act_MAX_CHARS_ACTION_TXT (256 - 1) // 255
|
||||
#define Act_MAX_BYTES_ACTION_TXT Act_MAX_CHARS_ACTION_TXT // 255
|
||||
|
||||
#define Act_NUM_CONTENTS 2
|
||||
typedef enum
|
||||
{
|
||||
Act_CONT_NORM,
|
||||
|
|
|
@ -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.4 (2021-11-10)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 21.56.5 (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.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.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)
|
||||
|
|
|
@ -161,12 +161,28 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
|
|||
extern const char *Txt_New_nickname;
|
||||
extern const char *Txt_Change_nickname;
|
||||
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_ROW row;
|
||||
char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
|
||||
unsigned NumNicks;
|
||||
unsigned NumNick;
|
||||
Act_Action_t NextAction;
|
||||
char NickWithArr[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1];
|
||||
const struct UsrData *UsrDat = (ItsMe ? &Gbl.Usrs.Me.UsrDat :
|
||||
&Gbl.Usrs.Other.UsrDat);
|
||||
|
@ -206,11 +222,11 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
|
|||
/* The first nickname is the current one */
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
/* Label */
|
||||
Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Current_nickname);
|
||||
/* Label */
|
||||
Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Current_nickname);
|
||||
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"REC_C2_BOT LT USR_ID\"");
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"REC_C2_BOT LT USR_ID\"");
|
||||
}
|
||||
else // NumNick >= 2
|
||||
{
|
||||
|
@ -218,11 +234,11 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
|
|||
{
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
/* Label */
|
||||
Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Other_nicknames);
|
||||
/* Label */
|
||||
Frm_LabelColumn ("REC_C1_BOT RT",NULL,Txt_Other_nicknames);
|
||||
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"REC_C2_BOT LT DAT\"");
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"REC_C2_BOT LT DAT\"");
|
||||
}
|
||||
|
||||
/* Form to remove old nickname */
|
||||
|
@ -230,23 +246,8 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
|
|||
Ico_PutContextualIconToRemove (ActRemMyNck,Nck_NICKNAME_SECTION_ID,
|
||||
Nck_PutParamsRemoveMyNick,row[0]);
|
||||
else
|
||||
{
|
||||
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,
|
||||
Ico_PutContextualIconToRemove (NextAction[UsrDat->Roles.InCurrentCrs].Remove,Nck_NICKNAME_SECTION_ID,
|
||||
Nck_PutParamsRemoveOtherNick,row[0]);
|
||||
}
|
||||
}
|
||||
|
||||
/* Nickname */
|
||||
|
@ -265,33 +266,20 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
|
|||
Frm_BeginFormAnchor (ActChgMyNck,Nck_NICKNAME_SECTION_ID);
|
||||
else
|
||||
{
|
||||
switch (UsrDat->Roles.InCurrentCrs)
|
||||
{
|
||||
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);
|
||||
Frm_BeginFormAnchor (NextAction[UsrDat->Roles.InCurrentCrs].Change,Nck_NICKNAME_SECTION_ID);
|
||||
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
|
||||
}
|
||||
|
||||
snprintf (NickWithArr,sizeof (NickWithArr),"@%s",row[0]);
|
||||
Par_PutHiddenParamString (NULL,"NewNick",NickWithArr); // Nickname
|
||||
Btn_PutConfirmButtonInline (Txt_Use_this_nickname);
|
||||
Btn_PutConfirmButtonInline (Txt_Use_this_nickname);
|
||||
Frm_EndForm ();
|
||||
}
|
||||
|
||||
if (NumNick == 1 ||
|
||||
NumNick == NumNicks)
|
||||
{
|
||||
HTM_TD_End ();
|
||||
HTM_TD_End ();
|
||||
HTM_TR_End ();
|
||||
}
|
||||
else
|
||||
|
@ -304,7 +292,7 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
|
|||
/* Label */
|
||||
Frm_LabelColumn ("REC_C1_BOT RT","NewNick",
|
||||
NumNicks ? Txt_New_nickname : // A new nickname
|
||||
Txt_Nickname); // The first nickname
|
||||
Txt_Nickname); // The first nickname
|
||||
|
||||
/* Data */
|
||||
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);
|
||||
else
|
||||
{
|
||||
switch (UsrDat->Roles.InCurrentCrs)
|
||||
{
|
||||
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);
|
||||
Frm_BeginFormAnchor (NextAction[UsrDat->Roles.InCurrentCrs].Change,Nck_NICKNAME_SECTION_ID);
|
||||
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
|
||||
}
|
||||
snprintf (NickWithArr,sizeof (NickWithArr),"@%s",
|
||||
|
|
|
@ -909,51 +909,27 @@ void Ntf_GetNotifSummaryAndContent (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
|||
void Ntf_MarkNotifOneFileAsRemoved (const char *Path)
|
||||
{
|
||||
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];
|
||||
long FilCod;
|
||||
Ntf_NotifyEvent_t NotifyEvent;
|
||||
|
||||
switch (FileBrowser)
|
||||
if (NotifyEvent[FileBrowser])
|
||||
{
|
||||
case Brw_ADMI_DOC_CRS:
|
||||
case Brw_ADMI_DOC_GRP:
|
||||
case Brw_ADMI_TCH_CRS:
|
||||
case Brw_ADMI_TCH_GRP:
|
||||
case Brw_ADMI_SHR_CRS:
|
||||
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;
|
||||
/***** Get file code *****/
|
||||
FilCod = Brw_DB_GetFilCodByPath (Path,false); // Any file, public or not
|
||||
if (FilCod > 0)
|
||||
/***** Set notification as removed *****/
|
||||
Ntf_DB_MarkNotifAsRemoved (NotifyEvent[FileBrowser],FilCod);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -964,48 +940,24 @@ void Ntf_MarkNotifOneFileAsRemoved (const char *Path)
|
|||
void Ntf_MarkNotifChildrenOfFolderAsRemoved (const char *Path)
|
||||
{
|
||||
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];
|
||||
Ntf_NotifyEvent_t NotifyEvent;
|
||||
|
||||
switch (FileBrowser)
|
||||
static const Ntf_NotifyEvent_t NotifyEvent[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||
{
|
||||
case Brw_ADMI_DOC_CRS:
|
||||
case Brw_ADMI_DOC_GRP:
|
||||
case Brw_ADMI_TCH_CRS:
|
||||
case Brw_ADMI_TCH_GRP:
|
||||
case Brw_ADMI_SHR_CRS:
|
||||
case Brw_ADMI_SHR_GRP:
|
||||
case Brw_ADMI_MRK_CRS:
|
||||
case Brw_ADMI_MRK_GRP:
|
||||
/***** 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_MarkNotifChildrenOfFolderAsRemoved (NotifyEvent,FileBrowser,
|
||||
Brw_GetCodForFileBrowser (),
|
||||
Path);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
[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];
|
||||
|
||||
if (NotifyEvent[FileBrowser])
|
||||
/***** Set notification as removed *****/
|
||||
Ntf_DB_MarkNotifChildrenOfFolderAsRemoved (NotifyEvent[FileBrowser],FileBrowser,
|
||||
Brw_GetCodForFileBrowser (),
|
||||
Path);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1016,6 +968,29 @@ void Ntf_MarkNotifChildrenOfFolderAsRemoved (const char *Path)
|
|||
|
||||
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;
|
||||
unsigned NumUsrs = 0; // Initialized to avoid warning
|
||||
unsigned NumUsr;
|
||||
|
@ -1037,27 +1012,10 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
|
|||
case Ntf_EVENT_TEACHERS_FILE:
|
||||
case Ntf_EVENT_SHARED_FILE:
|
||||
case Ntf_EVENT_MARKS_FILE:
|
||||
switch (Gbl.FileBrowser.Type)
|
||||
{
|
||||
case Brw_ADMI_DOC_CRS:
|
||||
case Brw_ADMI_SHR_CRS:
|
||||
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;
|
||||
}
|
||||
if (GetUsrsBrowser[Gbl.FileBrowser.Type])
|
||||
NumUsrs = GetUsrsBrowser[Gbl.FileBrowser.Type] (&mysql_res);
|
||||
else
|
||||
return 0;
|
||||
break;
|
||||
case Ntf_EVENT_ASSIGNMENT:
|
||||
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
|
||||
For_GetForumTypeAndLocationOfAPost (Cod,&ForumSelected);
|
||||
|
||||
switch (ForumSelected.Type)
|
||||
{
|
||||
case For_FORUM_COURSE_USRS:
|
||||
NumUsrs = Enr_DB_GetUsrsFromCurrentCrsExceptMe (&mysql_res);
|
||||
break;
|
||||
case For_FORUM_COURSE_TCHS:
|
||||
NumUsrs = Enr_DB_GetTchsFromCurrentCrsExceptMe (&mysql_res);
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
if (GetUsrsForum[ForumSelected.Type])
|
||||
NumUsrs = GetUsrsForum[ForumSelected.Type] (&mysql_res);
|
||||
else
|
||||
return 0;
|
||||
break;
|
||||
case Ntf_EVENT_FORUM_REPLY:
|
||||
// Cod is the code of the post
|
||||
|
|
|
@ -214,20 +214,18 @@ List --> |Name.Start | -> |Name.Start |
|
|||
|
||||
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 *****/
|
||||
Gbl.Params.List = NULL;
|
||||
|
||||
/***** Get list *****/
|
||||
if (Gbl.Params.ContentLength)
|
||||
switch (Gbl.ContentReceivedByCGI)
|
||||
{
|
||||
case Act_CONT_NORM:
|
||||
Par_CreateListOfParamsFromQueryString ();
|
||||
break;
|
||||
case Act_CONT_DATA:
|
||||
Par_CreateListOfParamsFromTmpFile ();
|
||||
break;
|
||||
}
|
||||
CreateListOfParams[Gbl.ContentReceivedByCGI] ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -730,7 +730,19 @@ void Pwd_ShowFormChgOtherUsrPwd (void)
|
|||
{
|
||||
extern const char *Txt_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 *****/
|
||||
HTM_SECTION_Begin (Pwd_PASSWORD_SECTION_ID);
|
||||
|
@ -745,20 +757,7 @@ void Pwd_ShowFormChgOtherUsrPwd (void)
|
|||
|
||||
/***** Form to change password *****/
|
||||
/* Begin form */
|
||||
switch (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs)
|
||||
{
|
||||
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);
|
||||
Frm_BeginFormAnchor (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs],Pwd_PASSWORD_SECTION_ID);
|
||||
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EnUsrCod);
|
||||
|
||||
/* New password */
|
||||
|
|
166
swad_photo.c
166
swad_photo.c
|
@ -177,7 +177,19 @@ void Pho_PutIconToChangeUsrPhoto (void)
|
|||
bool PhotoExists;
|
||||
char PhotoURL[PATH_MAX + 1];
|
||||
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);
|
||||
|
||||
/***** Link for changing / uploading the photo *****/
|
||||
|
@ -196,20 +208,7 @@ void Pho_PutIconToChangeUsrPhoto (void)
|
|||
PhotoExists = Pho_BuildLinkToPhoto (Gbl.Record.UsrDat,PhotoURL);
|
||||
TitleText = PhotoExists ? Txt_Change_photo :
|
||||
Txt_Upload_photo;
|
||||
switch (Gbl.Record.UsrDat->Roles.InCurrentCrs)
|
||||
{
|
||||
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,
|
||||
Lay_PutContextualLinkOnlyIcon (NextAction[Gbl.Record.UsrDat->Roles.InCurrentCrs],NULL,
|
||||
Rec_PutParamUsrCodEncrypted,NULL,
|
||||
"camera.svg",
|
||||
TitleText);
|
||||
|
@ -241,30 +240,27 @@ static void Pho_PutIconToRequestRemoveOtherUsrPhoto (__attribute__((unused)) voi
|
|||
extern const char *Txt_Remove_photo;
|
||||
char PhotoURL[PATH_MAX + 1];
|
||||
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 *****/
|
||||
PhotoExists = Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
|
||||
if (PhotoExists)
|
||||
{
|
||||
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,
|
||||
Lay_PutContextualLinkOnlyIcon (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs],NULL,
|
||||
Usr_PutParamOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EnUsrCod,
|
||||
"trash.svg",
|
||||
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_Upload_photo;
|
||||
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 *****/
|
||||
Box_BoxBegin (NULL,Txt_Photo,
|
||||
|
@ -319,20 +327,7 @@ static void Pho_ReqPhoto (const struct UsrData *UsrDat)
|
|||
Frm_BeginForm (ActDetMyPho);
|
||||
else
|
||||
{
|
||||
switch (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);
|
||||
Frm_BeginForm (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs]);
|
||||
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
|
||||
}
|
||||
|
||||
|
@ -486,7 +481,19 @@ void Pho_ReqRemoveUsrPhoto (void)
|
|||
extern const char *Txt_Remove_photo;
|
||||
extern const char *Txt_The_photo_no_longer_exists;
|
||||
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 *****/
|
||||
Usr_GetParamOtherUsrCodEncryptedAndGetListIDs ();
|
||||
|
@ -511,20 +518,7 @@ void Pho_ReqRemoveUsrPhoto (void)
|
|||
"PHOTO186x248",Pho_NO_ZOOM,false);
|
||||
|
||||
/* End alert */
|
||||
switch (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs)
|
||||
{
|
||||
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,
|
||||
Ale_ShowAlertAndButton2 (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs],NULL,NULL,
|
||||
Usr_PutParamOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EnUsrCod,
|
||||
Btn_REMOVE_BUTTON,Txt_Remove_photo);
|
||||
}
|
||||
|
@ -605,7 +599,19 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
|
|||
unsigned Radius;
|
||||
unsigned BackgroundCode;
|
||||
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];
|
||||
|
||||
/***** Creates directories if not exist *****/
|
||||
|
@ -688,20 +694,7 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
|
|||
Frm_BeginForm (ActUpdMyPho);
|
||||
else
|
||||
{
|
||||
switch (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);
|
||||
Frm_BeginForm (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs]);
|
||||
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
|
||||
}
|
||||
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 *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;
|
||||
|
||||
/***** Get parameters from form *****/
|
||||
|
@ -1633,17 +1632,8 @@ static void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
|
|||
Pho_GetMaxStdsPerDegree (&DegPhotos);
|
||||
|
||||
/***** Draw the classphoto/list *****/
|
||||
switch (Gbl.Usrs.Me.ListType)
|
||||
{
|
||||
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;
|
||||
}
|
||||
if (ShowOrPrintDegrees[Gbl.Usrs.Me.ListType])
|
||||
ShowOrPrintDegrees[Gbl.Usrs.Me.ListType] (&DegPhotos,SeeOrPrint);
|
||||
|
||||
/***** End box *****/
|
||||
Box_BoxEnd ();
|
||||
|
|
|
@ -3655,14 +3655,13 @@ static void Prj_UpdateProject (struct Prj_Project *Prj)
|
|||
|
||||
static bool Prj_CheckIfICanConfigAllProjects (void)
|
||||
{
|
||||
switch (Gbl.Usrs.Me.Role.Logged)
|
||||
static const bool ICanConfigAllProjects[Rol_NUM_ROLES] =
|
||||
{
|
||||
case Rol_TCH:
|
||||
case Rol_SYS_ADM:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
[Rol_TCH ] = true,
|
||||
[Rol_SYS_ADM] = true,
|
||||
};
|
||||
|
||||
return ICanConfigAllProjects[Gbl.Usrs.Me.Role.Logged];
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -2322,7 +2322,19 @@ static void Rec_PutIconsCommands (__attribute__((unused)) void *Args)
|
|||
bool ItsMe = Usr_ItsMe (Gbl.Record.UsrDat->UsrCod);
|
||||
bool ICanViewUsrProfile;
|
||||
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
|
||||
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_INS_ADM ||
|
||||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
|
||||
{
|
||||
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,
|
||||
Lay_PutContextualLinkOnlyIcon (NextAction[Gbl.Record.UsrDat->Roles.InCurrentCrs],NULL,
|
||||
Rec_PutParamUsrCodEncrypted,NULL,
|
||||
"user-cog.svg",
|
||||
Txt_Administer_user);
|
||||
}
|
||||
|
||||
if (Gbl.Hierarchy.Level == HieLvl_CRS) // Course selected
|
||||
{
|
||||
|
|
|
@ -307,18 +307,16 @@ static void Svy_ListAllSurveys (struct Svy_Surveys *Surveys)
|
|||
|
||||
static bool Svy_CheckIfICanCreateSvy (void)
|
||||
{
|
||||
switch (Gbl.Usrs.Me.Role.Logged)
|
||||
static const bool ICanCreateSvy[Rol_NUM_ROLES] =
|
||||
{
|
||||
case Rol_TCH:
|
||||
case Rol_DEG_ADM:
|
||||
case Rol_CTR_ADM:
|
||||
case Rol_INS_ADM:
|
||||
case Rol_SYS_ADM:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
[Rol_TCH ] = true,
|
||||
[Rol_DEG_ADM] = true,
|
||||
[Rol_CTR_ADM] = true,
|
||||
[Rol_INS_ADM] = true,
|
||||
[Rol_SYS_ADM] = true,
|
||||
};
|
||||
|
||||
return ICanCreateSvy[Gbl.Usrs.Me.Role.Logged];
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -997,6 +997,11 @@ static void Syl_ChangePlaceItemSyllabus (Syl_ChangePosItem_t UpOrDownPos)
|
|||
FILE *NewFile;
|
||||
unsigned NumItem;
|
||||
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 *****/
|
||||
Syl_ResetSyllabus (&Syllabus);
|
||||
|
@ -1023,15 +1028,7 @@ static void Syl_ChangePlaceItemSyllabus (Syl_ChangePosItem_t UpOrDownPos)
|
|||
Fil_CreateUpdateFile (PathFile,".old",PathOldFile,PathNewFile,&NewFile);
|
||||
|
||||
/***** Get up or get down position *****/
|
||||
switch (UpOrDownPos)
|
||||
{
|
||||
case Syl_GET_UP:
|
||||
Syl_CalculateUpSubtreeSyllabus (&Subtree,Syllabus.NumItem);
|
||||
break;
|
||||
case Syl_GET_DOWN:
|
||||
Syl_CalculateDownSubtreeSyllabus (&Subtree,Syllabus.NumItem);
|
||||
break;
|
||||
}
|
||||
CalculateSubtreeSyllabus[UpOrDownPos] (&Subtree,Syllabus.NumItem);
|
||||
|
||||
/***** Create the new XML file *****/
|
||||
Syl_WriteStartFileSyllabus (NewFile);
|
||||
|
|
|
@ -35,6 +35,7 @@ typedef enum
|
|||
} Syl_WhichSyllabus_t; // Which syllabus I want to see
|
||||
#define Syl_DEFAULT_WHICH_SYLLABUS Syl_LECTURES
|
||||
|
||||
#define Syl_NUM_CHANGE_POS_ITEM 2
|
||||
typedef enum
|
||||
{
|
||||
Syl_GET_UP,
|
||||
|
|
|
@ -53,6 +53,22 @@
|
|||
|
||||
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 ****************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -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];
|
||||
Brw_FileBrowser_t FileBrowser = Brw_DB_FileBrowserForDB_files[Gbl.FileBrowser.Type];
|
||||
long FilCod;
|
||||
Tml_Not_Type_t NoteType;
|
||||
|
||||
switch (FileBrowser)
|
||||
if (Tml_Not_NoteType[FileBrowser])
|
||||
{
|
||||
case Brw_ADMI_DOC_INS:
|
||||
case Brw_ADMI_SHR_INS:
|
||||
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:
|
||||
/***** 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;
|
||||
/***** Get file code *****/
|
||||
FilCod = Brw_DB_GetFilCodByPath (Path,true); // Only if file is public
|
||||
if (FilCod > 0)
|
||||
/***** Mark possible note as unavailable *****/
|
||||
Tml_DB_MarkNoteAsUnavailable (Tml_Not_NoteType[FileBrowser],FilCod);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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];
|
||||
Brw_FileBrowser_t FileBrowser = Brw_DB_FileBrowserForDB_files[Gbl.FileBrowser.Type];
|
||||
Tml_Not_Type_t NoteType;
|
||||
|
||||
switch (FileBrowser)
|
||||
{
|
||||
case Brw_ADMI_DOC_INS:
|
||||
case Brw_ADMI_SHR_INS:
|
||||
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;
|
||||
}
|
||||
if (Tml_Not_NoteType[FileBrowser])
|
||||
Tml_DB_MarkNotesChildrenOfFolderAsUnavailable (Tml_Not_NoteType[FileBrowser],FileBrowser,
|
||||
Brw_GetCodForFileBrowser (),
|
||||
Path);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
53
swad_user.c
53
swad_user.c
|
@ -6098,25 +6098,16 @@ static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType,
|
|||
unsigned NumUsr;
|
||||
bool TRIsOpen = false;
|
||||
bool UsrIsTheMsgSender;
|
||||
const char *ClassPhoto = "PHOTO21x28"; // Default photo size
|
||||
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)
|
||||
{
|
||||
/***** 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 *****/
|
||||
if (PutCheckBoxToSelectUsr)
|
||||
Usr_PutCheckboxToSelectAllUsers (Role,SelectedUsrs);
|
||||
|
@ -6159,26 +6150,26 @@ static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType,
|
|||
SelectedUsrs);
|
||||
|
||||
/***** Show photo *****/
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,ClassPhoto,Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,ClassPhoto[ClassPhotoType],Pho_ZOOM,false);
|
||||
|
||||
/***** Photo foot *****/
|
||||
HTM_DIV_Begin ("class=\"CLASSPHOTO_CAPTION\"");
|
||||
|
||||
/* Name */
|
||||
if (UsrDat.FrstName[0])
|
||||
HTM_Txt (UsrDat.FrstName);
|
||||
else
|
||||
HTM_NBSP ();
|
||||
HTM_BR ();
|
||||
if (UsrDat.Surname1[0])
|
||||
HTM_Txt (UsrDat.Surname1);
|
||||
else
|
||||
HTM_NBSP ();
|
||||
HTM_BR ();
|
||||
if (UsrDat.Surname2[0])
|
||||
HTM_Txt (UsrDat.Surname2);
|
||||
else
|
||||
HTM_NBSP ();
|
||||
/* Name */
|
||||
if (UsrDat.FrstName[0])
|
||||
HTM_Txt (UsrDat.FrstName);
|
||||
else
|
||||
HTM_NBSP ();
|
||||
HTM_BR ();
|
||||
if (UsrDat.Surname1[0])
|
||||
HTM_Txt (UsrDat.Surname1);
|
||||
else
|
||||
HTM_NBSP ();
|
||||
HTM_BR ();
|
||||
if (UsrDat.Surname2[0])
|
||||
HTM_Txt (UsrDat.Surname2);
|
||||
else
|
||||
HTM_NBSP ();
|
||||
|
||||
HTM_DIV_End ();
|
||||
|
||||
|
|
|
@ -113,6 +113,7 @@ typedef enum
|
|||
// Don't change these numbers! They are used for user's sex in database
|
||||
|
||||
// Related with class photograph
|
||||
#define Usr_NUM_CLASS_PHOTO_TYPE 3
|
||||
typedef enum
|
||||
{
|
||||
Usr_CLASS_PHOTO_SEL, // Only for selection of users
|
||||
|
|
Loading…
Reference in New Issue