diff --git a/swad_API.c b/swad_API.c
index 000534ef3..019f0e0a5 100644
--- a/swad_API.c
+++ b/swad_API.c
@@ -5261,21 +5261,23 @@ int swad__getLastLocation (struct soap *soap,
The other user does not have to share any course with me,
but at least some course of each one has to share center.
*/
- if (Roo_DB_CheckIfICanSeeUsrLocation ((long) userCode) == Usr_I_CAN)
+ switch (Roo_DB_CheckIfICanSeeUsrLocation ((long) userCode))
{
- /***** Get list of locations *****/
- NumLocs = Roo_DB_GetUsrLastLocation (&mysql_res,(long) userCode);
- API_GetLocationData (soap,
- &(getLastLocationOut->location),
- &(getLastLocationOut->checkinTime), // Get check in time
- &mysql_res,NumLocs);
- }
- else
- {
- /* I can not see user's location ==> reset output */
- API_ResetLocation (soap, &(getLastLocationOut->location));
- getLastLocationOut->checkinTime = 0L;
- }
+ case Usr_I_CAN:
+ /***** Get list of locations *****/
+ NumLocs = Roo_DB_GetUsrLastLocation (&mysql_res,(long) userCode);
+ API_GetLocationData (soap,
+ &(getLastLocationOut->location),
+ &(getLastLocationOut->checkinTime), // Get check in time
+ &mysql_res,NumLocs);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ /* I can not see user's location ==> reset output */
+ API_ResetLocation (soap, &(getLastLocationOut->location));
+ getLastLocationOut->checkinTime = 0L;
+ break;
+ }
return SOAP_OK;
}
diff --git a/swad_ID.c b/swad_ID.c
index 5999b2c35..4f4fa1fc7 100644
--- a/swad_ID.c
+++ b/swad_ID.c
@@ -328,14 +328,21 @@ void ID_WriteUsrIDs (struct Usr_Data *UsrDat,const char *Anchor)
UsrDat->IDs.List[NumID].Confirmed ? "USR_ID_C" :
"USR_ID_NC",
The_GetSuffix ());
- if (ICanSeeUsrID == Usr_I_CAN)
- HTM_Txt (UsrDat->IDs.List[NumID].ID);
- else
- HTM_Txt ("********");
+ switch (ICanSeeUsrID)
+ {
+ case Usr_I_CAN:
+ HTM_Txt (UsrDat->IDs.List[NumID].ID);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ HTM_Txt ("********");
+ break;
+ }
HTM_SPAN_End ();
/* Put link to confirm ID? */
- if (ICanConfirmUsrID == Usr_I_CAN && !UsrDat->IDs.List[NumID].Confirmed)
+ if (ICanConfirmUsrID == Usr_I_CAN &&
+ !UsrDat->IDs.List[NumID].Confirmed)
ID_PutLinkToConfirmID (UsrDat,NumID,Anchor);
}
}
@@ -691,22 +698,24 @@ void ID_RemoveOtherUsrID (void)
{
/***** Get other user's code from form and get user's data *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
+ switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
- /***** Remove user's ID *****/
- ID_RemoveUsrID (&Gbl.Usrs.Other.UsrDat,
- Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod));
+ case Usr_I_CAN:
+ /***** Remove user's ID *****/
+ ID_RemoveUsrID (&Gbl.Usrs.Other.UsrDat,
+ Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod));
- /***** Update list of IDs *****/
- ID_GetListIDsFromUsrCod (&Gbl.Usrs.Other.UsrDat);
+ /***** Update list of IDs *****/
+ ID_GetListIDsFromUsrCod (&Gbl.Usrs.Other.UsrDat);
- /***** Show form again *****/
- Acc_ShowFormChgOtherUsrAccount ();
+ /***** Show form again *****/
+ Acc_ShowFormChgOtherUsrAccount ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
else // User not found
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
@@ -720,48 +729,52 @@ static void ID_RemoveUsrID (const struct Usr_Data *UsrDat,Usr_MeOrOther_t MeOrOt
extern const char *Txt_ID_X_removed;
extern const char *Txt_You_can_not_delete_this_ID;
char UsrID[ID_MAX_BYTES_USR_ID + 1];
- Usr_ICan_t ICanRemove;
+ Usr_ICan_t ICanRemove = Usr_I_CAN_NOT;
- if (Usr_CheckIfICanEditOtherUsr (UsrDat) == Usr_I_CAN)
+ switch (Usr_CheckIfICanEditOtherUsr (UsrDat))
{
- /***** Get user's ID from form *****/
- Par_GetParText ("UsrID",UsrID,ID_MAX_BYTES_USR_ID);
- // Users' IDs are always stored internally in capitals and without leading zeros
- Str_RemoveLeadingZeros (UsrID);
- Str_ConvertToUpperText (UsrID);
+ case Usr_I_CAN:
+ /***** Get user's ID from form *****/
+ Par_GetParText ("UsrID",UsrID,ID_MAX_BYTES_USR_ID);
+ // Users' IDs are always stored internally in capitals and without leading zeros
+ Str_RemoveLeadingZeros (UsrID);
+ Str_ConvertToUpperText (UsrID);
- if (UsrDat->IDs.Num < 2) // One unique ID
- ICanRemove = Usr_I_CAN_NOT;
- else
- switch (MeOrOther)
+ if (UsrDat->IDs.Num >= 2)
+ switch (MeOrOther)
+ {
+ case Usr_ME:
+ // I can remove my ID only if it is not confirmed
+ ICanRemove = ID_DB_CheckIfConfirmed (UsrDat->UsrCod,UsrID) ? Usr_I_CAN_NOT :
+ Usr_I_CAN;
+ break;
+ case Usr_OTHER:
+ ICanRemove = Usr_I_CAN;
+ break;
+ }
+
+ switch (ICanRemove)
{
- case Usr_ME:
- // I can remove my ID only if it is not confirmed
- ICanRemove = ID_DB_CheckIfConfirmed (UsrDat->UsrCod,UsrID) ? Usr_I_CAN_NOT :
- Usr_I_CAN;
+ case Usr_I_CAN:
+ /***** Remove one of the user's IDs *****/
+ ID_DB_RemoveUsrID (UsrDat->UsrCod,UsrID);
+
+ /***** Show message *****/
+ Ale_CreateAlert (Ale_SUCCESS,ID_ID_SECTION_ID,
+ Txt_ID_X_removed,UsrID);
break;
- case Usr_OTHER:
+ case Usr_I_CAN_NOT:
default:
- ICanRemove = Usr_I_CAN;
+ Ale_CreateAlert (Ale_WARNING,ID_ID_SECTION_ID,
+ Txt_You_can_not_delete_this_ID);
break;
}
-
- if (ICanRemove == Usr_I_CAN)
- {
- /***** Remove one of the user's IDs *****/
- ID_DB_RemoveUsrID (UsrDat->UsrCod,UsrID);
-
- /***** Show message *****/
- Ale_CreateAlert (Ale_SUCCESS,ID_ID_SECTION_ID,
- Txt_ID_X_removed,
- UsrID);
- }
- else
- Ale_CreateAlert (Ale_WARNING,ID_ID_SECTION_ID,
- Txt_You_can_not_delete_this_ID);
- }
- else
- Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
+ }
}
/*****************************************************************************/
@@ -788,22 +801,24 @@ void ID_ChangeOtherUsrID (void)
{
/***** Get other user's code from form and get user's data *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
+ switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
- /***** Change user's ID *****/
- ID_ChangeUsrID (&Gbl.Usrs.Other.UsrDat,
- Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod));
+ case Usr_I_CAN:
+ /***** Change user's ID *****/
+ ID_ChangeUsrID (&Gbl.Usrs.Other.UsrDat,
+ Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod));
- /***** Update list of IDs *****/
- ID_GetListIDsFromUsrCod (&Gbl.Usrs.Other.UsrDat);
+ /***** Update list of IDs *****/
+ ID_GetListIDsFromUsrCod (&Gbl.Usrs.Other.UsrDat);
- /***** Show form again *****/
- Acc_ShowFormChgOtherUsrAccount ();
+ /***** Show form again *****/
+ Acc_ShowFormChgOtherUsrAccount ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
else // User not found
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
@@ -824,65 +839,69 @@ static void ID_ChangeUsrID (const struct Usr_Data *UsrDat,Usr_MeOrOther_t MeOrOt
bool AlreadyExists;
unsigned NumIDFound = 0; // Initialized to avoid warning
- if (Usr_CheckIfICanEditOtherUsr (UsrDat) == Usr_I_CAN)
+ switch (Usr_CheckIfICanEditOtherUsr (UsrDat))
{
- /***** Get new user's ID from form *****/
- Par_GetParText ("NewID",NewID,ID_MAX_BYTES_USR_ID);
- // Users' IDs are always stored internally in capitals and without leading zeros
- Str_RemoveLeadingZeros (NewID);
- Str_ConvertToUpperText (NewID);
+ case Usr_I_CAN:
+ /***** Get new user's ID from form *****/
+ Par_GetParText ("NewID",NewID,ID_MAX_BYTES_USR_ID);
+ // Users' IDs are always stored internally in capitals and without leading zeros
+ Str_RemoveLeadingZeros (NewID);
+ Str_ConvertToUpperText (NewID);
- if (ID_CheckIfUsrIDIsValid (NewID)) // If new ID is valid
- {
- /***** Check if the new ID matches any of the old IDs *****/
- for (NumID = 0, AlreadyExists = false;
- NumID < UsrDat->IDs.Num && !AlreadyExists;
- NumID++)
- if (!strcasecmp (UsrDat->IDs.List[NumID].ID,NewID))
- {
- AlreadyExists = true;
- NumIDFound = NumID;
- }
-
- if (AlreadyExists) // This new ID was already associated to this user
+ if (ID_CheckIfUsrIDIsValid (NewID)) // If new ID is valid
{
- if (MeOrOther == Usr_ME || UsrDat->IDs.List[NumIDFound].Confirmed)
- Ale_CreateAlert (Ale_WARNING,ID_ID_SECTION_ID,
- Txt_The_ID_X_matches_one_of_the_existing,
- NewID);
- else // It's not me && !Confirmed
+ /***** Check if the new ID matches any of the old IDs *****/
+ for (NumID = 0, AlreadyExists = false;
+ NumID < UsrDat->IDs.Num && !AlreadyExists;
+ NumID++)
+ if (!strcasecmp (UsrDat->IDs.List[NumID].ID,NewID))
+ {
+ AlreadyExists = true;
+ NumIDFound = NumID;
+ }
+
+ if (AlreadyExists) // This new ID was already associated to this user
{
- /***** Mark this ID as confirmed *****/
- ID_DB_ConfirmUsrID (UsrDat->UsrCod,NewID);
+ if (MeOrOther == Usr_ME || UsrDat->IDs.List[NumIDFound].Confirmed)
+ Ale_CreateAlert (Ale_WARNING,ID_ID_SECTION_ID,
+ Txt_The_ID_X_matches_one_of_the_existing,
+ NewID);
+ else // It's not me && !Confirmed
+ {
+ /***** Mark this ID as confirmed *****/
+ ID_DB_ConfirmUsrID (UsrDat->UsrCod,NewID);
+
+ Ale_CreateAlert (Ale_SUCCESS,ID_ID_SECTION_ID,
+ Txt_The_ID_X_has_been_confirmed,
+ NewID);
+ }
+ }
+ else if (UsrDat->IDs.Num >= ID_MAX_IDS_PER_USER)
+ Ale_CreateAlert (Ale_WARNING,ID_ID_SECTION_ID,
+ Txt_A_user_can_not_have_more_than_X_IDs,
+ ID_MAX_IDS_PER_USER);
+ else // OK ==> add this new ID to my list of IDs
+ {
+ /***** Save this new ID *****/
+ // It's me ==> ID not confirmed
+ // Not me ==> ID confirmed
+ ID_DB_InsertANewUsrID (UsrDat->UsrCod,NewID,MeOrOther == Usr_OTHER);
Ale_CreateAlert (Ale_SUCCESS,ID_ID_SECTION_ID,
- Txt_The_ID_X_has_been_confirmed,
- NewID);
+ Txt_The_ID_X_has_been_registered_successfully,
+ NewID);
}
}
- else if (UsrDat->IDs.Num >= ID_MAX_IDS_PER_USER)
+ else // New ID is not valid
Ale_CreateAlert (Ale_WARNING,ID_ID_SECTION_ID,
- Txt_A_user_can_not_have_more_than_X_IDs,
- ID_MAX_IDS_PER_USER);
- else // OK ==> add this new ID to my list of IDs
- {
- /***** Save this new ID *****/
- // It's me ==> ID not confirmed
- // Not me ==> ID confirmed
- ID_DB_InsertANewUsrID (UsrDat->UsrCod,NewID,MeOrOther == Usr_OTHER);
-
- Ale_CreateAlert (Ale_SUCCESS,ID_ID_SECTION_ID,
- Txt_The_ID_X_has_been_registered_successfully,
- NewID);
- }
- }
- else // New ID is not valid
- Ale_CreateAlert (Ale_WARNING,ID_ID_SECTION_ID,
- Txt_The_ID_X_is_not_valid,
- NewID);
+ Txt_The_ID_X_is_not_valid,
+ NewID);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
}
/*****************************************************************************/
@@ -917,48 +936,52 @@ void ID_ConfirmOtherUsrID (void)
ICanConfirm = Usr_I_CAN;
}
- if (ICanConfirm == Usr_I_CAN)
+ switch (ICanConfirm)
{
- /***** Get user's ID from form *****/
- Par_GetParText ("UsrID",UsrID,ID_MAX_BYTES_USR_ID);
- // Users' IDs are always stored internally in capitals and without leading zeros
- Str_RemoveLeadingZeros (UsrID);
- Str_ConvertToUpperText (UsrID);
+ case Usr_I_CAN:
+ /***** Get user's ID from form *****/
+ Par_GetParText ("UsrID",UsrID,ID_MAX_BYTES_USR_ID);
+ // Users' IDs are always stored internally in capitals and without leading zeros
+ Str_RemoveLeadingZeros (UsrID);
+ Str_ConvertToUpperText (UsrID);
- for (NumID = 0, Found = false;
- NumID < Gbl.Usrs.Other.UsrDat.IDs.Num && !Found;
- NumID++)
- if (!strcasecmp (UsrID,Gbl.Usrs.Other.UsrDat.IDs.List[NumID].ID))
+ for (NumID = 0, Found = false;
+ NumID < Gbl.Usrs.Other.UsrDat.IDs.Num && !Found;
+ NumID++)
+ if (!strcasecmp (UsrID,Gbl.Usrs.Other.UsrDat.IDs.List[NumID].ID))
+ {
+ Found = true;
+ NumIDFound = NumID;
+ }
+
+ if (Found) // Found
{
- Found = true;
- NumIDFound = NumID;
- }
+ if (Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].Confirmed)
+ /***** ID found and already confirmed *****/
+ Ale_CreateAlert (Ale_INFO,ID_ID_SECTION_ID,
+ Txt_ID_X_had_already_been_confirmed,
+ Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
+ else
+ {
+ /***** Mark this ID as confirmed *****/
+ ID_DB_ConfirmUsrID (Gbl.Usrs.Other.UsrDat.UsrCod,
+ Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
+ Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].Confirmed = true;
- if (Found) // Found
- {
- if (Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].Confirmed)
- /***** ID found and already confirmed *****/
- Ale_CreateAlert (Ale_INFO,ID_ID_SECTION_ID,
- Txt_ID_X_had_already_been_confirmed,
- Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
- else
- {
- /***** Mark this ID as confirmed *****/
- ID_DB_ConfirmUsrID (Gbl.Usrs.Other.UsrDat.UsrCod,
- Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
- Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].Confirmed = true;
-
- /***** Write success message *****/
- Ale_CreateAlert (Ale_SUCCESS,ID_ID_SECTION_ID,
- Txt_The_ID_X_has_been_confirmed,
- Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
+ /***** Write success message *****/
+ Ale_CreateAlert (Ale_SUCCESS,ID_ID_SECTION_ID,
+ Txt_The_ID_X_has_been_confirmed,
+ Gbl.Usrs.Other.UsrDat.IDs.List[NumIDFound].ID);
+ }
}
- }
- else // User's ID not found
+ else // User's ID not found
+ Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else // I can not confirm
- Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
/***** Show one or multiple records *****/
switch (Gbl.Action.Original)
diff --git a/swad_account.c b/swad_account.c
index 071948201..546dafb3c 100644
--- a/swad_account.c
+++ b/swad_account.c
@@ -487,39 +487,41 @@ void Acc_ShowFormChgOtherUsrAccount (void)
{
/***** Get user whose account must be changed *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
- {
- /***** Get user's nickname and email address
- It's necessary because nickname or email could be just updated *****/
- Nck_DB_GetNicknameFromUsrCod (Gbl.Usrs.Other.UsrDat.UsrCod,Gbl.Usrs.Other.UsrDat.Nickname);
- Mai_GetEmailFromUsrCod (&Gbl.Usrs.Other.UsrDat);
+ switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
+ {
+ case Usr_I_CAN:
+ /***** Get user's nickname and email address
+ It's necessary because nickname or email could be just updated *****/
+ Nck_DB_GetNicknameFromUsrCod (Gbl.Usrs.Other.UsrDat.UsrCod,Gbl.Usrs.Other.UsrDat.Nickname);
+ Mai_GetEmailFromUsrCod (&Gbl.Usrs.Other.UsrDat);
- /***** Show user's record *****/
- Rec_ShowSharedUsrRecord (Rec_SHA_RECORD_LIST,
- &Gbl.Usrs.Other.UsrDat,NULL);
+ /***** Show user's record *****/
+ Rec_ShowSharedUsrRecord (Rec_SHA_RECORD_LIST,
+ &Gbl.Usrs.Other.UsrDat,NULL);
- /***** Begin container for this user *****/
- HTM_DIV_Begin ("class=\"REC_USR\"");
+ /***** Begin container for this user *****/
+ HTM_DIV_Begin ("class=\"REC_USR\"");
- /***** Show form to change password and nickname *****/
- HTM_DIV_Begin ("class=\"REC_LEFT\"");
- Pwd_ShowFormChgOtherUsrPwd ();
- Nck_ShowFormChangeOtherUsrNickname ();
+ /***** Show form to change password and nickname *****/
+ HTM_DIV_Begin ("class=\"REC_LEFT\"");
+ Pwd_ShowFormChgOtherUsrPwd ();
+ Nck_ShowFormChangeOtherUsrNickname ();
+ HTM_DIV_End ();
+
+ /***** Show form to change email and ID *****/
+ HTM_DIV_Begin ("class=\"REC_RIGHT\"");
+ Mai_ShowFormChangeOtherUsrEmail ();
+ ID_ShowFormChangeOtherUsrID ();
+ HTM_DIV_End ();
+
+ /***** End container for this user *****/
HTM_DIV_End ();
-
- /***** Show form to change email and ID *****/
- HTM_DIV_Begin ("class=\"REC_RIGHT\"");
- Mai_ShowFormChangeOtherUsrEmail ();
- ID_ShowFormChangeOtherUsrID ();
- HTM_DIV_End ();
-
- /***** Begin container for this user *****/
- HTM_DIV_End ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
else // User not found
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
@@ -770,13 +772,17 @@ void Acc_GetUsrCodAndRemUsrGbl (void)
bool Error = false;
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod) == Usr_I_CAN)
- Acc_ReqRemAccountOrRemAccount (Acc_REMOVE_USR);
- else
- Error = true;
- }
- else
+ switch (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod))
+ {
+ case Usr_I_CAN:
+ Acc_ReqRemAccountOrRemAccount (Acc_REMOVE_USR);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Error = true;
+ break;
+ }
+ else // User not found
Error = true;
if (Error)
@@ -827,11 +833,12 @@ Usr_ICan_t Acc_CheckIfICanEliminateAccount (long UsrCod)
return (Gbl.Usrs.Me.Role.Available & (1 << Rol_SYS_ADM)) == 0 ? Usr_I_CAN :
Usr_I_CAN_NOT;
case Usr_OTHER:
- default:
// Only a system admin can eliminate other's account
return Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM ? Usr_I_CAN :
Usr_I_CAN_NOT;
}
+
+ return Usr_I_CAN_NOT;
}
/*****************************************************************************/
@@ -1103,7 +1110,6 @@ void Acc_PutIconToChangeUsrAccount (struct Usr_Data *UsrDat)
"at.svg",Ico_BLACK);
break;
case Usr_OTHER:
- default:
if (Usr_CheckIfICanEditOtherUsr (UsrDat) == Usr_I_CAN)
Lay_PutContextualLinkOnlyIcon (NextAction[UsrDat->Roles.InCurrentCrs],NULL,
Rec_PutParUsrCodEncrypted,NULL,
diff --git a/swad_admin.c b/swad_admin.c
index 490f39f0d..64e4c6b64 100644
--- a/swad_admin.c
+++ b/swad_admin.c
@@ -102,33 +102,37 @@ void Adm_ReqAddAdm (Hie_Level_t Level)
(Level == Hie_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Level == Hie_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
- if (ICanRegister == Usr_I_CAN)
+ switch (ICanRegister)
{
- if (Adm_DB_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,Level)) // User is already an administrator of current institution/center/degree
- {
- Ale_ShowAlert (Ale_INFO,Txt_THE_USER_X_is_already_an_administrator_of_Y,
- Gbl.Usrs.Other.UsrDat.FullName,
- Gbl.Hierarchy.Node[Level].FullName);
- Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
- }
- else
- {
- /***** Show question and button to register user as administrator *****/
- /* Begin alert */
- Ale_ShowAlertAndButtonBegin (Ale_QUESTION,Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_X,
- Gbl.Hierarchy.Node[Level].FullName);
+ case Usr_I_CAN:
+ if (Adm_DB_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,Level)) // User is already an administrator of current institution/center/degree
+ {
+ Ale_ShowAlert (Ale_INFO,Txt_THE_USER_X_is_already_an_administrator_of_Y,
+ Gbl.Usrs.Other.UsrDat.FullName,
+ Gbl.Hierarchy.Node[Level].FullName);
+ Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
+ }
+ else
+ {
+ /***** Show question and button to register user as administrator *****/
+ /* Begin alert */
+ Ale_ShowAlertAndButtonBegin (Ale_QUESTION,Txt_Do_you_really_want_to_register_the_following_user_as_an_administrator_of_X,
+ Gbl.Hierarchy.Node[Level].FullName);
- /* Show user's record */
- Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
+ /* Show user's record */
+ Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
- /* End alert */
- Ale_ShowAlertAndButtonEnd (Enr_ActNewAdm[Level],NULL,NULL,
- Usr_PutParOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EnUsrCod,
- Btn_CREATE_BUTTON,Txt_Register_user_IN_A_COURSE_OR_DEGREE);
- }
+ /* End alert */
+ Ale_ShowAlertAndButtonEnd (Enr_ActNewAdm[Level],NULL,NULL,
+ Usr_PutParOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EnUsrCod,
+ Btn_CREATE_BUTTON,Txt_Register_user_IN_A_COURSE_OR_DEGREE);
+ }
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
else
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
@@ -198,16 +202,20 @@ static void Adm_AddAdm (Hie_Level_t Level)
(Level == Hie_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Level == Hie_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
- if (ICanRegister == Usr_I_CAN)
+ switch (ICanRegister)
{
- /***** Register administrator in current institution/center/degree in database *****/
- Adm_RegisterAdmin (&Gbl.Usrs.Other.UsrDat,Level);
+ case Usr_I_CAN:
+ /***** Register administrator in current institution/center/degree in database *****/
+ Adm_RegisterAdmin (&Gbl.Usrs.Other.UsrDat,Level);
- /***** Show user's record *****/
- Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
- }
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ /***** Show user's record *****/
+ Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
+ }
}
else
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
@@ -314,28 +322,32 @@ static void Adm_ReqRemOrRemAdm (Enr_ReqDelOrDelUsr_t ReqDelOrDelUsr,
(Level == Hie_CTR && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) ||
(Level == Hie_INS && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
- if (ICanRemove == Usr_I_CAN)
+ switch (ICanRemove)
{
- /* Check if the other user is an admin of the current institution/center/degree */
- if (Adm_DB_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,Level))
- { // The other user is an administrator of current institution/center/degree ==> ask for removing or remove her/him
- switch (ReqDelOrDelUsr)
- {
- case Enr_REQUEST_REMOVE_USR: // Ask if remove administrator from current institution
- Adm_AskIfRemAdm (MeOrOther,Level);
- break;
- case Enr_REMOVE_USR: // Remove administrator from current institution
- Adm_EffectivelyRemAdm (&Gbl.Usrs.Other.UsrDat,Level);
- break;
- }
- }
- else // The other user is not an administrator of current institution
- Ale_ShowAlert (Ale_WARNING,Txt_THE_USER_X_is_not_an_administrator_of_Y,
- Gbl.Usrs.Other.UsrDat.FullName,
- Gbl.Hierarchy.Node[Level].FullName);
+ case Usr_I_CAN:
+ /* Check if the other user is an admin of the current institution/center/degree */
+ if (Adm_DB_CheckIfUsrIsAdm (Gbl.Usrs.Other.UsrDat.UsrCod,Level))
+ { // The other user is an administrator of current institution/center/degree ==> ask for removing or remove her/him
+ switch (ReqDelOrDelUsr)
+ {
+ case Enr_REQUEST_REMOVE_USR: // Ask if remove administrator from current institution
+ Adm_AskIfRemAdm (MeOrOther,Level);
+ break;
+ case Enr_REMOVE_USR: // Remove administrator from current institution
+ Adm_EffectivelyRemAdm (&Gbl.Usrs.Other.UsrDat,Level);
+ break;
+ }
+ }
+ else // The other user is not an administrator of current institution
+ Ale_ShowAlert (Ale_WARNING,Txt_THE_USER_X_is_not_an_administrator_of_Y,
+ Gbl.Usrs.Other.UsrDat.FullName,
+ Gbl.Hierarchy.Node[Level].FullName);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
else
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
diff --git a/swad_agenda.c b/swad_agenda.c
index c993849d5..04f21c714 100644
--- a/swad_agenda.c
+++ b/swad_agenda.c
@@ -393,7 +393,6 @@ void Agd_ShowUsrAgenda (void)
extern const char *Hlp_PROFILE_Agenda_public_agenda;
extern const char *Txt_Public_agenda_USER;
struct Agd_Agenda Agenda;
- bool Error = true;
Usr_MeOrOther_t MeOrOther;
char *Title;
static struct Usr_Data *UsrDat[Usr_NUM_ME_OR_OTHER] =
@@ -409,33 +408,36 @@ void Agd_ShowUsrAgenda (void)
/***** Get user *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- if (Agd_CheckIfICanViewUsrAgenda (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
+ switch (Agd_CheckIfICanViewUsrAgenda (&Gbl.Usrs.Other.UsrDat))
{
- Error = false;
+ case Usr_I_CAN:
+ /***** Reset agenda context *****/
+ Agd_ResetAgenda (&Agenda);
- /***** Reset agenda context *****/
- Agd_ResetAgenda (&Agenda);
+ /***** Begin box *****/
+ MeOrOther = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod);
+ if (asprintf (&Title,Txt_Public_agenda_USER,UsrDat[MeOrOther]->FullName) < 0)
+ Err_NotEnoughMemoryExit ();
+ Box_BoxBegin (Title,
+ FuncPutIcons[MeOrOther],UsrDat[MeOrOther]->EnUsrCod,
+ Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
+ free (Title);
- /***** Begin box *****/
- MeOrOther = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod);
- if (asprintf (&Title,Txt_Public_agenda_USER,UsrDat[MeOrOther]->FullName) < 0)
- Err_NotEnoughMemoryExit ();
- Box_BoxBegin (Title,
- FuncPutIcons[MeOrOther],UsrDat[MeOrOther]->EnUsrCod,
- Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE);
- free (Title);
+ /***** Show the current events in the user's agenda *****/
+ Agd_ShowEventsToday (&Agenda,Agd_ANOTHER_AGENDA_TODAY);
- /***** Show the current events in the user's agenda *****/
- Agd_ShowEventsToday (&Agenda,Agd_ANOTHER_AGENDA_TODAY);
+ /***** Show all visible events in the user's agenda *****/
+ Agd_ShowEvents (&Agenda,Agd_ANOTHER_AGENDA);
- /***** Show all visible events in the user's agenda *****/
- Agd_ShowEvents (&Agenda,Agd_ANOTHER_AGENDA);
-
- /***** End box *****/
- Box_BoxEnd ();
+ /***** End box *****/
+ Box_BoxEnd ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
-
- if (Error)
+ else
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
diff --git a/swad_attendance.c b/swad_attendance.c
index 6904e8fe2..5487d8a60 100644
--- a/swad_attendance.c
+++ b/swad_attendance.c
@@ -1757,20 +1757,22 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
"DAT_SMALL",
The_GetSuffix (),
The_GetColorRows ());
- if (ICanEditStdComment == Usr_I_CAN) // Show with form
+ switch (ICanEditStdComment)
{
- HTM_TEXTAREA_Begin ("name=\"CommentStd%s\" cols=\"40\" rows=\"3\""
- " class=\"INPUT_%s\"",
- UsrDat->EnUsrCod,
- The_GetSuffix ());
+ case Usr_I_CAN: // Show with form
+ HTM_TEXTAREA_Begin ("name=\"CommentStd%s\" cols=\"40\" rows=\"3\""
+ " class=\"INPUT_%s\"",
+ UsrDat->EnUsrCod,
+ The_GetSuffix ());
+ HTM_Txt (CommentStd);
+ HTM_TEXTAREA_End ();
+ break;
+ case Usr_I_CAN_NOT: // Show without form
+ default:
+ Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
+ CommentStd,Cns_MAX_BYTES_TEXT,Str_DONT_REMOVE_SPACES);
HTM_Txt (CommentStd);
- HTM_TEXTAREA_End ();
- }
- else // Show without form
- {
- Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
- CommentStd,Cns_MAX_BYTES_TEXT,Str_DONT_REMOVE_SPACES);
- HTM_Txt (CommentStd);
+ break;
}
HTM_TD_End ();
@@ -1780,22 +1782,27 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
"DAT_SMALL",
The_GetSuffix (),
The_GetColorRows ());
- if (ICanEditTchComment == Usr_I_CAN) // Show with form
+ switch (ICanEditTchComment)
{
- HTM_TEXTAREA_Begin ("name=\"CommentTch%s\" cols=\"40\" rows=\"3\""
- " class=\"INPUT_%s\"",
- UsrDat->EnUsrCod,
- The_GetSuffix ());
- HTM_Txt (CommentTch);
- HTM_TEXTAREA_End ();
- }
- else if (Event->CommentTchVisible) // Show without form
- {
- Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
- CommentTch,Cns_MAX_BYTES_TEXT,
- Str_DONT_REMOVE_SPACES);
- HTM_Txt (CommentTch);
- }
+ case Usr_I_CAN: // Show with form
+ HTM_TEXTAREA_Begin ("name=\"CommentTch%s\" cols=\"40\" rows=\"3\""
+ " class=\"INPUT_%s\"",
+ UsrDat->EnUsrCod,
+ The_GetSuffix ());
+ HTM_Txt (CommentTch);
+ HTM_TEXTAREA_End ();
+ break;
+ case Usr_I_CAN_NOT: // Show without form
+ default:
+ if (Event->CommentTchVisible)
+ {
+ Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
+ CommentTch,Cns_MAX_BYTES_TEXT,
+ Str_DONT_REMOVE_SPACES);
+ HTM_Txt (CommentTch);
+ }
+ break;
+ }
HTM_TD_End ();
/***** End table row *****/
diff --git a/swad_browser.c b/swad_browser.c
index 962b8530b..2cb4832eb 100644
--- a/swad_browser.c
+++ b/swad_browser.c
@@ -4183,25 +4183,35 @@ static void Brw_PutIconRemove (void)
{
HTM_TD_Begin ("class=\"BM %s\"",The_GetColorRows ());
- if (Brw_GetIfICanEditFileOrFolder () == Usr_I_CAN) // Can I remove this?
- switch (Gbl.FileBrowser.FilFolLnk.Type)
- {
- case Brw_IS_FILE:
- case Brw_IS_LINK:
- /***** Form to remove a file or link *****/
- Ico_PutContextualIconToRemove (Brw_ActAskRemoveFile[Gbl.FileBrowser.Type],NULL,
- Brw_PutImplicitParsFileBrowser,&Gbl.FileBrowser.FilFolLnk);
- break;
- case Brw_IS_FOLDER:
- /***** Form to remove a folder *****/
- Ico_PutContextualIconToRemove (Brw_ActRemoveFolder[Gbl.FileBrowser.Type],NULL,
- Brw_PutImplicitParsFileBrowser,&Gbl.FileBrowser.FilFolLnk);
- break;
- default:
- break;
- }
- else
- Ico_PutIconRemovalNotAllowed ();
+ switch (Brw_GetIfICanEditFileOrFolder ()) // Can I remove this?
+ {
+ case Usr_I_CAN:
+ switch (Gbl.FileBrowser.FilFolLnk.Type)
+ {
+ case Brw_IS_FILE:
+ case Brw_IS_LINK:
+ /***** Form to remove a file or link *****/
+ Ico_PutContextualIconToRemove (Brw_ActAskRemoveFile[Gbl.FileBrowser.Type],
+ NULL,
+ Brw_PutImplicitParsFileBrowser,
+ &Gbl.FileBrowser.FilFolLnk);
+ break;
+ case Brw_IS_FOLDER:
+ /***** Form to remove a folder *****/
+ Ico_PutContextualIconToRemove (Brw_ActRemoveFolder[Gbl.FileBrowser.Type],
+ NULL,
+ Brw_PutImplicitParsFileBrowser,
+ &Gbl.FileBrowser.FilFolLnk);
+ break;
+ default:
+ break;
+ }
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconRemovalNotAllowed ();
+ break;
+ }
HTM_TD_End ();
}
@@ -4232,18 +4242,21 @@ static void Brw_PutIconPaste (unsigned Level)
HTM_TD_Begin ("class=\"BM %s\"",The_GetColorRows ());
if (Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_FOLDER) // Can't paste in a file or link
- {
- /* Icon to paste */
- if (Brw_CheckIfCanPasteIn (Level) == Usr_I_CAN)
+ /***** Icon to paste *****/
+ switch (Brw_CheckIfCanPasteIn (Level))
{
- /***** Form to paste the content of the clipboard *****/
- Ico_PutContextualIconToPaste (Brw_ActPaste[Gbl.FileBrowser.Type],
- Brw_PutImplicitParsFileBrowser,&Gbl.FileBrowser.FilFolLnk);
+ case Usr_I_CAN:
+ /* Form to paste the content of the clipboard */
+ Ico_PutContextualIconToPaste (Brw_ActPaste[Gbl.FileBrowser.Type],
+ Brw_PutImplicitParsFileBrowser,
+ &Gbl.FileBrowser.FilFolLnk);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ /* Icon to paste inactive */
+ Ico_PutIconOff ("paste.svg",Ico_BLACK,Txt_Copy_not_allowed);
+ break;
}
- else
- /* Icon to paste inactive */
- Ico_PutIconOff ("paste.svg",Ico_BLACK,Txt_Copy_not_allowed);
- }
HTM_TD_End ();
}
@@ -4464,59 +4477,61 @@ static void Brw_PutIconFolder (unsigned Level,
HTM_TD_Begin ("class=\"BM %s\"",The_GetColorRows ());
/***** Put icon to create a new file or folder *****/
- if (Brw_CheckIfICanCreateIntoFolder (Level) == Usr_I_CAN) // I can create a new file or folder
+ switch (Brw_CheckIfICanCreateIntoFolder (Level)) // I can create a new file or folder
{
- if (IconSubtree == Brw_ICON_TREE_EXPAND)
- {
- /***** Visible icon with folder closed *****/
- Brw_PutIconFolderWithPlus (FileBrowserId,RowId,
- false, // Closed
- HidVis_VISIBLE); // Visible
+ case Usr_I_CAN:
+ if (IconSubtree == Brw_ICON_TREE_EXPAND)
+ {
+ /* Visible icon with folder closed */
+ Brw_PutIconFolderWithPlus (FileBrowserId,RowId,
+ false, // Closed
+ HidVis_VISIBLE); // Visible
- /***** Hidden icon with folder open *****/
- Brw_PutIconFolderWithPlus (FileBrowserId,RowId,
- true, // Open
- HidVis_HIDDEN); // Hidden
- }
- else
- {
- /***** Hidden icon with folder closed *****/
- Brw_PutIconFolderWithPlus (FileBrowserId,RowId,
- false, // Closed
- HidVis_HIDDEN); // Hidden
+ /* Hidden icon with folder open */
+ Brw_PutIconFolderWithPlus (FileBrowserId,RowId,
+ true, // Open
+ HidVis_HIDDEN); // Hidden
+ }
+ else
+ {
+ /* Hidden icon with folder closed */
+ Brw_PutIconFolderWithPlus (FileBrowserId,RowId,
+ false, // Closed
+ HidVis_HIDDEN); // Hidden
- /***** Visible icon with folder open *****/
- Brw_PutIconFolderWithPlus (FileBrowserId,RowId,
- true, // Open
- HidVis_VISIBLE); // Visible
- }
- }
- else // I can't create a new file or folder
- {
- if (IconSubtree == Brw_ICON_TREE_EXPAND)
- {
- /***** Visible icon with folder closed *****/
- Brw_PutIconFolderWithoutPlus (FileBrowserId,RowId,
- false, // Closed
- HidVis_VISIBLE);
+ /* Visible icon with folder open */
+ Brw_PutIconFolderWithPlus (FileBrowserId,RowId,
+ true, // Open
+ HidVis_VISIBLE); // Visible
+ }
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ if (IconSubtree == Brw_ICON_TREE_EXPAND)
+ {
+ /* Visible icon with folder closed */
+ Brw_PutIconFolderWithoutPlus (FileBrowserId,RowId,
+ false, // Closed
+ HidVis_VISIBLE);
- /***** Hidden icon with folder open *****/
- Brw_PutIconFolderWithoutPlus (FileBrowserId,RowId,
- true, // Open
- HidVis_HIDDEN);
- }
- else
- {
- /***** Hidden icon with folder closed *****/
- Brw_PutIconFolderWithoutPlus (FileBrowserId,RowId,
- false, // Closed
- HidVis_HIDDEN);
+ /* Hidden icon with folder open */
+ Brw_PutIconFolderWithoutPlus (FileBrowserId,RowId,
+ true, // Open
+ HidVis_HIDDEN);
+ }
+ else
+ {
+ /* Hidden icon with folder closed */
+ Brw_PutIconFolderWithoutPlus (FileBrowserId,RowId,
+ false, // Closed
+ HidVis_HIDDEN);
- /***** Visible icon with folder open *****/
- Brw_PutIconFolderWithoutPlus (FileBrowserId,RowId,
- true, // Open
- HidVis_VISIBLE);
- }
+ /* Visible icon with folder open */
+ Brw_PutIconFolderWithoutPlus (FileBrowserId,RowId,
+ true, // Open
+ HidVis_VISIBLE);
+ }
+ break;
}
/***** End cell *****/
@@ -4720,33 +4735,36 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic,
HTM_NBSP ();
- if (Brw_GetIfICanEditFileOrFolder () == Usr_I_CAN) // Can I rename this folder?
+ switch (Brw_GetIfICanEditFileOrFolder ()) // Can I rename this folder?
{
- /***** Form to rename folder *****/
- Frm_BeginForm (Brw_ActRenameFolder[Gbl.FileBrowser.Type]);
- Brw_PutImplicitParsFileBrowser (&Gbl.FileBrowser.FilFolLnk);
- HTM_INPUT_TEXT ("NewFolderName",Brw_MAX_CHARS_FOLDER,Gbl.FileBrowser.FilFolLnk.Name,
- HTM_SUBMIT_ON_CHANGE,
- "class=\"LST_EDIT %s_%s %s\"",
- InputStyle,
- The_GetSuffix (),
- Gbl.FileBrowser.Clipboard.IsThisFile ? "LIGHT_GREEN" :
- The_GetColorRows ());
- Frm_EndForm ();
- }
- else
- {
- /***** Write name of the folder *****/
- if (Level == 1 && Brw_TypeIsAdmAsg[Gbl.FileBrowser.Type])
- HTM_SPAN_Begin ("title=\"%s\"",Gbl.FileBrowser.Asg.Title);
+ case Usr_I_CAN:
+ /***** Form to rename folder *****/
+ Frm_BeginForm (Brw_ActRenameFolder[Gbl.FileBrowser.Type]);
+ Brw_PutImplicitParsFileBrowser (&Gbl.FileBrowser.FilFolLnk);
+ HTM_INPUT_TEXT ("NewFolderName",Brw_MAX_CHARS_FOLDER,
+ Gbl.FileBrowser.FilFolLnk.Name,
+ HTM_SUBMIT_ON_CHANGE,
+ "class=\"LST_EDIT %s_%s %s\"",
+ InputStyle,
+ The_GetSuffix (),
+ Gbl.FileBrowser.Clipboard.IsThisFile ? "LIGHT_GREEN" :
+ The_GetColorRows ());
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ /***** Write name of the folder *****/
+ if (Level == 1 && Brw_TypeIsAdmAsg[Gbl.FileBrowser.Type])
+ HTM_SPAN_Begin ("title=\"%s\"",Gbl.FileBrowser.Asg.Title);
- HTM_STRONG_Begin ();
- HTM_Txt (FileNameToShow);
- HTM_STRONG_End ();
- HTM_NBSP ();
+ HTM_STRONG_Begin ();
+ HTM_Txt (FileNameToShow);
+ HTM_STRONG_End ();
+ HTM_NBSP ();
- if (Level == 1 && Brw_TypeIsAdmAsg[Gbl.FileBrowser.Type])
- HTM_SPAN_End ();
+ if (Level == 1 && Brw_TypeIsAdmAsg[Gbl.FileBrowser.Type])
+ HTM_SPAN_End ();
+ break;
}
/***** End cell *****/
@@ -4934,21 +4952,25 @@ void Brw_AskRemFileFromTree (void)
Brw_GetParAndInitFileBrowser ();
/***** Button of confirmation of removing *****/
- if (Brw_CheckIfICanEditFileOrFolder (Gbl.FileBrowser.Level) == Usr_I_CAN) // Can I remove this file?
+ switch (Brw_CheckIfICanEditFileOrFolder (Gbl.FileBrowser.Level)) // Can I remove this file?
{
- /***** Show question and button to remove file/link *****/
- Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Type,
- Gbl.FileBrowser.Level,
- Gbl.FileBrowser.FilFolLnk.Type,
- Gbl.FileBrowser.FilFolLnk.Name,
- FileNameToShow);
- Ale_ShowAlertRemove (Brw_ActRemoveFile[Gbl.FileBrowser.Type],NULL,
- Brw_PutImplicitParsFileBrowser,&Gbl.FileBrowser.FilFolLnk,
- Txt_Do_you_really_want_to_remove_FILE_OR_LINK_X,
- FileNameToShow);
+ case Usr_I_CAN:
+ /***** Show question and button to remove file/link *****/
+ Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Type,
+ Gbl.FileBrowser.Level,
+ Gbl.FileBrowser.FilFolLnk.Type,
+ Gbl.FileBrowser.FilFolLnk.Name,
+ FileNameToShow);
+ Ale_ShowAlertRemove (Brw_ActRemoveFile[Gbl.FileBrowser.Type],NULL,
+ Brw_PutImplicitParsFileBrowser,&Gbl.FileBrowser.FilFolLnk,
+ Txt_Do_you_really_want_to_remove_FILE_OR_LINK_X,
+ FileNameToShow);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Err_ShowErrorAndExit (Txt_You_can_not_remove_this_file_or_link);
+ break;
}
- else
- Err_ShowErrorAndExit (Txt_You_can_not_remove_this_file_or_link);
/***** Show again file browser *****/
Brw_ShowAgainFileBrowserOrWorks ();
@@ -4969,40 +4991,44 @@ void Brw_RemFileFromTree (void)
/***** Get parameters related to file browser *****/
Brw_GetParAndInitFileBrowser ();
- if (Brw_CheckIfICanEditFileOrFolder (Gbl.FileBrowser.Level) == Usr_I_CAN) // Can I remove this file?
+ switch (Brw_CheckIfICanEditFileOrFolder (Gbl.FileBrowser.Level)) // Can I remove this file?
{
- snprintf (Path,sizeof (Path),"%s/%s",
- Gbl.FileBrowser.Path.AboveRootFolder,
- Gbl.FileBrowser.FilFolLnk.Full);
+ case Usr_I_CAN:
+ snprintf (Path,sizeof (Path),"%s/%s",
+ Gbl.FileBrowser.Path.AboveRootFolder,
+ Gbl.FileBrowser.FilFolLnk.Full);
- /***** Check if is a file/link or a folder *****/
- if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
- Err_ShowErrorAndExit ("Can not get information about a file or folder.");
- else if (S_ISREG (FileStatus.st_mode)) // It's a file or a link
- {
- /* Name of the file/link to be shown */
- Brw_GetFileNameToShow (Str_FileIs (Gbl.FileBrowser.FilFolLnk.Name,"url") ? Brw_IS_LINK :
- Brw_IS_FILE,
- Gbl.FileBrowser.FilFolLnk.Name,FileNameToShow);
+ /***** Check if is a file/link or a folder *****/
+ if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
+ Err_ShowErrorAndExit ("Can not get information about a file or folder.");
+ else if (S_ISREG (FileStatus.st_mode)) // It's a file or a link
+ {
+ /* Name of the file/link to be shown */
+ Brw_GetFileNameToShow (Str_FileIs (Gbl.FileBrowser.FilFolLnk.Name,"url") ? Brw_IS_LINK :
+ Brw_IS_FILE,
+ Gbl.FileBrowser.FilFolLnk.Name,FileNameToShow);
- /* Remove file/link from disk and database */
- Brw_RemoveFileFromDiskAndDB (Path,
- Gbl.FileBrowser.FilFolLnk.Full);
+ /* Remove file/link from disk and database */
+ Brw_RemoveFileFromDiskAndDB (Path,
+ Gbl.FileBrowser.FilFolLnk.Full);
- /* Remove affected clipboards */
- Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
- Gbl.Usrs.Me.UsrDat.UsrCod,
- Gbl.Usrs.Other.UsrDat.UsrCod);
+ /* Remove affected clipboards */
+ Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ Gbl.Usrs.Other.UsrDat.UsrCod);
- /* Message of confirmation of removing */
- Ale_ShowAlert (Ale_SUCCESS,Txt_FILE_X_removed,
- FileNameToShow);
- }
- else // File / link not found
- Err_FileFolderNotFoundExit ();
+ /* Message of confirmation of removing */
+ Ale_ShowAlert (Ale_SUCCESS,Txt_FILE_X_removed,
+ FileNameToShow);
+ }
+ else // File / link not found
+ Err_FileFolderNotFoundExit ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Err_ShowErrorAndExit (Txt_You_can_not_remove_this_file_or_link);
+ break;
}
- else
- Err_ShowErrorAndExit (Txt_You_can_not_remove_this_file_or_link);
/***** Show again file browser *****/
Brw_ShowAgainFileBrowserOrWorks ();
@@ -5022,40 +5048,44 @@ void Brw_RemFolderFromTree (void)
/***** Get parameters related to file browser *****/
Brw_GetParAndInitFileBrowser ();
- if (Brw_CheckIfICanEditFileOrFolder (Gbl.FileBrowser.Level) == Usr_I_CAN) // Can I remove this folder?
+ switch (Brw_CheckIfICanEditFileOrFolder (Gbl.FileBrowser.Level)) // Can I remove this folder?
{
- snprintf (Path,sizeof (Path),"%s/%s",
- Gbl.FileBrowser.Path.AboveRootFolder,
- Gbl.FileBrowser.FilFolLnk.Full);
+ case Usr_I_CAN:
+ snprintf (Path,sizeof (Path),"%s/%s",
+ Gbl.FileBrowser.Path.AboveRootFolder,
+ Gbl.FileBrowser.FilFolLnk.Full);
- /***** Check if it's a file or a folder *****/
- if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
- Err_ShowErrorAndExit ("Can not get information about a file or folder.");
- else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
- if (Brw_RemoveFolderFromDiskAndDB (Path,
- Gbl.FileBrowser.FilFolLnk.Full))
- {
- if (errno == ENOTEMPTY) // The directory is not empty
- Brw_AskConfirmRemoveFolderNotEmpty ();
- else // The directory is empty
- Err_ShowErrorAndExit ("Can not remove folder.");
- }
- else
- {
- /* Remove affected clipboards */
- Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
- Gbl.Usrs.Me.UsrDat.UsrCod,
- Gbl.Usrs.Other.UsrDat.UsrCod);
+ /***** Check if it's a file or a folder *****/
+ if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
+ Err_ShowErrorAndExit ("Can not get information about a file or folder.");
+ else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
+ if (Brw_RemoveFolderFromDiskAndDB (Path,
+ Gbl.FileBrowser.FilFolLnk.Full))
+ {
+ if (errno == ENOTEMPTY) // The directory is not empty
+ Brw_AskConfirmRemoveFolderNotEmpty ();
+ else // The directory is empty
+ Err_ShowErrorAndExit ("Can not remove folder.");
+ }
+ else
+ {
+ /* Remove affected clipboards */
+ Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ Gbl.Usrs.Other.UsrDat.UsrCod);
- /* Message of confirmation of successfull removing */
- Ale_ShowAlert (Ale_SUCCESS,Txt_Folder_X_removed,
- Gbl.FileBrowser.FilFolLnk.Name);
- }
- else // Folder not found
- Err_FileFolderNotFoundExit ();
+ /* Message of confirmation of successfull removing */
+ Ale_ShowAlert (Ale_SUCCESS,Txt_Folder_X_removed,
+ Gbl.FileBrowser.FilFolLnk.Name);
+ }
+ else // Folder not found
+ Err_FileFolderNotFoundExit ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Err_ShowErrorAndExit (Txt_You_can_not_remove_this_folder);
+ break;
}
- else
- Err_ShowErrorAndExit (Txt_You_can_not_remove_this_folder);
/***** Show again file browser *****/
Brw_ShowAgainFileBrowserOrWorks ();
@@ -5769,189 +5799,194 @@ static void Brw_PasteClipboard (struct BrwSiz_BrowserSize *Size)
Pasted.NumFolds = 0;
Gbl.FileBrowser.Clipboard.IsThisTree = Brw_CheckIfClipboardIsInThisTree ();
- if (Brw_CheckIfCanPasteIn (Gbl.FileBrowser.Level) == Usr_I_CAN)
+ switch (Brw_CheckIfCanPasteIn (Gbl.FileBrowser.Level))
{
- /***** Construct the relative path of the origin file or folder *****/
- switch (Gbl.FileBrowser.Clipboard.FileBrowser)
- {
- case Brw_ADMI_DOC_INS:
- case Brw_ADMI_SHR_INS:
- Hie[Hie_INS].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
- if (Hie_GetDataByCod[Hie_INS] (&Hie[Hie_INS]))
- snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
- Cfg_PATH_INS_PRIVATE,
- (unsigned) (Hie[Hie_INS].HieCod % 100),
- (unsigned) Hie[Hie_INS].HieCod,
- Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
- else
- Err_WrongCopySrcExit ();
- break;
- case Brw_ADMI_DOC_CTR:
- case Brw_ADMI_SHR_CTR:
- Hie[Hie_CTR].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
- if (Hie_GetDataByCod[Hie_CTR] (&Hie[Hie_CTR]))
- snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
- Cfg_PATH_CTR_PRIVATE,
- (unsigned) (Hie[Hie_CTR].HieCod % 100),
- (unsigned) Hie[Hie_CTR].HieCod,
- Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
- else
- Err_WrongCopySrcExit ();
- break;
- case Brw_ADMI_DOC_DEG:
- case Brw_ADMI_SHR_DEG:
- Hie[Hie_DEG].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
- if (Hie_GetDataByCod[Hie_DEG] (&Hie[Hie_DEG]))
- snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
- Cfg_PATH_DEG_PRIVATE,
- (unsigned) (Hie[Hie_DEG].HieCod % 100),
- (unsigned) Hie[Hie_DEG].HieCod,
- Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
- else
- Err_WrongCopySrcExit ();
- break;
- case Brw_ADMI_DOC_CRS:
- case Brw_ADMI_TCH_CRS:
- case Brw_ADMI_SHR_CRS:
- case Brw_ADMI_MRK_CRS:
- Hie[Hie_CRS].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
- if (Hie_GetDataByCod[Hie_CRS] (&Hie[Hie_CRS]))
- snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s",
- Cfg_PATH_CRS_PRIVATE,Hie[Hie_CRS].HieCod,
- Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
- else
- Err_WrongCopySrcExit ();
- break;
- case Brw_ADMI_DOC_GRP:
- case Brw_ADMI_TCH_GRP:
- case Brw_ADMI_SHR_GRP:
- case Brw_ADMI_MRK_GRP:
- GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.HieCod;
- Grp_GetGroupDataByCod (&GrpDat);
- Hie[Hie_CRS].HieCod = GrpDat.CrsCod;
- if (Hie_GetDataByCod[Hie_CRS] (&Hie[Hie_CRS]))
- snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%ld/%s",
- Cfg_PATH_CRS_PRIVATE,Hie[Hie_CRS].HieCod,Cfg_FOLDER_GRP,
- GrpDat.GrpCod,
- Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
- else
- Err_WrongCopySrcExit ();
- break;
- case Brw_ADMI_ASG_CRS:
- case Brw_ADMI_WRK_CRS:
- Hie[Hie_CRS].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
- if (Hie_GetDataByCod[Hie_CRS] (&Hie[Hie_CRS]))
- {
- Usr_UsrDataConstructor (&UsrDat);
- if (Usr_DB_ChkIfUsrCodExists (Gbl.FileBrowser.Clipboard.WorksUsrCod))
-
- UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
- Usr_GetAllUsrDataFromUsrCod (&UsrDat,
- Usr_DONT_GET_PREFS,
- Usr_DONT_GET_ROLE_IN_CRS); // Check that user exists
- snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
- Cfg_PATH_CRS_PRIVATE,Hie[Hie_CRS].HieCod,Cfg_FOLDER_USR,
- (unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100),
- Gbl.FileBrowser.Clipboard.WorksUsrCod,
- Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
- Usr_UsrDataDestructor (&UsrDat);
- }
- else
- Err_WrongCopySrcExit ();
- break;
- case Brw_ADMI_ASG_USR:
- case Brw_ADMI_WRK_USR:
- Hie[Hie_CRS].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
- if (Hie_GetDataByCod[Hie_CRS] (&Hie[Hie_CRS]))
- snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
- Cfg_PATH_CRS_PRIVATE,Hie[Hie_CRS].HieCod,Cfg_FOLDER_USR,
- (unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100),
- Gbl.Usrs.Me.UsrDat.UsrCod,
- Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
- else
- Err_WrongCopySrcExit ();
- break;
- case Brw_ADMI_DOC_PRJ:
- case Brw_ADMI_ASS_PRJ:
- PrjCod = Gbl.FileBrowser.Clipboard.HieCod;
- Hie[Hie_CRS].HieCod = Prj_DB_GetCrsOfPrj (PrjCod);
- if (Hie_GetDataByCod[Hie_CRS] (&Hie[Hie_CRS]))
- snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
- Cfg_PATH_CRS_PRIVATE,Hie[Hie_CRS].HieCod,Cfg_FOLDER_PRJ,
- (unsigned) (PrjCod % 100),
- PrjCod,
- Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
- else
- Err_WrongCopySrcExit ();
- break;
- case Brw_ADMI_BRF_USR:
- snprintf (PathOrg,sizeof (PathOrg),"%s/%s",
- Gbl.Usrs.Me.PathDir,
- Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
- break;
- default:
- Err_WrongFileBrowserExit ();
- break;
- }
-
- /***** Paste tree (path in clipboard) into folder *****/
- BrwSiz_CalcSizeOfDir (Size,Gbl.FileBrowser.Path.RootFolder);
- BrwSiz_SetMaxQuota (Size);
- if (Brw_PasteTreeIntoFolder (Size,
- Gbl.FileBrowser.Clipboard.Level,
- PathOrg,
- Gbl.FileBrowser.FilFolLnk.Full,
- &Pasted,
- &FirstFilCod))
- {
- /***** Write message of success *****/
- Ale_ShowAlert (Ale_SUCCESS,"%s
"
- "%s: %u
"
- "%s: %u
"
- "%s: %u",
- Txt_The_copy_has_been_successful,
- Txt_Files_copied ,Pasted.NumFiles,
- Txt_Links_copied ,Pasted.NumLinks,
- Txt_Folders_copied,Pasted.NumFolds);
-
- /***** Notify new files *****/
- if (Pasted.NumFiles ||
- Pasted.NumLinks)
+ case Usr_I_CAN:
+ /***** Construct the relative path of the origin file or folder *****/
+ switch (Gbl.FileBrowser.Clipboard.FileBrowser)
{
- FileMetadata.FilCod = FirstFilCod;
- Brw_GetFileMetadataByCod (&FileMetadata);
-
- /* Notify only is destination folder is visible */
- if (!Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingMetadata (&FileMetadata))
- switch (Gbl.FileBrowser.Type)
+ case Brw_ADMI_DOC_INS:
+ case Brw_ADMI_SHR_INS:
+ Hie[Hie_INS].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
+ if (Hie_GetDataByCod[Hie_INS] (&Hie[Hie_INS]))
+ snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
+ Cfg_PATH_INS_PRIVATE,
+ (unsigned) (Hie[Hie_INS].HieCod % 100),
+ (unsigned) Hie[Hie_INS].HieCod,
+ Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
+ else
+ Err_WrongCopySrcExit ();
+ break;
+ case Brw_ADMI_DOC_CTR:
+ case Brw_ADMI_SHR_CTR:
+ Hie[Hie_CTR].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
+ if (Hie_GetDataByCod[Hie_CTR] (&Hie[Hie_CTR]))
+ snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
+ Cfg_PATH_CTR_PRIVATE,
+ (unsigned) (Hie[Hie_CTR].HieCod % 100),
+ (unsigned) Hie[Hie_CTR].HieCod,
+ Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
+ else
+ Err_WrongCopySrcExit ();
+ break;
+ case Brw_ADMI_DOC_DEG:
+ case Brw_ADMI_SHR_DEG:
+ Hie[Hie_DEG].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
+ if (Hie_GetDataByCod[Hie_DEG] (&Hie[Hie_DEG]))
+ snprintf (PathOrg,sizeof (PathOrg),"%s/%02u/%u/%s",
+ Cfg_PATH_DEG_PRIVATE,
+ (unsigned) (Hie[Hie_DEG].HieCod % 100),
+ (unsigned) Hie[Hie_DEG].HieCod,
+ Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
+ else
+ Err_WrongCopySrcExit ();
+ break;
+ case Brw_ADMI_DOC_CRS:
+ case Brw_ADMI_TCH_CRS:
+ case Brw_ADMI_SHR_CRS:
+ case Brw_ADMI_MRK_CRS:
+ Hie[Hie_CRS].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
+ if (Hie_GetDataByCod[Hie_CRS] (&Hie[Hie_CRS]))
+ snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s",
+ Cfg_PATH_CRS_PRIVATE,Hie[Hie_CRS].HieCod,
+ Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
+ else
+ Err_WrongCopySrcExit ();
+ break;
+ case Brw_ADMI_DOC_GRP:
+ case Brw_ADMI_TCH_GRP:
+ case Brw_ADMI_SHR_GRP:
+ case Brw_ADMI_MRK_GRP:
+ GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.HieCod;
+ Grp_GetGroupDataByCod (&GrpDat);
+ Hie[Hie_CRS].HieCod = GrpDat.CrsCod;
+ if (Hie_GetDataByCod[Hie_CRS] (&Hie[Hie_CRS]))
+ snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%ld/%s",
+ Cfg_PATH_CRS_PRIVATE,Hie[Hie_CRS].HieCod,Cfg_FOLDER_GRP,
+ GrpDat.GrpCod,
+ Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
+ else
+ Err_WrongCopySrcExit ();
+ break;
+ case Brw_ADMI_ASG_CRS:
+ case Brw_ADMI_WRK_CRS:
+ Hie[Hie_CRS].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
+ if (Hie_GetDataByCod[Hie_CRS] (&Hie[Hie_CRS]))
{
- case Brw_ADMI_DOC_CRS:
- case Brw_ADMI_DOC_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_DOCUMENT_FILE,FirstFilCod);
- break;
- case Brw_ADMI_TCH_CRS:
- case Brw_ADMI_TCH_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TEACHERS_FILE,FirstFilCod);
- break;
- case Brw_ADMI_SHR_CRS:
- case Brw_ADMI_SHR_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_SHARED_FILE,FirstFilCod);
- break;
- case Brw_ADMI_MRK_CRS:
- case Brw_ADMI_MRK_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_MARKS_FILE,FirstFilCod);
- break;
- default:
- break;
- }
- }
- }
+ Usr_UsrDataConstructor (&UsrDat);
+ if (Usr_DB_ChkIfUsrCodExists (Gbl.FileBrowser.Clipboard.WorksUsrCod))
- /***** Add path where new tree is pasted to table of expanded folders *****/
- Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Full);
+ UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
+ Usr_GetAllUsrDataFromUsrCod (&UsrDat,
+ Usr_DONT_GET_PREFS,
+ Usr_DONT_GET_ROLE_IN_CRS); // Check that user exists
+ snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
+ Cfg_PATH_CRS_PRIVATE,Hie[Hie_CRS].HieCod,Cfg_FOLDER_USR,
+ (unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100),
+ Gbl.FileBrowser.Clipboard.WorksUsrCod,
+ Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
+ Usr_UsrDataDestructor (&UsrDat);
+ }
+ else
+ Err_WrongCopySrcExit ();
+ break;
+ case Brw_ADMI_ASG_USR:
+ case Brw_ADMI_WRK_USR:
+ Hie[Hie_CRS].HieCod = Gbl.FileBrowser.Clipboard.HieCod;
+ if (Hie_GetDataByCod[Hie_CRS] (&Hie[Hie_CRS]))
+ snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
+ Cfg_PATH_CRS_PRIVATE,Hie[Hie_CRS].HieCod,Cfg_FOLDER_USR,
+ (unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100),
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
+ else
+ Err_WrongCopySrcExit ();
+ break;
+ case Brw_ADMI_DOC_PRJ:
+ case Brw_ADMI_ASS_PRJ:
+ PrjCod = Gbl.FileBrowser.Clipboard.HieCod;
+ Hie[Hie_CRS].HieCod = Prj_DB_GetCrsOfPrj (PrjCod);
+ if (Hie_GetDataByCod[Hie_CRS] (&Hie[Hie_CRS]))
+ snprintf (PathOrg,sizeof (PathOrg),"%s/%ld/%s/%02u/%ld/%s",
+ Cfg_PATH_CRS_PRIVATE,Hie[Hie_CRS].HieCod,Cfg_FOLDER_PRJ,
+ (unsigned) (PrjCod % 100),
+ PrjCod,
+ Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
+ else
+ Err_WrongCopySrcExit ();
+ break;
+ case Brw_ADMI_BRF_USR:
+ snprintf (PathOrg,sizeof (PathOrg),"%s/%s",
+ Gbl.Usrs.Me.PathDir,
+ Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
+ break;
+ default:
+ Err_WrongFileBrowserExit ();
+ break;
+ }
+
+ /***** Paste tree (path in clipboard) into folder *****/
+ BrwSiz_CalcSizeOfDir (Size,Gbl.FileBrowser.Path.RootFolder);
+ BrwSiz_SetMaxQuota (Size);
+ if (Brw_PasteTreeIntoFolder (Size,
+ Gbl.FileBrowser.Clipboard.Level,
+ PathOrg,
+ Gbl.FileBrowser.FilFolLnk.Full,
+ &Pasted,
+ &FirstFilCod))
+ {
+ /***** Write message of success *****/
+ Ale_ShowAlert (Ale_SUCCESS,"%s
"
+ "%s: %u
"
+ "%s: %u
"
+ "%s: %u",
+ Txt_The_copy_has_been_successful,
+ Txt_Files_copied ,Pasted.NumFiles,
+ Txt_Links_copied ,Pasted.NumLinks,
+ Txt_Folders_copied,Pasted.NumFolds);
+
+ /***** Notify new files *****/
+ if (Pasted.NumFiles ||
+ Pasted.NumLinks)
+ {
+ FileMetadata.FilCod = FirstFilCod;
+ Brw_GetFileMetadataByCod (&FileMetadata);
+
+ /* Notify only is destination folder is visible */
+ if (!Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingMetadata (&FileMetadata))
+ switch (Gbl.FileBrowser.Type)
+ {
+ case Brw_ADMI_DOC_CRS:
+ case Brw_ADMI_DOC_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_DOCUMENT_FILE,FirstFilCod);
+ break;
+ case Brw_ADMI_TCH_CRS:
+ case Brw_ADMI_TCH_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TEACHERS_FILE,FirstFilCod);
+ break;
+ case Brw_ADMI_SHR_CRS:
+ case Brw_ADMI_SHR_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_SHARED_FILE,FirstFilCod);
+ break;
+ case Brw_ADMI_MRK_CRS:
+ case Brw_ADMI_MRK_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_MARKS_FILE,FirstFilCod);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ /***** Add path where new tree is pasted to table of expanded folders *****/
+ Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Full);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ // It's difficult, but not impossible that a user sees this message
+ Err_ShowErrorAndExit (Txt_You_can_not_paste_file_or_folder_here);
+ break;
}
- else
- Err_ShowErrorAndExit (Txt_You_can_not_paste_file_or_folder_here); // It's difficult, but not impossible that a user sees this message
}
/*****************************************************************************/
@@ -6190,44 +6225,46 @@ void Brw_ShowFormFileBrowser (void)
Brw_GetParAndInitFileBrowser ();
/***** Check if creating a new folder or file is allowed *****/
- if (Brw_CheckIfICanCreateIntoFolder (Gbl.FileBrowser.Level) == Usr_I_CAN)
+ switch (Brw_CheckIfICanCreateIntoFolder (Gbl.FileBrowser.Level))
{
- /***** Name of the folder to be shown ****/
- Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Type,
- Gbl.FileBrowser.Level,
- Gbl.FileBrowser.FilFolLnk.Type,
- Gbl.FileBrowser.FilFolLnk.Name,
- FileNameToShow);
+ case Usr_I_CAN:
+ /***** Name of the folder to be shown ****/
+ Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Type,
+ Gbl.FileBrowser.Level,
+ Gbl.FileBrowser.FilFolLnk.Type,
+ Gbl.FileBrowser.FilFolLnk.Name,
+ FileNameToShow);
- /***** 1. Form to create a new folder *****/
- Brw_PutFormToCreateAFolder (FileNameToShow);
+ /***** 1. Form to create a new folder *****/
+ Brw_PutFormToCreateAFolder (FileNameToShow);
- /***** 2. Form to send a file *****/
- Brw_PutFormToUploadFilesUsingDropzone (FileNameToShow);
+ /***** 2. Form to send a file *****/
+ Brw_PutFormToUploadFilesUsingDropzone (FileNameToShow);
- /***** 3. Form to send a file *****/
- Brw_PutFormToUploadOneFileClassic (FileNameToShow);
+ /***** 3. Form to send a file *****/
+ Brw_PutFormToUploadOneFileClassic (FileNameToShow);
- /***** 4. Form to paste the content of the clipboard *****/
- if (Brw_GetMyClipboard ())
- {
- /***** Check if we can paste in this folder *****/
- Gbl.FileBrowser.Clipboard.IsThisTree = Brw_CheckIfClipboardIsInThisTree ();
- if (Brw_CheckIfCanPasteIn (Gbl.FileBrowser.Level) == Usr_I_CAN)
- Brw_PutFormToPasteAFileOrFolder (FileNameToShow);
- }
+ /***** 4. Form to paste the content of the clipboard *****/
+ if (Brw_GetMyClipboard ())
+ {
+ /***** Check if we can paste in this folder *****/
+ Gbl.FileBrowser.Clipboard.IsThisTree = Brw_CheckIfClipboardIsInThisTree ();
+ if (Brw_CheckIfCanPasteIn (Gbl.FileBrowser.Level) == Usr_I_CAN)
+ Brw_PutFormToPasteAFileOrFolder (FileNameToShow);
+ }
- /***** 5. Form to create a link *****/
- if (Gbl.FileBrowser.Type != Brw_ADMI_MRK_CRS &&
- Gbl.FileBrowser.Type != Brw_ADMI_MRK_GRP) // Do not create links in marks
- Brw_PutFormToCreateALink (FileNameToShow);
- }
- else
- {
- Err_ShowErrorAndExit (Txt_You_can_not_create_folders_files_or_links_here); // It's difficult, but not impossible that a user sees this message
+ /***** 5. Form to create a link *****/
+ if (Gbl.FileBrowser.Type != Brw_ADMI_MRK_CRS &&
+ Gbl.FileBrowser.Type != Brw_ADMI_MRK_GRP) // Do not create links in marks
+ Brw_PutFormToCreateALink (FileNameToShow);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Err_ShowErrorAndExit (Txt_You_can_not_create_folders_files_or_links_here); // It's difficult, but not impossible that a user sees this message
- /***** Show again file browser *****/
- Brw_ShowAgainFileBrowserOrWorks ();
+ /***** Show again file browser *****/
+ Brw_ShowAgainFileBrowserOrWorks ();
+ break;
}
}
@@ -6486,83 +6523,88 @@ void Brw_RecFolderFileBrowser (void)
Brw_GetParAndInitFileBrowser ();
/***** Check if creating a new folder is allowed *****/
- if (Brw_CheckIfICanCreateIntoFolder (Gbl.FileBrowser.Level) == Usr_I_CAN)
+ switch (Brw_CheckIfICanCreateIntoFolder (Gbl.FileBrowser.Level))
{
- if (Str_ConvertFilFolLnkNameToValid (Gbl.FileBrowser.NewFilFolLnkName))
- {
- /* In Gbl.FileBrowser.NewFilFolLnkName is the name of the new folder */
- snprintf (Path,sizeof (Path),"%s/%s",
- Gbl.FileBrowser.Path.AboveRootFolder,
- Gbl.FileBrowser.FilFolLnk.Full);
-
- if (strlen (Path) + 1 + strlen (Gbl.FileBrowser.NewFilFolLnkName) > PATH_MAX)
- Err_ShowErrorAndExit ("Path is too long.");
- Str_Concat (Path,"/",sizeof (Path) - 1);
- Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,sizeof (Path) - 1);
-
- /* Create the new directory */
- if (mkdir (Path,(mode_t) 0xFFF) == 0)
+ case Usr_I_CAN:
+ if (Str_ConvertFilFolLnkNameToValid (Gbl.FileBrowser.NewFilFolLnkName))
{
- /* Check if quota has been exceeded */
- BrwSiz_CalcSizeOfDir (Size,Gbl.FileBrowser.Path.RootFolder);
- BrwSiz_SetMaxQuota (Size);
- if (BrwSiz_CheckIfQuotaExceded (Size))
+ /* In Gbl.FileBrowser.NewFilFolLnkName is the name of the new folder */
+ snprintf (Path,sizeof (Path),"%s/%s",
+ Gbl.FileBrowser.Path.AboveRootFolder,
+ Gbl.FileBrowser.FilFolLnk.Full);
+
+ if (strlen (Path) + 1 + strlen (Gbl.FileBrowser.NewFilFolLnkName) > PATH_MAX)
+ Err_ShowErrorAndExit ("Path is too long.");
+ Str_Concat (Path,"/",sizeof (Path) - 1);
+ Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,sizeof (Path) - 1);
+
+ /* Create the new directory */
+ if (mkdir (Path,(mode_t) 0xFFF) == 0)
{
- Fil_RemoveTree (Path);
- Ale_ShowAlert (Ale_WARNING,Txt_Can_not_create_the_folder_X_because_it_would_exceed_the_disk_quota,
- Gbl.FileBrowser.NewFilFolLnkName);
+ /* Check if quota has been exceeded */
+ BrwSiz_CalcSizeOfDir (Size,Gbl.FileBrowser.Path.RootFolder);
+ BrwSiz_SetMaxQuota (Size);
+ if (BrwSiz_CheckIfQuotaExceded (Size))
+ {
+ Fil_RemoveTree (Path);
+ Ale_ShowAlert (Ale_WARNING,Txt_Can_not_create_the_folder_X_because_it_would_exceed_the_disk_quota,
+ Gbl.FileBrowser.NewFilFolLnkName);
+ }
+ else
+ {
+ /* Remove affected clipboards */
+ Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ Gbl.Usrs.Other.UsrDat.UsrCod);
+
+ /* Add path where new file is created to table of expanded folders */
+ Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Full);
+
+ /* Add entry to the table of files/folders */
+ snprintf (PathCompleteInTreeIncludingFolder,
+ sizeof (PathCompleteInTreeIncludingFolder),
+ "%s/%s",
+ Gbl.FileBrowser.FilFolLnk.Full,
+ Gbl.FileBrowser.NewFilFolLnkName);
+ Brw_DB_AddPath (Gbl.Usrs.Me.UsrDat.UsrCod,Brw_IS_FOLDER,
+ PathCompleteInTreeIncludingFolder,false,Brw_LICENSE_DEFAULT);
+
+ /* The folder has been created sucessfully */
+ Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Type,
+ Gbl.FileBrowser.Level,
+ Brw_IS_FOLDER,
+ Gbl.FileBrowser.FilFolLnk.Name,
+ FileNameToShow);
+ Ale_ShowAlert (Ale_SUCCESS,Txt_The_folder_X_has_been_created_inside_the_folder_Y,
+ Gbl.FileBrowser.NewFilFolLnkName,FileNameToShow);
+ }
}
else
- {
- /* Remove affected clipboards */
- Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
- Gbl.Usrs.Me.UsrDat.UsrCod,
- Gbl.Usrs.Other.UsrDat.UsrCod);
-
- /* Add path where new file is created to table of expanded folders */
- Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Full);
-
- /* Add entry to the table of files/folders */
- snprintf (PathCompleteInTreeIncludingFolder,
- sizeof (PathCompleteInTreeIncludingFolder),
- "%s/%s",
- Gbl.FileBrowser.FilFolLnk.Full,
- Gbl.FileBrowser.NewFilFolLnkName);
- Brw_DB_AddPath (Gbl.Usrs.Me.UsrDat.UsrCod,Brw_IS_FOLDER,
- PathCompleteInTreeIncludingFolder,false,Brw_LICENSE_DEFAULT);
-
- /* The folder has been created sucessfully */
- Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Type,
- Gbl.FileBrowser.Level,
- Brw_IS_FOLDER,
- Gbl.FileBrowser.FilFolLnk.Name,
- FileNameToShow);
- Ale_ShowAlert (Ale_SUCCESS,Txt_The_folder_X_has_been_created_inside_the_folder_Y,
- Gbl.FileBrowser.NewFilFolLnkName,FileNameToShow);
- }
- }
- else
- {
- switch (errno)
{
- case EEXIST:
- Ale_ShowAlert (Ale_WARNING,Txt_Can_not_create_the_folder_X_because_there_is_already_a_folder_or_a_file_with_that_name,
- Gbl.FileBrowser.NewFilFolLnkName);
- break;
- case EACCES:
- Err_ShowErrorAndExit ("Write forbidden.");
- break;
- default:
- Err_ShowErrorAndExit ("Can not create folder.");
- break;
+ switch (errno)
+ {
+ case EEXIST:
+ Ale_ShowAlert (Ale_WARNING,Txt_Can_not_create_the_folder_X_because_there_is_already_a_folder_or_a_file_with_that_name,
+ Gbl.FileBrowser.NewFilFolLnkName);
+ break;
+ case EACCES:
+ Err_ShowErrorAndExit ("Write forbidden.");
+ break;
+ default:
+ Err_ShowErrorAndExit ("Can not create folder.");
+ break;
+ }
}
}
- }
- else // Folder name not valid
- Ale_ShowAlerts (NULL);
+ else // Folder name not valid
+ Ale_ShowAlerts (NULL);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ // It's difficult, but not impossible that a user sees this message
+ Err_ShowErrorAndExit (Txt_You_can_not_create_folders_here);
+ break;
}
- else
- Err_ShowErrorAndExit (Txt_You_can_not_create_folders_here); // It's difficult, but not impossible that a user sees this message
/***** Show again the file browser *****/
Brw_ShowAgainFileBrowserOrWorks ();
@@ -6586,92 +6628,99 @@ void Brw_RenFolderFileBrowser (void)
/***** Get parameters related to file browser *****/
Brw_GetParAndInitFileBrowser ();
- if (Brw_CheckIfICanEditFileOrFolder (Gbl.FileBrowser.Level) == Usr_I_CAN) // Can I rename this folder?
+ switch (Brw_CheckIfICanEditFileOrFolder (Gbl.FileBrowser.Level)) // Can I rename this folder?
{
- if (Str_ConvertFilFolLnkNameToValid (Gbl.FileBrowser.NewFilFolLnkName))
- {
- if (strcmp (Gbl.FileBrowser.FilFolLnk.Name,Gbl.FileBrowser.NewFilFolLnkName)) // The name has changed
- {
- /* Gbl.FileBrowser.FilFolLnk.Name holds the new name of the folder */
- snprintf (OldPathInTree,sizeof (OldPathInTree),"%s/%s",
- Gbl.FileBrowser.FilFolLnk.Path,
- Gbl.FileBrowser.FilFolLnk.Name);
- snprintf (OldPath,sizeof (OldPath),"%s/%s",
- Gbl.FileBrowser.Path.AboveRootFolder,OldPathInTree);
-
- /* Gbl.FileBrowser.NewFilFolLnkName holds the new name of the folder */
- if (strlen (Gbl.FileBrowser.Path.AboveRootFolder) + 1 +
- strlen (Gbl.FileBrowser.FilFolLnk.Path) + 1 +
- strlen (Gbl.FileBrowser.NewFilFolLnkName) > PATH_MAX)
- Err_ShowErrorAndExit ("Path is too long.");
- snprintf (NewPathInTree,sizeof (NewPathInTree),"%s/%s",
- Gbl.FileBrowser.FilFolLnk.Path,
- Gbl.FileBrowser.NewFilFolLnkName);
- snprintf (NewPath,sizeof (NewPath),"%s/%s",
- Gbl.FileBrowser.Path.AboveRootFolder,NewPathInTree);
-
- /* We should check here that a folder with the same name does not exist.
- but we leave this work to the system */
-
- /* Rename the directory. If a empty folder existed with the name new, overwrite it! */
- if (rename (OldPath,NewPath)) // Fail
+ case Usr_I_CAN:
+ if (Str_ConvertFilFolLnkNameToValid (Gbl.FileBrowser.NewFilFolLnkName))
+ {
+ if (strcmp (Gbl.FileBrowser.FilFolLnk.Name,
+ Gbl.FileBrowser.NewFilFolLnkName)) // The name has changed
{
- switch (errno)
- {
- case ENOTEMPTY:
- case EEXIST:
- case ENOTDIR:
- Ale_ShowAlert (Ale_WARNING,Txt_The_folder_name_X_has_not_changed_because_there_is_already_a_folder_or_a_file_with_the_name_Y,
- Gbl.FileBrowser.FilFolLnk.Name,Gbl.FileBrowser.NewFilFolLnkName);
- break;
- case EACCES:
- Err_ShowErrorAndExit ("Write forbidden.");
- break;
- default:
- Err_ShowErrorAndExit ("Can not rename folder.");
- break;
- }
+ /* Gbl.FileBrowser.FilFolLnk.Name holds the new name of the folder */
+ snprintf (OldPathInTree,sizeof (OldPathInTree),"%s/%s",
+ Gbl.FileBrowser.FilFolLnk.Path,
+ Gbl.FileBrowser.FilFolLnk.Name);
+ snprintf (OldPath,sizeof (OldPath),"%s/%s",
+ Gbl.FileBrowser.Path.AboveRootFolder,OldPathInTree);
+
+ /* Gbl.FileBrowser.NewFilFolLnkName holds the new name of the folder */
+ if (strlen (Gbl.FileBrowser.Path.AboveRootFolder) + 1 +
+ strlen (Gbl.FileBrowser.FilFolLnk.Path) + 1 +
+ strlen (Gbl.FileBrowser.NewFilFolLnkName) > PATH_MAX)
+ Err_ShowErrorAndExit ("Path is too long.");
+ snprintf (NewPathInTree,sizeof (NewPathInTree),"%s/%s",
+ Gbl.FileBrowser.FilFolLnk.Path,
+ Gbl.FileBrowser.NewFilFolLnkName);
+ snprintf (NewPath,sizeof (NewPath),"%s/%s",
+ Gbl.FileBrowser.Path.AboveRootFolder,NewPathInTree);
+
+ /* We should check here that a folder with the same name does not exist.
+ but we leave this work to the system */
+
+ /* Rename the directory. If a empty folder existed with the name new, overwrite it! */
+ if (rename (OldPath,NewPath)) // Fail
+ {
+ switch (errno)
+ {
+ case ENOTEMPTY:
+ case EEXIST:
+ case ENOTDIR:
+ Ale_ShowAlert (Ale_WARNING,
+ Txt_The_folder_name_X_has_not_changed_because_there_is_already_a_folder_or_a_file_with_the_name_Y,
+ Gbl.FileBrowser.FilFolLnk.Name,
+ Gbl.FileBrowser.NewFilFolLnkName);
+ break;
+ case EACCES:
+ Err_ShowErrorAndExit ("Write forbidden.");
+ break;
+ default:
+ Err_ShowErrorAndExit ("Can not rename folder.");
+ break;
+ }
+ }
+ else // Success
+ {
+ /* If a folder is renamed,
+ it is necessary to rename all entries in the tables of files
+ that belong to the subtree starting at that folder */
+ Brw_DB_RenameOneFolder (OldPathInTree,
+ NewPathInTree);
+ Brw_DB_RenameChildrenFilesOrFolders (OldPathInTree,
+ NewPathInTree);
+
+ /* Remove affected clipboards */
+ Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ Gbl.Usrs.Other.UsrDat.UsrCod);
+
+ /* Remove affected expanded folders */
+ Brw_DB_RenameAffectedExpandedFolders (Gbl.FileBrowser.Type,
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ Gbl.Usrs.Other.UsrDat.UsrCod,
+ OldPathInTree,
+ NewPathInTree);
+
+ /* Write message of confirmation */
+ Ale_ShowAlert (Ale_SUCCESS,Txt_The_folder_X_has_been_renamed_as_Y,
+ Gbl.FileBrowser.FilFolLnk.Name,
+ Gbl.FileBrowser.NewFilFolLnkName);
+ }
+
}
- else // Success
- {
- /* If a folder is renamed,
- it is necessary to rename all entries in the tables of files
- that belong to the subtree starting at that folder */
- Brw_DB_RenameOneFolder (OldPathInTree,
- NewPathInTree);
- Brw_DB_RenameChildrenFilesOrFolders (OldPathInTree,
- NewPathInTree);
-
- /* Remove affected clipboards */
- Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
- Gbl.Usrs.Me.UsrDat.UsrCod,
- Gbl.Usrs.Other.UsrDat.UsrCod);
-
- /* Remove affected expanded folders */
- Brw_DB_RenameAffectedExpandedFolders (Gbl.FileBrowser.Type,
- Gbl.Usrs.Me.UsrDat.UsrCod,
- Gbl.Usrs.Other.UsrDat.UsrCod,
- OldPathInTree,
- NewPathInTree);
-
- /* Write message of confirmation */
- Ale_ShowAlert (Ale_SUCCESS,Txt_The_folder_X_has_been_renamed_as_Y,
- Gbl.FileBrowser.FilFolLnk.Name,
- Gbl.FileBrowser.NewFilFolLnkName);
- }
-
- }
- else // Names are equal.
- // This may happens if we have press...
- // ...INTRO without changing the name
- Ale_ShowAlert (Ale_INFO,Txt_The_name_X_has_not_changed,
- Gbl.FileBrowser.FilFolLnk.Name);
- }
- else // Folder name not valid
- Ale_ShowAlerts (NULL);
+ else // Names are equal.
+ // This may happens if we have press...
+ // ...INTRO without changing the name
+ Ale_ShowAlert (Ale_INFO,Txt_The_name_X_has_not_changed,
+ Gbl.FileBrowser.FilFolLnk.Name);
+ }
+ else // Folder name not valid
+ Ale_ShowAlerts (NULL);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Err_ShowErrorAndExit (Txt_You_can_not_rename_this_folder);
+ break;
}
- else
- Err_ShowErrorAndExit (Txt_You_can_not_rename_this_folder);
/***** Show again file browser *****/
Brw_ShowAgainFileBrowserOrWorks ();
@@ -6757,154 +6806,159 @@ static bool Brw_RcvFileInFileBrw (struct BrwSiz_BrowserSize *Size,
Brw_GetParAndInitFileBrowser ();
/***** Check if creating a new file is allowed *****/
- if (Brw_CheckIfICanCreateIntoFolder (Gbl.FileBrowser.Level) == Usr_I_CAN)
+ switch (Brw_CheckIfICanCreateIntoFolder (Gbl.FileBrowser.Level))
{
- /***** First, we save in disk the file received *****/
- Par = Fil_StartReceptionOfFile (Fil_NAME_OF_PARAM_FILENAME_ORG,
- SrcFileName,MIMEType);
+ case Usr_I_CAN:
+ /***** First, we save in disk the file received *****/
+ Par = Fil_StartReceptionOfFile (Fil_NAME_OF_PARAM_FILENAME_ORG,
+ SrcFileName,MIMEType);
- /***** Get filename from path *****/
- // Spaces at start or end are allowed
- Str_SplitFullPathIntoPathAndFileName (SrcFileName,
- PathUntilFileName,
- Gbl.FileBrowser.NewFilFolLnkName);
- if (Gbl.FileBrowser.NewFilFolLnkName[0])
- {
- /***** Check if uploading this kind of file is allowed *****/
- if (Brw_CheckIfUploadIsAllowed (MIMEType))
- {
- if (Str_ConvertFilFolLnkNameToValid (Gbl.FileBrowser.NewFilFolLnkName))
- {
- /* Gbl.FileBrowser.NewFilFolLnkName holds the name of the new file */
- snprintf (Path,sizeof (Path),"%s/%s",
- Gbl.FileBrowser.Path.AboveRootFolder,
- Gbl.FileBrowser.FilFolLnk.Full);
- if (strlen (Path) + 1 +
- strlen (Gbl.FileBrowser.NewFilFolLnkName) +
- strlen (".tmp") > PATH_MAX)
- Err_ShowErrorAndExit ("Path is too long.");
- Str_Concat (Path,"/",sizeof (Path) - 1);
- Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,sizeof (Path) - 1);
+ /***** Get filename from path *****/
+ // Spaces at start or end are allowed
+ Str_SplitFullPathIntoPathAndFileName (SrcFileName,
+ PathUntilFileName,
+ Gbl.FileBrowser.NewFilFolLnkName);
+ if (Gbl.FileBrowser.NewFilFolLnkName[0])
+ {
+ /***** Check if uploading this kind of file is allowed *****/
+ if (Brw_CheckIfUploadIsAllowed (MIMEType))
+ {
+ if (Str_ConvertFilFolLnkNameToValid (Gbl.FileBrowser.NewFilFolLnkName))
+ {
+ /* Gbl.FileBrowser.NewFilFolLnkName holds the name of the new file */
+ snprintf (Path,sizeof (Path),"%s/%s",
+ Gbl.FileBrowser.Path.AboveRootFolder,
+ Gbl.FileBrowser.FilFolLnk.Full);
+ if (strlen (Path) + 1 +
+ strlen (Gbl.FileBrowser.NewFilFolLnkName) +
+ strlen (".tmp") > PATH_MAX)
+ Err_ShowErrorAndExit ("Path is too long.");
+ Str_Concat (Path,"/",sizeof (Path) - 1);
+ Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,sizeof (Path) - 1);
- /* Check if the destination file exists */
- if (Fil_CheckIfPathExists (Path))
- Ale_CreateAlert (Ale_WARNING,NULL,
- Txt_UPLOAD_FILE_X_file_already_exists_NO_HTML,
- Gbl.FileBrowser.NewFilFolLnkName);
- else // Destination file does not exist
- {
- /* End receiving the file */
- snprintf (PathTmp,sizeof (PathTmp),"%s.tmp",Path);
- FileIsValid = Fil_EndReceptionOfFile (PathTmp,Par);
+ /* Check if the destination file exists */
+ if (Fil_CheckIfPathExists (Path))
+ Ale_CreateAlert (Ale_WARNING,NULL,
+ Txt_UPLOAD_FILE_X_file_already_exists_NO_HTML,
+ Gbl.FileBrowser.NewFilFolLnkName);
+ else // Destination file does not exist
+ {
+ /* End receiving the file */
+ snprintf (PathTmp,sizeof (PathTmp),"%s.tmp",Path);
+ FileIsValid = Fil_EndReceptionOfFile (PathTmp,Par);
- /* Check if the content of the file of marks is valid */
- if (FileIsValid)
- if (Brw_TypeIsAdmMrk[Gbl.FileBrowser.Type])
- if (!Mrk_CheckFileOfMarks (PathTmp,&Marks))
- FileIsValid = false;
+ /* Check if the content of the file of marks is valid */
+ if (FileIsValid)
+ if (Brw_TypeIsAdmMrk[Gbl.FileBrowser.Type])
+ if (!Mrk_CheckFileOfMarks (PathTmp,&Marks))
+ FileIsValid = false;
- if (FileIsValid)
- {
- /* Rename the temporary */
- if (rename (PathTmp,Path)) // Fail
- {
- Fil_RemoveTree (PathTmp);
- Ale_CreateAlert (Ale_WARNING,NULL,
- Txt_UPLOAD_FILE_could_not_create_file_NO_HTML,
- Gbl.FileBrowser.NewFilFolLnkName);
- }
- else // Success
- {
- /* Check if quota has been exceeded */
- BrwSiz_CalcSizeOfDir (Size,Gbl.FileBrowser.Path.RootFolder);
- BrwSiz_SetMaxQuota (Size);
- if (BrwSiz_CheckIfQuotaExceded (Size))
- {
- Fil_RemoveTree (Path);
- Ale_CreateAlert (Ale_WARNING,NULL,
- Txt_UPLOAD_FILE_X_quota_exceeded_NO_HTML,
- Gbl.FileBrowser.NewFilFolLnkName);
- }
- else
- {
- /* Remove affected clipboards */
- Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
- Gbl.Usrs.Me.UsrDat.UsrCod,
- Gbl.Usrs.Other.UsrDat.UsrCod);
+ if (FileIsValid)
+ {
+ /* Rename the temporary */
+ if (rename (PathTmp,Path)) // Fail
+ {
+ Fil_RemoveTree (PathTmp);
+ Ale_CreateAlert (Ale_WARNING,NULL,
+ Txt_UPLOAD_FILE_could_not_create_file_NO_HTML,
+ Gbl.FileBrowser.NewFilFolLnkName);
+ }
+ else // Success
+ {
+ /* Check if quota has been exceeded */
+ BrwSiz_CalcSizeOfDir (Size,Gbl.FileBrowser.Path.RootFolder);
+ BrwSiz_SetMaxQuota (Size);
+ if (BrwSiz_CheckIfQuotaExceded (Size))
+ {
+ Fil_RemoveTree (Path);
+ Ale_CreateAlert (Ale_WARNING,NULL,
+ Txt_UPLOAD_FILE_X_quota_exceeded_NO_HTML,
+ Gbl.FileBrowser.NewFilFolLnkName);
+ }
+ else
+ {
+ /* Remove affected clipboards */
+ Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ Gbl.Usrs.Other.UsrDat.UsrCod);
- /* Add path where new file is created to table of expanded folders */
- Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Full);
+ /* Add path where new file is created to table of expanded folders */
+ Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Full);
- /* Add entry to the table of files/folders */
- snprintf (PathCompleteInTreeIncludingFile,
- sizeof (PathCompleteInTreeIncludingFile),
- "%s/%s",
- Gbl.FileBrowser.FilFolLnk.Full,
- Gbl.FileBrowser.NewFilFolLnkName);
- FilCod = Brw_DB_AddPath (Gbl.Usrs.Me.UsrDat.UsrCod,Brw_IS_FILE,
- PathCompleteInTreeIncludingFile,false,Brw_LICENSE_DEFAULT);
+ /* Add entry to the table of files/folders */
+ snprintf (PathCompleteInTreeIncludingFile,
+ sizeof (PathCompleteInTreeIncludingFile),
+ "%s/%s",
+ Gbl.FileBrowser.FilFolLnk.Full,
+ Gbl.FileBrowser.NewFilFolLnkName);
+ FilCod = Brw_DB_AddPath (Gbl.Usrs.Me.UsrDat.UsrCod,Brw_IS_FILE,
+ PathCompleteInTreeIncludingFile,false,Brw_LICENSE_DEFAULT);
- /* Show message of confirmation */
- if (UploadType == Brw_CLASSIC_UPLOAD)
- {
- Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Type,
- Gbl.FileBrowser.Level,
- Brw_IS_FOLDER,
- Gbl.FileBrowser.FilFolLnk.Name,
- FileNameToShow); // Folder name
- Ale_CreateAlert (Ale_SUCCESS,NULL,
- Txt_The_file_X_has_been_placed_inside_the_folder_Y,
- Gbl.FileBrowser.NewFilFolLnkName,
- FileNameToShow);
- }
- UploadSucessful = true;
-
- FileMetadata.FilCod = FilCod;
- Brw_GetFileMetadataByCod (&FileMetadata);
-
- /* Add a new entry of marks into database */
- if (Brw_TypeIsAdmMrk[Gbl.FileBrowser.Type])
- Mrk_DB_AddMarks (FileMetadata.FilCod,&Marks);
-
- /* Notify new file */
- if (!Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingMetadata (&FileMetadata))
- switch (Gbl.FileBrowser.Type)
+ /* Show message of confirmation */
+ if (UploadType == Brw_CLASSIC_UPLOAD)
{
- case Brw_ADMI_DOC_CRS:
- case Brw_ADMI_DOC_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_DOCUMENT_FILE,FilCod);
- break;
- case Brw_ADMI_TCH_CRS:
- case Brw_ADMI_TCH_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TEACHERS_FILE,FilCod);
- break;
- case Brw_ADMI_SHR_CRS:
- case Brw_ADMI_SHR_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_SHARED_FILE,FilCod);
- break;
- case Brw_ADMI_MRK_CRS:
- case Brw_ADMI_MRK_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_MARKS_FILE,FilCod);
- break;
- default:
- break;
+ Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Type,
+ Gbl.FileBrowser.Level,
+ Brw_IS_FOLDER,
+ Gbl.FileBrowser.FilFolLnk.Name,
+ FileNameToShow); // Folder name
+ Ale_CreateAlert (Ale_SUCCESS,NULL,
+ Txt_The_file_X_has_been_placed_inside_the_folder_Y,
+ Gbl.FileBrowser.NewFilFolLnkName,
+ FileNameToShow);
}
- }
- }
- }
- else // Error in file reception. File probably too big
- Fil_RemoveTree (PathTmp);
- }
- }
- }
- }
- else // Empty filename
+ UploadSucessful = true;
+
+ FileMetadata.FilCod = FilCod;
+ Brw_GetFileMetadataByCod (&FileMetadata);
+
+ /* Add a new entry of marks into database */
+ if (Brw_TypeIsAdmMrk[Gbl.FileBrowser.Type])
+ Mrk_DB_AddMarks (FileMetadata.FilCod,&Marks);
+
+ /* Notify new file */
+ if (!Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingMetadata (&FileMetadata))
+ switch (Gbl.FileBrowser.Type)
+ {
+ case Brw_ADMI_DOC_CRS:
+ case Brw_ADMI_DOC_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_DOCUMENT_FILE,FilCod);
+ break;
+ case Brw_ADMI_TCH_CRS:
+ case Brw_ADMI_TCH_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TEACHERS_FILE,FilCod);
+ break;
+ case Brw_ADMI_SHR_CRS:
+ case Brw_ADMI_SHR_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_SHARED_FILE,FilCod);
+ break;
+ case Brw_ADMI_MRK_CRS:
+ case Brw_ADMI_MRK_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_MARKS_FILE,FilCod);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ }
+ else // Error in file reception. File probably too big
+ Fil_RemoveTree (PathTmp);
+ }
+ }
+ }
+ }
+ else // Empty filename
+ Ale_CreateAlert (Ale_WARNING,NULL,
+ Txt_UPLOAD_FILE_You_must_specify_the_file_NO_HTML);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ // I do not have permission to create files here
Ale_CreateAlert (Ale_WARNING,NULL,
- Txt_UPLOAD_FILE_You_must_specify_the_file_NO_HTML);
+ Txt_UPLOAD_FILE_Forbidden_NO_HTML);
+ break;
}
- else // I do not have permission to create files here
- Ale_CreateAlert (Ale_WARNING,NULL,
- Txt_UPLOAD_FILE_Forbidden_NO_HTML);
return UploadSucessful;
}
@@ -6937,143 +6991,148 @@ void Brw_RecLinkFileBrowser (void)
Brw_GetParAndInitFileBrowser ();
/***** Check if creating a new link is allowed *****/
- if (Brw_CheckIfICanCreateIntoFolder (Gbl.FileBrowser.Level) == Usr_I_CAN)
+ switch (Brw_CheckIfICanCreateIntoFolder (Gbl.FileBrowser.Level))
{
- /***** Create a new file to store URL ****/
- Par_GetParText ("NewLinkURL",URL,PATH_MAX);
- if ((LengthURL = strlen (URL)))
- {
- if (Gbl.FileBrowser.NewFilFolLnkName[0])
- /*
- Gbl.FileBrowser.NewFilFolLnkName holds the name given by me in the form
- Example:
- Name given by me: intel-architectures.pdf
- File in swad: intel-architectures.pdf.url
- */
- Str_Copy (URLWithoutEndingSlash,Gbl.FileBrowser.NewFilFolLnkName,
- sizeof (URLWithoutEndingSlash) - 1);
- else
- /*
- Gbl.FileBrowser.NewFilFolLnkName is empty
- URL holds the URL given by me in the form
- Example:
- URL: http://www.intel.es/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf
- File in swad: 64-ia-32-architectures-software-developer-manual-325462.pdf.url
- */
- Str_Copy (URLWithoutEndingSlash,URL,
- sizeof (URLWithoutEndingSlash) - 1);
-
- /* Remove possible final '/' from URL */
- if (URLWithoutEndingSlash[LengthURL - 1] == '/')
- URLWithoutEndingSlash[LengthURL - 1] = '\0';
-
- /* Get the last name in URL-without-ending-slash */
- Str_SplitFullPathIntoPathAndFileName (URLWithoutEndingSlash,
- URLUntilLastFilename,
- FileName);
-
- /* Convert the last name in URL to a valid filename */
- if (Str_ConvertFilFolLnkNameToValid (FileName))
+ case Usr_I_CAN:
+ /***** Create a new file to store URL ****/
+ Par_GetParText ("NewLinkURL",URL,PATH_MAX);
+ if ((LengthURL = strlen (URL)))
{
- /* The name of the file with the link will be the FileName.url */
- snprintf (Path,sizeof (Path),"%s/%s",
- Gbl.FileBrowser.Path.AboveRootFolder,
- Gbl.FileBrowser.FilFolLnk.Full);
- if (strlen (Path) + 1 + strlen (FileName) + strlen (".url") > PATH_MAX)
- Err_ShowErrorAndExit ("Path is too long.");
- Str_Concat (Path,"/",sizeof (Path) - 1);
- Str_Concat (Path,FileName,sizeof (Path) - 1);
- Str_Concat (Path,".url",sizeof (Path) - 1);
+ if (Gbl.FileBrowser.NewFilFolLnkName[0])
+ /*
+ Gbl.FileBrowser.NewFilFolLnkName holds the name given by me in the form
+ Example:
+ Name given by me: intel-architectures.pdf
+ File in swad: intel-architectures.pdf.url
+ */
+ Str_Copy (URLWithoutEndingSlash,Gbl.FileBrowser.NewFilFolLnkName,
+ sizeof (URLWithoutEndingSlash) - 1);
+ else
+ /*
+ Gbl.FileBrowser.NewFilFolLnkName is empty
+ URL holds the URL given by me in the form
+ Example:
+ URL: http://www.intel.es/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf
+ File in swad: 64-ia-32-architectures-software-developer-manual-325462.pdf.url
+ */
+ Str_Copy (URLWithoutEndingSlash,URL,
+ sizeof (URLWithoutEndingSlash) - 1);
- /* Check if the URL file exists */
- if (Fil_CheckIfPathExists (Path))
- Ale_ShowAlert (Ale_WARNING,Txt_Can_not_create_the_link_X_because_there_is_already_a_folder_or_a_link_with_that_name,
- FileName);
- else // URL file does not exist
+ /* Remove possible final '/' from URL */
+ if (URLWithoutEndingSlash[LengthURL - 1] == '/')
+ URLWithoutEndingSlash[LengthURL - 1] = '\0';
+
+ /* Get the last name in URL-without-ending-slash */
+ Str_SplitFullPathIntoPathAndFileName (URLWithoutEndingSlash,
+ URLUntilLastFilename,
+ FileName);
+
+ /* Convert the last name in URL to a valid filename */
+ if (Str_ConvertFilFolLnkNameToValid (FileName))
{
- /***** Create the new file with the URL *****/
- if ((FileURL = fopen (Path,"wb")) != NULL)
+ /* The name of the file with the link will be the FileName.url */
+ snprintf (Path,sizeof (Path),"%s/%s",
+ Gbl.FileBrowser.Path.AboveRootFolder,
+ Gbl.FileBrowser.FilFolLnk.Full);
+ if (strlen (Path) + 1 + strlen (FileName) + strlen (".url") > PATH_MAX)
+ Err_ShowErrorAndExit ("Path is too long.");
+ Str_Concat (Path,"/",sizeof (Path) - 1);
+ Str_Concat (Path,FileName,sizeof (Path) - 1);
+ Str_Concat (Path,".url",sizeof (Path) - 1);
+
+ /* Check if the URL file exists */
+ if (Fil_CheckIfPathExists (Path))
+ Ale_ShowAlert (Ale_WARNING,Txt_Can_not_create_the_link_X_because_there_is_already_a_folder_or_a_link_with_that_name,
+ FileName);
+ else // URL file does not exist
{
- /* Write URL */
- fprintf (FileURL,"%s",URL);
-
- /* Close file */
- fclose (FileURL);
-
- /* Check if quota has been exceeded */
- BrwSiz_CalcSizeOfDir (Size,Gbl.FileBrowser.Path.RootFolder);
- BrwSiz_SetMaxQuota (Size);
- if (BrwSiz_CheckIfQuotaExceded (Size))
+ /***** Create the new file with the URL *****/
+ if ((FileURL = fopen (Path,"wb")) != NULL)
{
- Fil_RemoveTree (Path);
- Ale_ShowAlert (Ale_WARNING,Txt_Can_not_create_the_link_X_because_it_would_exceed_the_disk_quota,
- FileName);
- }
- else
- {
- /* Remove affected clipboards */
- Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
- Gbl.Usrs.Me.UsrDat.UsrCod,
- Gbl.Usrs.Other.UsrDat.UsrCod);
+ /* Write URL */
+ fprintf (FileURL,"%s",URL);
- /* Add path where new file is created to table of expanded folders */
- Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Full);
+ /* Close file */
+ fclose (FileURL);
- /* Add entry to the table of files/folders */
- snprintf (PathCompleteInTreeIncludingFile,
- sizeof (PathCompleteInTreeIncludingFile),
- "%s/%s.url",
- Gbl.FileBrowser.FilFolLnk.Full,FileName);
- FilCod = Brw_DB_AddPath (Gbl.Usrs.Me.UsrDat.UsrCod,Brw_IS_LINK,
- PathCompleteInTreeIncludingFile,false,Brw_LICENSE_DEFAULT);
+ /* Check if quota has been exceeded */
+ BrwSiz_CalcSizeOfDir (Size,Gbl.FileBrowser.Path.RootFolder);
+ BrwSiz_SetMaxQuota (Size);
+ if (BrwSiz_CheckIfQuotaExceded (Size))
+ {
+ Fil_RemoveTree (Path);
+ Ale_ShowAlert (Ale_WARNING,Txt_Can_not_create_the_link_X_because_it_would_exceed_the_disk_quota,
+ FileName);
+ }
+ else
+ {
+ /* Remove affected clipboards */
+ Brw_DB_RemoveAffectedClipboards (Gbl.FileBrowser.Type,
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ Gbl.Usrs.Other.UsrDat.UsrCod);
- /* Show message of confirmation */
- Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Type,
- Gbl.FileBrowser.Level,
- Brw_IS_FOLDER,
- Gbl.FileBrowser.FilFolLnk.Name,
- FileNameToShow); // Folder name
- Ale_ShowAlert (Ale_SUCCESS,Txt_The_link_X_has_been_placed_inside_the_folder_Y,
- FileName,FileNameToShow);
+ /* Add path where new file is created to table of expanded folders */
+ Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Full);
- FileMetadata.FilCod = FilCod;
- Brw_GetFileMetadataByCod (&FileMetadata);
+ /* Add entry to the table of files/folders */
+ snprintf (PathCompleteInTreeIncludingFile,
+ sizeof (PathCompleteInTreeIncludingFile),
+ "%s/%s.url",
+ Gbl.FileBrowser.FilFolLnk.Full,FileName);
+ FilCod = Brw_DB_AddPath (Gbl.Usrs.Me.UsrDat.UsrCod,Brw_IS_LINK,
+ PathCompleteInTreeIncludingFile,false,Brw_LICENSE_DEFAULT);
- /* Notify new file */
- if (!Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingMetadata (&FileMetadata))
- switch (Gbl.FileBrowser.Type)
- {
- case Brw_ADMI_DOC_CRS:
- case Brw_ADMI_DOC_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_DOCUMENT_FILE,FilCod);
- break;
- case Brw_ADMI_TCH_CRS:
- case Brw_ADMI_TCH_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TEACHERS_FILE,FilCod);
- break;
- case Brw_ADMI_SHR_CRS:
- case Brw_ADMI_SHR_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_SHARED_FILE,FilCod);
- break;
- case Brw_ADMI_MRK_CRS:
- case Brw_ADMI_MRK_GRP:
- Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_MARKS_FILE,FilCod);
- break;
- default:
- break;
- }
+ /* Show message of confirmation */
+ Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Type,
+ Gbl.FileBrowser.Level,
+ Brw_IS_FOLDER,
+ Gbl.FileBrowser.FilFolLnk.Name,
+ FileNameToShow); // Folder name
+ Ale_ShowAlert (Ale_SUCCESS,Txt_The_link_X_has_been_placed_inside_the_folder_Y,
+ FileName,FileNameToShow);
+
+ FileMetadata.FilCod = FilCod;
+ Brw_GetFileMetadataByCod (&FileMetadata);
+
+ /* Notify new file */
+ if (!Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingMetadata (&FileMetadata))
+ switch (Gbl.FileBrowser.Type)
+ {
+ case Brw_ADMI_DOC_CRS:
+ case Brw_ADMI_DOC_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_DOCUMENT_FILE,FilCod);
+ break;
+ case Brw_ADMI_TCH_CRS:
+ case Brw_ADMI_TCH_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TEACHERS_FILE,FilCod);
+ break;
+ case Brw_ADMI_SHR_CRS:
+ case Brw_ADMI_SHR_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_SHARED_FILE,FilCod);
+ break;
+ case Brw_ADMI_MRK_CRS:
+ case Brw_ADMI_MRK_GRP:
+ Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_MARKS_FILE,FilCod);
+ break;
+ default:
+ break;
+ }
+ }
}
}
}
+ else // Link URL not valid
+ Ale_ShowAlert (Ale_WARNING,Txt_UPLOAD_FILE_Invalid_link);
}
else // Link URL not valid
Ale_ShowAlert (Ale_WARNING,Txt_UPLOAD_FILE_Invalid_link);
- }
- else // Link URL not valid
- Ale_ShowAlert (Ale_WARNING,Txt_UPLOAD_FILE_Invalid_link);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ // It's difficult, but not impossible that a user sees this message
+ Err_ShowErrorAndExit (Txt_You_can_not_create_links_here);
+ break;
}
- else
- Err_ShowErrorAndExit (Txt_You_can_not_create_links_here); // It's difficult, but not impossible that a user sees this message
/***** Show again the file browser *****/
Brw_ShowAgainFileBrowserOrWorks ();
@@ -7313,358 +7372,350 @@ void Brw_ShowFileMetadata (void)
}
}
- if (ICanView == Usr_I_CAN)
+ switch (ICanView)
{
- if (FileMetadata.FilFolLnk.Type == Brw_IS_FILE ||
- FileMetadata.FilFolLnk.Type == Brw_IS_LINK)
- {
- /***** Update number of views *****/
- Brw_GetAndUpdateFileViews (&FileMetadata);
-
- /***** Get data of file/folder publisher *****/
- if (FileMetadata.PublisherUsrCod > 0)
+ case Usr_I_CAN:
+ if (FileMetadata.FilFolLnk.Type == Brw_IS_FILE ||
+ FileMetadata.FilFolLnk.Type == Brw_IS_LINK)
{
- /***** Initialize structure with publisher's data *****/
- Usr_UsrDataConstructor (&PublisherUsrDat);
+ /***** Update number of views *****/
+ Brw_GetAndUpdateFileViews (&FileMetadata);
- PublisherUsrDat.UsrCod = FileMetadata.PublisherUsrCod;
- FileHasPublisher = Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&PublisherUsrDat,
- Usr_DONT_GET_PREFS,
- Usr_DONT_GET_ROLE_IN_CRS);
- }
- else
- FileHasPublisher = false; // Get user's data from database
-
- /***** Get link to download the file *****/
- if (Brw_TypeIsSeeMrk[Gbl.FileBrowser.Type])
- URL[0] = '\0';
- else
- Brw_GetLinkToDownloadFile (FileMetadata.FilFolLnk.Path,
- FileMetadata.FilFolLnk.Name,
- URL);
-
- /***** Can I edit the properties of the file? *****/
- IAmTheOwner = Brw_CheckIfIAmOwnerOfFile (FileMetadata.PublisherUsrCod);
- ICanEdit = Brw_CheckIfICanEditFileMetadata (IAmTheOwner);
-
- /***** Name of the file/link to be shown *****/
- Brw_GetFileNameToShow (FileMetadata.FilFolLnk.Type,
- FileMetadata.FilFolLnk.Name,
- FileNameToShow);
-
- /***** Begin box *****/
- // Put icon to get link?
- if (Brw_ActReqLnk[Gbl.FileBrowser.Type] != ActUnk &&
- (FileMetadata.FilFolLnk.Type == Brw_IS_FILE || // Only files or links
- FileMetadata.FilFolLnk.Type == Brw_IS_LINK) &&
- Rsc_CheckIfICanGetLink () == Usr_I_CAN)
- Box_BoxShadowBegin (NULL,Brw_PutIconToGetLinkToFile,&FileMetadata,
- NULL);
- else
- Box_BoxShadowBegin (NULL,NULL,NULL,
- NULL);
-
-
- /***** Begin form to update the metadata of a file *****/
- if (ICanEdit == Usr_I_CAN) // I can edit file properties
- {
- /* Can the file be public? */
- switch (Gbl.FileBrowser.Type)
+ /***** Get data of file/folder publisher *****/
+ if (FileMetadata.PublisherUsrCod > 0)
{
- 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:
- ICanChangePublic = Usr_I_CAN;
- break;
- default:
- ICanChangePublic = Usr_I_CAN_NOT;
- break;
+ /***** Initialize structure with publisher's data *****/
+ Usr_UsrDataConstructor (&PublisherUsrDat);
+
+ PublisherUsrDat.UsrCod = FileMetadata.PublisherUsrCod;
+ FileHasPublisher = Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&PublisherUsrDat,
+ Usr_DONT_GET_PREFS,
+ Usr_DONT_GET_ROLE_IN_CRS);
+ }
+ else
+ FileHasPublisher = false; // Get user's data from database
+
+ /***** Get link to download the file *****/
+ if (Brw_TypeIsSeeMrk[Gbl.FileBrowser.Type])
+ URL[0] = '\0';
+ else
+ Brw_GetLinkToDownloadFile (FileMetadata.FilFolLnk.Path,
+ FileMetadata.FilFolLnk.Name,
+ URL);
+
+ /***** Can I edit the properties of the file? *****/
+ IAmTheOwner = Brw_CheckIfIAmOwnerOfFile (FileMetadata.PublisherUsrCod);
+ ICanEdit = Brw_CheckIfICanEditFileMetadata (IAmTheOwner);
+
+ /***** Name of the file/link to be shown *****/
+ Brw_GetFileNameToShow (FileMetadata.FilFolLnk.Type,
+ FileMetadata.FilFolLnk.Name,
+ FileNameToShow);
+
+ /***** Begin box *****/
+ // Put icon to get link?
+ if ((Brw_ActReqLnk[Gbl.FileBrowser.Type] != ActUnk &&
+ (FileMetadata.FilFolLnk.Type == Brw_IS_FILE || // Only files or links
+ FileMetadata.FilFolLnk.Type == Brw_IS_LINK) &&
+ Rsc_CheckIfICanGetLink ()) == Usr_I_CAN)
+ Box_BoxShadowBegin (NULL,Brw_PutIconToGetLinkToFile,
+ &FileMetadata,NULL);
+ else
+ Box_BoxShadowBegin (NULL,NULL,NULL,NULL);
+
+
+ /***** Begin form to update the metadata of a file *****/
+ if (ICanEdit == Usr_I_CAN) // I can edit file properties
+ {
+ /* Can the file be public? */
+ switch (Gbl.FileBrowser.Type)
+ {
+ 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:
+ ICanChangePublic = Usr_I_CAN;
+ break;
+ default:
+ ICanChangePublic = Usr_I_CAN_NOT;
+ break;
+ }
+
+ Frm_BeginForm (Brw_ActRecDatFile[Gbl.FileBrowser.Type]);
+ Brw_PutParsFileBrowser (NULL, // Not used
+ NULL, // Not used
+ Brw_IS_UNKNOWN, // Not used
+ FileMetadata.FilCod);
}
- Frm_BeginForm (Brw_ActRecDatFile[Gbl.FileBrowser.Type]);
- Brw_PutParsFileBrowser (NULL, // Not used
- NULL, // Not used
- Brw_IS_UNKNOWN, // Not used
- FileMetadata.FilCod);
- }
+ /***** Begin table *****/
+ HTM_TABLE_BeginWidePadding (2);
- /***** Begin table *****/
- HTM_TABLE_BeginWidePadding (2);
-
- /***** Link to download the file *****/
- HTM_TR_Begin (NULL);
-
- HTM_TD_Begin ("colspan=\"2\" class=\"CM\"");
- Brw_WriteBigLinkToDownloadFile (URL,&FileMetadata,FileNameToShow);
- HTM_TD_End ();
-
- HTM_TR_End ();
-
- /***** Filename *****/
- HTM_TR_Begin (NULL);
-
- Frm_LabelColumn ("RT",NULL,Txt_Filename);
-
- HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
- The_GetSuffix ());
- Brw_WriteSmallLinkToDownloadFile (URL,&FileMetadata,FileNameToShow);
- HTM_TD_End ();
-
- HTM_TR_End ();
-
- /***** Publisher's data *****/
- HTM_TR_Begin (NULL);
-
- Frm_LabelColumn ("RT",NULL,Txt_Uploaded_by);
-
- HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
- The_GetSuffix ());
- if (FileHasPublisher)
- {
- /* Show photo */
- Pho_ShowUsrPhotoIfAllowed (&PublisherUsrDat,
- ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);
-
- /* Write name */
- HTM_NBSP ();
- HTM_Txt (PublisherUsrDat.FullName);
- }
- else
- /* Unknown publisher */
- HTM_Txt (Txt_ROLES_SINGUL_Abc[Rol_UNK][Usr_SEX_UNKNOWN]);
- HTM_TD_End ();
-
- HTM_TR_End ();
-
- /***** Free memory used for publisher's data *****/
- if (FileMetadata.PublisherUsrCod > 0)
- Usr_UsrDataDestructor (&PublisherUsrDat);
-
- /***** Write the file size *****/
- Fil_WriteFileSizeFull ((double) FileMetadata.Size,FileSizeStr);
- HTM_TR_Begin (NULL);
-
- Frm_LabelColumn ("RT",NULL,Txt_File_size);
-
- HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
- The_GetSuffix ());
- HTM_Txt (FileSizeStr);
- HTM_TD_End ();
-
- HTM_TR_End ();
-
- /***** Write the date *****/
- HTM_TR_Begin (NULL);
-
- Frm_LabelColumn ("RT",NULL,Txt_Date_of_creation);
-
- HTM_TD_Begin ("id=\"filedate\" class=\"LB DAT_STRONG_%s\"",
- The_GetSuffix ());
- Dat_WriteLocalDateHMSFromUTC ("filedate",FileMetadata.Time,
- Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
- true,true,true,0x7);
- HTM_TD_End ();
-
- HTM_TR_End ();
-
- /***** Private or public? *****/
- HTM_TR_Begin (NULL);
-
- /* Label */
- Frm_LabelColumn ("RT",ICanChangePublic == Usr_I_CAN ? "PublicFile" :
- NULL,
- Txt_Availability);
-
- /* Data */
- HTM_TD_Begin ("class=\"LT DAT_STRONG_%s\"",
- The_GetSuffix ());
- if (ICanChangePublic == Usr_I_CAN) // I can change file to public
- {
- HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
- "id=\"PublicFile\" name=\"PublicFile\" class=\"PUBLIC_FILE\"");
- HTM_OPTION (HTM_Type_STRING,"N",
- FileMetadata.IsPublic ? HTM_OPTION_UNSELECTED :
- HTM_OPTION_SELECTED,
- HTM_OPTION_ENABLED,
- "%s",Txt_Private_available_to_certain_users_identified);
- HTM_OPTION (HTM_Type_STRING,"Y",
- FileMetadata.IsPublic ? HTM_OPTION_SELECTED :
- HTM_OPTION_UNSELECTED,
- HTM_OPTION_ENABLED,
- "%s",Txt_Public_open_educational_resource_OER_for_everyone);
- HTM_SELECT_End ();
- }
- else // I can not edit file properties
- HTM_Txt (FileMetadata.IsPublic ? Txt_Public_open_educational_resource_OER_for_everyone :
- Txt_Private_available_to_certain_users_identified);
- HTM_TD_End ();
-
- HTM_TR_End ();
-
- /***** License *****/
- HTM_TR_Begin (NULL);
-
- /* Label */
- Frm_LabelColumn ("RT",ICanEdit == Usr_I_CAN ? "License" :
- NULL,
- Txt_License);
-
- /* Data */
- HTM_TD_Begin ("class=\"LT DAT_STRONG_%s\"",
- The_GetSuffix ());
- if (ICanEdit == Usr_I_CAN) // I can edit file properties
- {
- HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
- "id=\"License\" name=\"License\" class=\"LICENSE\"");
- for (License = (Brw_License_t) 0;
- License <= (Brw_License_t) (Brw_NUM_LICENSES - 1);
- License++)
- {
- LicenseUnsigned = (unsigned) License;
- HTM_OPTION (HTM_Type_UNSIGNED,&LicenseUnsigned,
- License == FileMetadata.License ? HTM_OPTION_SELECTED :
- HTM_OPTION_UNSELECTED,
- HTM_OPTION_ENABLED,
- "%s",Txt_LICENSES[License]);
- }
- HTM_SELECT_End ();
- }
- else // I can not edit file properties
- HTM_Txt (Txt_LICENSES[FileMetadata.License]);
- HTM_TD_End ();
-
- HTM_TR_End ();
-
- /***** Write my number of views *****/
- if (Gbl.Usrs.Me.Logged)
- {
+ /***** Link to download the file *****/
HTM_TR_Begin (NULL);
- Frm_LabelColumn ("RT",NULL,Txt_My_views);
-
- HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
- The_GetSuffix ());
- HTM_Unsigned (FileMetadata.NumMyViews);
+ HTM_TD_Begin ("colspan=\"2\" class=\"CM\"");
+ Brw_WriteBigLinkToDownloadFile (URL,&FileMetadata,FileNameToShow);
HTM_TD_End ();
HTM_TR_End ();
+
+ /***** Filename *****/
+ HTM_TR_Begin (NULL);
+
+ Frm_LabelColumn ("RT",NULL,Txt_Filename);
+
+ HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
+ The_GetSuffix ());
+ Brw_WriteSmallLinkToDownloadFile (URL,&FileMetadata,FileNameToShow);
+ HTM_TD_End ();
+
+ HTM_TR_End ();
+
+ /***** Publisher's data *****/
+ HTM_TR_Begin (NULL);
+
+ Frm_LabelColumn ("RT",NULL,Txt_Uploaded_by);
+
+ HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
+ The_GetSuffix ());
+ if (FileHasPublisher)
+ {
+ /* Show photo */
+ Pho_ShowUsrPhotoIfAllowed (&PublisherUsrDat,
+ ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);
+
+ /* Write name */
+ HTM_NBSP ();
+ HTM_Txt (PublisherUsrDat.FullName);
+ }
+ else
+ /* Unknown publisher */
+ HTM_Txt (Txt_ROLES_SINGUL_Abc[Rol_UNK][Usr_SEX_UNKNOWN]);
+ HTM_TD_End ();
+
+ HTM_TR_End ();
+
+ /***** Free memory used for publisher's data *****/
+ if (FileMetadata.PublisherUsrCod > 0)
+ Usr_UsrDataDestructor (&PublisherUsrDat);
+
+ /***** Write the file size *****/
+ Fil_WriteFileSizeFull ((double) FileMetadata.Size,FileSizeStr);
+ HTM_TR_Begin (NULL);
+
+ Frm_LabelColumn ("RT",NULL,Txt_File_size);
+
+ HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
+ The_GetSuffix ());
+ HTM_Txt (FileSizeStr);
+ HTM_TD_End ();
+
+ HTM_TR_End ();
+
+ /***** Write the date *****/
+ HTM_TR_Begin (NULL);
+
+ Frm_LabelColumn ("RT",NULL,Txt_Date_of_creation);
+
+ HTM_TD_Begin ("id=\"filedate\" class=\"LB DAT_STRONG_%s\"",
+ The_GetSuffix ());
+ Dat_WriteLocalDateHMSFromUTC ("filedate",FileMetadata.Time,
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
+ true,true,true,0x7);
+ HTM_TD_End ();
+
+ HTM_TR_End ();
+
+ /***** Private or public? *****/
+ HTM_TR_Begin (NULL);
+
+ /* Label */
+ Frm_LabelColumn ("RT",ICanChangePublic == Usr_I_CAN ? "PublicFile" :
+ NULL,
+ Txt_Availability);
+
+ /* Data */
+ HTM_TD_Begin ("class=\"LT DAT_STRONG_%s\"",
+ The_GetSuffix ());
+ if (ICanChangePublic == Usr_I_CAN) // I can change file to public
+ {
+ HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
+ "id=\"PublicFile\" name=\"PublicFile\" class=\"PUBLIC_FILE\"");
+ HTM_OPTION (HTM_Type_STRING,"N",
+ FileMetadata.IsPublic ? HTM_OPTION_UNSELECTED :
+ HTM_OPTION_SELECTED,
+ HTM_OPTION_ENABLED,
+ "%s",Txt_Private_available_to_certain_users_identified);
+ HTM_OPTION (HTM_Type_STRING,"Y",
+ FileMetadata.IsPublic ? HTM_OPTION_SELECTED :
+ HTM_OPTION_UNSELECTED,
+ HTM_OPTION_ENABLED,
+ "%s",Txt_Public_open_educational_resource_OER_for_everyone);
+ HTM_SELECT_End ();
+ }
+ else // I can not edit file properties
+ HTM_Txt (FileMetadata.IsPublic ? Txt_Public_open_educational_resource_OER_for_everyone :
+ Txt_Private_available_to_certain_users_identified);
+ HTM_TD_End ();
+
+ HTM_TR_End ();
+
+ /***** License *****/
+ HTM_TR_Begin (NULL);
+
+ /* Label */
+ Frm_LabelColumn ("RT",ICanEdit == Usr_I_CAN ? "License" :
+ NULL,
+ Txt_License);
+
+ /* Data */
+ HTM_TD_Begin ("class=\"LT DAT_STRONG_%s\"",
+ The_GetSuffix ());
+ if (ICanEdit == Usr_I_CAN) // I can edit file properties
+ {
+ HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
+ "id=\"License\" name=\"License\" class=\"LICENSE\"");
+ for (License = (Brw_License_t) 0;
+ License <= (Brw_License_t) (Brw_NUM_LICENSES - 1);
+ License++)
+ {
+ LicenseUnsigned = (unsigned) License;
+ HTM_OPTION (HTM_Type_UNSIGNED,&LicenseUnsigned,
+ License == FileMetadata.License ? HTM_OPTION_SELECTED :
+ HTM_OPTION_UNSELECTED,
+ HTM_OPTION_ENABLED,
+ "%s",Txt_LICENSES[License]);
+ }
+ HTM_SELECT_End ();
+ }
+ else // I can not edit file properties
+ HTM_Txt (Txt_LICENSES[FileMetadata.License]);
+ HTM_TD_End ();
+
+ HTM_TR_End ();
+
+ /***** Write my number of views *****/
+ if (Gbl.Usrs.Me.Logged)
+ {
+ HTM_TR_Begin (NULL);
+
+ Frm_LabelColumn ("RT",NULL,Txt_My_views);
+
+ HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
+ The_GetSuffix ());
+ HTM_Unsigned (FileMetadata.NumMyViews);
+ HTM_TD_End ();
+
+ HTM_TR_End ();
+ }
+
+ /***** Write number of identificated views *****/
+ HTM_TR_Begin (NULL);
+
+ Frm_LabelColumn ("RT",NULL,Txt_Identified_views);
+
+ HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
+ The_GetSuffix ());
+ HTM_TxtF ("%u ",FileMetadata.NumViewsFromLoggedUsrs);
+ HTM_TxtF ("(%u %s)",
+ FileMetadata.NumLoggedUsrs,
+ FileMetadata.NumLoggedUsrs == 1 ? Txt_user[Usr_SEX_UNKNOWN] :
+ Txt_users[Usr_SEX_UNKNOWN]);
+ HTM_TD_End ();
+
+ HTM_TR_End ();
+
+ /***** Write number of public views *****/
+ HTM_TR_Begin (NULL);
+
+ Frm_LabelColumn ("RT",NULL,Txt_Public_views);
+
+ HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
+ The_GetSuffix ());
+ HTM_Unsigned (FileMetadata.NumPublicViews);
+ HTM_TD_End ();
+
+ HTM_TR_End ();
+
+ /***** End table *****/
+ HTM_TABLE_End ();
+
+ /***** End form *****/
+ if (ICanEdit == Usr_I_CAN) // I can edit file properties
+ {
+ Btn_PutButton (Btn_CONFIRM_BUTTON,Txt_Save_file_properties);
+ Frm_EndForm ();
}
- /***** Write number of identificated views *****/
- HTM_TR_Begin (NULL);
+ /***** End box *****/
+ Box_BoxEnd ();
- Frm_LabelColumn ("RT",NULL,Txt_Identified_views);
-
- HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
- The_GetSuffix ());
- HTM_TxtF ("%u ",FileMetadata.NumViewsFromLoggedUsrs);
- HTM_TxtF ("(%u %s)",
- FileMetadata.NumLoggedUsrs,
- FileMetadata.NumLoggedUsrs == 1 ? Txt_user[Usr_SEX_UNKNOWN] :
- Txt_users[Usr_SEX_UNKNOWN]);
- HTM_TD_End ();
-
- HTM_TR_End ();
-
- /***** Write number of public views *****/
- HTM_TR_Begin (NULL);
-
- Frm_LabelColumn ("RT",NULL,Txt_Public_views);
-
- HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",
- The_GetSuffix ());
- HTM_Unsigned (FileMetadata.NumPublicViews);
- HTM_TD_End ();
-
- HTM_TR_End ();
-
- /***** End table *****/
- HTM_TABLE_End ();
-
- /***** End form *****/
- if (ICanEdit == Usr_I_CAN) // I can edit file properties
- {
- Btn_PutButton (Btn_CONFIRM_BUTTON,Txt_Save_file_properties);
- Frm_EndForm ();
+ /***** Mark possible notifications as seen *****/
+ switch (Gbl.FileBrowser.Type)
+ {
+ case Brw_SHOW_DOC_CRS:
+ case Brw_SHOW_DOC_GRP:
+ case Brw_ADMI_DOC_CRS:
+ case Brw_ADMI_DOC_GRP:
+ Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_DOCUMENT_FILE,
+ FileMetadata.FilCod);
+ break;
+ case Brw_ADMI_TCH_CRS:
+ case Brw_ADMI_TCH_GRP:
+ Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_TEACHERS_FILE,
+ FileMetadata.FilCod);
+ break;
+ case Brw_ADMI_SHR_CRS:
+ case Brw_ADMI_SHR_GRP:
+ Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_SHARED_FILE,
+ FileMetadata.FilCod);
+ break;
+ case Brw_SHOW_MRK_CRS:
+ case Brw_SHOW_MRK_GRP:
+ case Brw_ADMI_MRK_CRS:
+ case Brw_ADMI_MRK_GRP:
+ Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_MARKS_FILE,
+ FileMetadata.FilCod);
+ break;
+ default:
+ break;
+ }
}
- /***** End box *****/
- Box_BoxEnd ();
-
- /***** Mark possible notifications as seen *****/
+ /***** Add paths until file to table of expanded folders *****/
+ Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Path);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ /***** Mark possible notifications about non visible file as removed *****/
switch (Gbl.FileBrowser.Type)
{
- case Brw_SHOW_DOC_CRS:
- case Brw_SHOW_DOC_GRP:
- case Brw_ADMI_DOC_CRS:
- case Brw_ADMI_DOC_GRP:
- Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_DOCUMENT_FILE,
- FileMetadata.FilCod);
+ case Brw_SHOW_DOC_CRS: case Brw_SHOW_DOC_GRP:
+ case Brw_ADMI_DOC_CRS: case Brw_ADMI_DOC_GRP:
+ Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_DOCUMENT_FILE,
+ FileMetadata.FilCod);
break;
- case Brw_ADMI_TCH_CRS:
- case Brw_ADMI_TCH_GRP:
- Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_TEACHERS_FILE,
- FileMetadata.FilCod);
+ case Brw_ADMI_TCH_CRS: case Brw_ADMI_TCH_GRP:
+ Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_TEACHERS_FILE,
+ FileMetadata.FilCod);
break;
- case Brw_ADMI_SHR_CRS:
- case Brw_ADMI_SHR_GRP:
- Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_SHARED_FILE,
- FileMetadata.FilCod);
+ case Brw_ADMI_SHR_CRS: case Brw_ADMI_SHR_GRP:
+ Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_SHARED_FILE,
+ FileMetadata.FilCod);
break;
- case Brw_SHOW_MRK_CRS:
- case Brw_SHOW_MRK_GRP:
- case Brw_ADMI_MRK_CRS:
- case Brw_ADMI_MRK_GRP:
- Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_MARKS_FILE,
- FileMetadata.FilCod);
+ case Brw_SHOW_MRK_CRS: case Brw_SHOW_MRK_GRP:
+ case Brw_ADMI_MRK_CRS: case Brw_ADMI_MRK_GRP:
+ Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_MARKS_FILE,
+ FileMetadata.FilCod);
break;
default:
break;
}
- }
- /***** Add paths until file to table of expanded folders *****/
- Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Path);
- }
- else // ICanView == Usr_I_CAN_NOT
- {
- /***** Mark possible notifications about non visible file as removed *****/
- switch (Gbl.FileBrowser.Type)
- {
- case Brw_SHOW_DOC_CRS:
- case Brw_SHOW_DOC_GRP:
- case Brw_ADMI_DOC_CRS:
- case Brw_ADMI_DOC_GRP:
- Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_DOCUMENT_FILE,
- FileMetadata.FilCod);
- break;
- case Brw_ADMI_TCH_CRS:
- case Brw_ADMI_TCH_GRP:
- Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_TEACHERS_FILE,
- FileMetadata.FilCod);
- break;
- case Brw_ADMI_SHR_CRS:
- case Brw_ADMI_SHR_GRP:
- Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_SHARED_FILE,
- FileMetadata.FilCod);
- break;
- case Brw_SHOW_MRK_CRS:
- case Brw_SHOW_MRK_GRP:
- case Brw_ADMI_MRK_CRS:
- case Brw_ADMI_MRK_GRP:
- Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_MARKS_FILE,
- FileMetadata.FilCod);
- break;
- default:
- break;
- }
-
- Ale_ShowAlert (Ale_WARNING,Txt_The_file_of_folder_no_longer_exists_or_is_now_hidden);
+ Ale_ShowAlert (Ale_WARNING,
+ Txt_The_file_of_folder_no_longer_exists_or_is_now_hidden);
+ break;
}
/***** Show again the file browser *****/
@@ -7792,103 +7843,99 @@ void Brw_DownloadFile (void)
}
}
- if (ICanView == Usr_I_CAN)
+ switch (ICanView)
{
- if (FileMetadata.FilFolLnk.Type == Brw_IS_FILE ||
- FileMetadata.FilFolLnk.Type == Brw_IS_LINK)
- {
- /***** Update number of views *****/
- Brw_GetAndUpdateFileViews (&FileMetadata);
+ case Usr_I_CAN:
+ if (FileMetadata.FilFolLnk.Type == Brw_IS_FILE ||
+ FileMetadata.FilFolLnk.Type == Brw_IS_LINK)
+ {
+ /***** Update number of views *****/
+ Brw_GetAndUpdateFileViews (&FileMetadata);
- /***** Get link to download the file *****/
- if (Brw_TypeIsSeeMrk[Gbl.FileBrowser.Type])
- URL[0] = '\0';
- else
- Brw_GetLinkToDownloadFile (Gbl.FileBrowser.FilFolLnk.Path,
- Gbl.FileBrowser.FilFolLnk.Name,
- URL);
+ /***** Get link to download the file *****/
+ if (Brw_TypeIsSeeMrk[Gbl.FileBrowser.Type])
+ URL[0] = '\0';
+ else
+ Brw_GetLinkToDownloadFile (Gbl.FileBrowser.FilFolLnk.Path,
+ Gbl.FileBrowser.FilFolLnk.Name,
+ URL);
- /***** Mark possible notifications as seen *****/
+ /***** Mark possible notifications as seen *****/
+ switch (Gbl.FileBrowser.Type)
+ {
+ case Brw_SHOW_DOC_CRS:
+ case Brw_SHOW_DOC_GRP:
+ case Brw_ADMI_DOC_CRS:
+ case Brw_ADMI_DOC_GRP:
+ Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_DOCUMENT_FILE,
+ FileMetadata.FilCod);
+ break;
+ case Brw_ADMI_TCH_CRS:
+ case Brw_ADMI_TCH_GRP:
+ Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_TEACHERS_FILE,
+ FileMetadata.FilCod);
+ break;
+ case Brw_ADMI_SHR_CRS:
+ case Brw_ADMI_SHR_GRP:
+ Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_SHARED_FILE,
+ FileMetadata.FilCod);
+ break;
+ case Brw_SHOW_MRK_CRS:
+ case Brw_SHOW_MRK_GRP:
+ case Brw_ADMI_MRK_CRS:
+ case Brw_ADMI_MRK_GRP:
+ Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_MARKS_FILE,
+ FileMetadata.FilCod);
+ break;
+ default:
+ break;
+ }
+ }
+
+ /***** Add paths until file to table of expanded folders *****/
+ Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Path);
+
+ /***** Download the file *****/
+ fprintf (stdout,"Location: %s\n\n",URL);
+ // TODO: Put headers Content-type and Content-disposition:
+ // See: http://stackoverflow.com/questions/381954/how-do-i-fix-firefox-trying-to-save-image-as-htm
+ // http://elouai.com/force-download.php
+ Gbl.Layout.HTMLStartWritten =
+ Gbl.Layout.DivsEndWritten =
+ Gbl.Layout.HTMLEndWritten = true; // Don't write HTML at all
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ /***** Mark possible notifications about non visible file as removed *****/
switch (Gbl.FileBrowser.Type)
{
- case Brw_SHOW_DOC_CRS:
- case Brw_SHOW_DOC_GRP:
- case Brw_ADMI_DOC_CRS:
- case Brw_ADMI_DOC_GRP:
- Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_DOCUMENT_FILE,
- FileMetadata.FilCod);
+ case Brw_SHOW_DOC_CRS: case Brw_SHOW_DOC_GRP:
+ case Brw_ADMI_DOC_CRS: case Brw_ADMI_DOC_GRP:
+ Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_DOCUMENT_FILE,
+ FileMetadata.FilCod);
break;
- case Brw_ADMI_TCH_CRS:
- case Brw_ADMI_TCH_GRP:
- Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_TEACHERS_FILE,
- FileMetadata.FilCod);
+ case Brw_ADMI_TCH_CRS: case Brw_ADMI_TCH_GRP:
+ Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_TEACHERS_FILE,
+ FileMetadata.FilCod);
break;
- case Brw_ADMI_SHR_CRS:
- case Brw_ADMI_SHR_GRP:
- Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_SHARED_FILE,
- FileMetadata.FilCod);
+ case Brw_ADMI_SHR_CRS: case Brw_ADMI_SHR_GRP:
+ Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_SHARED_FILE,
+ FileMetadata.FilCod);
break;
- case Brw_SHOW_MRK_CRS:
- case Brw_SHOW_MRK_GRP:
- case Brw_ADMI_MRK_CRS:
- case Brw_ADMI_MRK_GRP:
- Ntf_DB_MarkNotifAsSeenUsingCod (Ntf_EVENT_MARKS_FILE,
- FileMetadata.FilCod);
+ case Brw_SHOW_MRK_CRS: case Brw_SHOW_MRK_GRP:
+ case Brw_ADMI_MRK_CRS: case Brw_ADMI_MRK_GRP:
+ Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_MARKS_FILE,
+ FileMetadata.FilCod);
break;
default:
break;
}
- }
- /***** Add paths until file to table of expanded folders *****/
- Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Path);
+ Ale_ShowAlert (Ale_WARNING,Txt_The_file_of_folder_no_longer_exists_or_is_now_hidden);
- /***** Download the file *****/
- fprintf (stdout,"Location: %s\n\n",URL);
- // TODO: Put headers Content-type and Content-disposition:
- // See: http://stackoverflow.com/questions/381954/how-do-i-fix-firefox-trying-to-save-image-as-htm
- // http://elouai.com/force-download.php
- Gbl.Layout.HTMLStartWritten =
- Gbl.Layout.DivsEndWritten =
- Gbl.Layout.HTMLEndWritten = true; // Don't write HTML at all
- }
- else // ICanView == Usr_I_CAN_NOT
- {
- /***** Mark possible notifications about non visible file as removed *****/
- switch (Gbl.FileBrowser.Type)
- {
- case Brw_SHOW_DOC_CRS:
- case Brw_SHOW_DOC_GRP:
- case Brw_ADMI_DOC_CRS:
- case Brw_ADMI_DOC_GRP:
- Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_DOCUMENT_FILE,
- FileMetadata.FilCod);
- break;
- case Brw_ADMI_TCH_CRS:
- case Brw_ADMI_TCH_GRP:
- Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_TEACHERS_FILE,
- FileMetadata.FilCod);
- break;
- case Brw_ADMI_SHR_CRS:
- case Brw_ADMI_SHR_GRP:
- Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_SHARED_FILE,
- FileMetadata.FilCod);
- break;
- case Brw_SHOW_MRK_CRS:
- case Brw_SHOW_MRK_GRP:
- case Brw_ADMI_MRK_CRS:
- case Brw_ADMI_MRK_GRP:
- Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_MARKS_FILE,
- FileMetadata.FilCod);
- break;
- default:
- break;
- }
-
- Ale_ShowAlert (Ale_WARNING,Txt_The_file_of_folder_no_longer_exists_or_is_now_hidden);
-
- /***** Show again the file browser *****/
- Brw_ShowAgainFileBrowserOrWorks ();
+ /***** Show again the file browser *****/
+ Brw_ShowAgainFileBrowserOrWorks ();
+ break;
}
}
diff --git a/swad_call_for_exam_database.c b/swad_call_for_exam_database.c
index a08c8336c..bcf216408 100644
--- a/swad_call_for_exam_database.c
+++ b/swad_call_for_exam_database.c
@@ -85,12 +85,16 @@ unsigned Cfe_DB_GetCallsForExamsInCurrentCrs (MYSQL_RES **mysql_res)
char SubQueryStatus[64];
/***** Build subquery about status depending on my role *****/
- if (Cfe_CheckIfICanEditCallsForExams () == Usr_I_CAN)
- sprintf (SubQueryStatus,"Status<>%u",
- (unsigned) Cfe_DELETED_CALL_FOR_EXAM);
- else
- sprintf (SubQueryStatus,"Status=%u",
- (unsigned) Cfe_VISIBLE_CALL_FOR_EXAM);
+ switch (Cfe_CheckIfICanEditCallsForExams ())
+ {
+ case Usr_I_CAN:
+ sprintf (SubQueryStatus,"Status<>%u",(unsigned) Cfe_DELETED_CALL_FOR_EXAM);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ sprintf (SubQueryStatus,"Status=%u",(unsigned) Cfe_VISIBLE_CALL_FOR_EXAM);
+ break;
+ }
/***** Get calls for exams (the most recent first)
in current course from database *****/
diff --git a/swad_center.c b/swad_center.c
index 34d6aa9b2..a9bac1539 100644
--- a/swad_center.c
+++ b/swad_center.c
@@ -793,39 +793,43 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
/* Place */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
- if (ICanEdit == Usr_I_CAN)
+ switch (ICanEdit)
{
- Frm_BeginForm (ActChgCtrPlc);
- ParCod_PutPar (ParCod_OthHie,Ctr->HieCod);
- HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,NULL,
- "name=\"PlcCod\""
- " class=\"PLC_SEL INPUT_%s\"",
- The_GetSuffix ());
- HTM_OPTION (HTM_Type_STRING,"0",
- Ctr->Specific.PlcCod == 0 ? HTM_OPTION_SELECTED :
- HTM_OPTION_UNSELECTED,
- HTM_OPTION_ENABLED,
- "%s",Txt_Another_place);
- for (NumPlc = 0;
- NumPlc < Places->Num;
- NumPlc++)
- {
- Plc = &Places->Lst[NumPlc];
- HTM_OPTION (HTM_Type_LONG,&Plc->PlcCod,
- Plc->PlcCod == Ctr->Specific.PlcCod ? HTM_OPTION_SELECTED :
- HTM_OPTION_UNSELECTED,
+ case Usr_I_CAN:
+ Frm_BeginForm (ActChgCtrPlc);
+ ParCod_PutPar (ParCod_OthHie,Ctr->HieCod);
+ HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,NULL,
+ "name=\"PlcCod\""
+ " class=\"PLC_SEL INPUT_%s\"",
+ The_GetSuffix ());
+ HTM_OPTION (HTM_Type_STRING,"0",
+ Ctr->Specific.PlcCod == 0 ? HTM_OPTION_SELECTED :
+ HTM_OPTION_UNSELECTED,
HTM_OPTION_ENABLED,
- "%s",Plc->ShrtName);
- }
- HTM_SELECT_End ();
- Frm_EndForm ();
+ "%s",Txt_Another_place);
+ for (NumPlc = 0;
+ NumPlc < Places->Num;
+ NumPlc++)
+ {
+ Plc = &Places->Lst[NumPlc];
+ HTM_OPTION (HTM_Type_LONG,&Plc->PlcCod,
+ Plc->PlcCod == Ctr->Specific.PlcCod ? HTM_OPTION_SELECTED :
+ HTM_OPTION_UNSELECTED,
+ HTM_OPTION_ENABLED,
+ "%s",Plc->ShrtName);
+ }
+ HTM_SELECT_End ();
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ for (NumPlc = 0;
+ NumPlc < Places->Num;
+ NumPlc++)
+ if (Places->Lst[NumPlc].PlcCod == Ctr->Specific.PlcCod)
+ HTM_Txt (Places->Lst[NumPlc].ShrtName);
+ break;
}
- else
- for (NumPlc = 0;
- NumPlc < Places->Num;
- NumPlc++)
- if (Places->Lst[NumPlc].PlcCod == Ctr->Specific.PlcCod)
- HTM_Txt (Places->Lst[NumPlc].ShrtName);
HTM_TD_End ();
/* Center short name and full name */
@@ -839,28 +843,30 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
/* Center WWW */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
- if (ICanEdit == Usr_I_CAN)
+ switch (ICanEdit)
{
- Frm_BeginForm (ActChgCtrWWW);
- ParCod_PutPar (ParCod_OthHie,Ctr->HieCod);
- HTM_INPUT_URL ("WWW",Ctr->WWW,HTM_SUBMIT_ON_CHANGE,
- "class=\"INPUT_WWW INPUT_%s\""
- " required=\"required\"",
- The_GetSuffix ());
- Frm_EndForm ();
- }
- else
- {
- Str_Copy (WWW,Ctr->WWW,sizeof (WWW) - 1);
- HTM_DIV_Begin ("class=\"EXTERNAL_WWW_SHRT\"");
- HTM_A_Begin ("href=\"%s\" target=\"_blank\""
- " class=\"DAT_%s\" title=\"%s\"",
- Ctr->WWW,
- The_GetSuffix (),
- Ctr->WWW);
- HTM_Txt (WWW);
- HTM_A_End ();
- HTM_DIV_End ();
+ case Usr_I_CAN:
+ Frm_BeginForm (ActChgCtrWWW);
+ ParCod_PutPar (ParCod_OthHie,Ctr->HieCod);
+ HTM_INPUT_URL ("WWW",Ctr->WWW,HTM_SUBMIT_ON_CHANGE,
+ "class=\"INPUT_WWW INPUT_%s\""
+ " required=\"required\"",
+ The_GetSuffix ());
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Str_Copy (WWW,Ctr->WWW,sizeof (WWW) - 1);
+ HTM_DIV_Begin ("class=\"EXTERNAL_WWW_SHRT\"");
+ HTM_A_Begin ("href=\"%s\" target=\"_blank\""
+ " class=\"DAT_%s\" title=\"%s\"",
+ Ctr->WWW,
+ The_GetSuffix (),
+ Ctr->WWW);
+ HTM_Txt (WWW);
+ HTM_A_End ();
+ HTM_DIV_End ();
+ break;
}
HTM_TD_End ();
diff --git a/swad_changelog.h b/swad_changelog.h
index e500fb6d1..cae6c453a 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -633,10 +633,11 @@ Me sale este error, no s
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
*/
-#define Log_PLATFORM_VERSION "SWAD 23.72.2 (2024-04-02)"
+#define Log_PLATFORM_VERSION "SWAD 23.73 (2024-04-06)"
#define CSS_FILE "swad23.67.2.css"
#define JS_FILE "swad23.53.6.js"
/*
+ Version 23.73: Apr 06, 2024 Code refactoring related to new type Usr_ICan_t. (335399 lines)
Version 23.72.2: Apr 02, 2024 Code refactoring related to new type Usr_ICan_t. (334970 lines)
Version 23.72.1: Apr 01, 2024 Code refactoring related to new type Usr_ICan_t. (334912 lines)
Version 23.72: Apr 01, 2024 New type Usr_ICan_t. (334879 lines)
diff --git a/swad_connected.c b/swad_connected.c
index 9e00f210d..bb397cad0 100644
--- a/swad_connected.c
+++ b/swad_connected.c
@@ -539,7 +539,7 @@ static void Con_WriteRowConnectedUsrOnRightColumn (Rol_Role_t Role)
const char *ClassTxt;
long UsrCod;
Usr_MeOrOther_t MeOrOther;
- struct Usr_Data *UsrDat;
+ struct Usr_Data *UsrDat = NULL; // To avoid warning
struct Usr_Data OtherUsrDat;
/***** Get user's code from list *****/
@@ -552,7 +552,6 @@ static void Con_WriteRowConnectedUsrOnRightColumn (Rol_Role_t Role)
UsrDat = &Gbl.Usrs.Me.UsrDat;
break;
case Usr_OTHER:
- default:
/***** Initialize structure with user's data *****/
OtherUsrDat.UsrCod = UsrCod;
Usr_UsrDataConstructor (&OtherUsrDat);
@@ -609,7 +608,6 @@ static void Con_WriteRowConnectedUsrOnRightColumn (Rol_Role_t Role)
case Usr_ME:
break;
case Usr_OTHER:
- default:
/***** Free memory used for user's data *****/
Usr_UsrDataDestructor (&OtherUsrDat);
break;
diff --git a/swad_course.c b/swad_course.c
index 37d2ab554..125284765 100644
--- a/swad_course.c
+++ b/swad_course.c
@@ -705,45 +705,53 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
/* Course year */
HTM_TD_Begin ("class=\"CT DAT_%s\"",The_GetSuffix ());
- if (ICanEdit == Usr_I_CAN)
- {
- Frm_BeginForm (ActChgCrsYea);
- ParCod_PutPar (ParCod_OthHie,Crs->HieCod);
- HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,NULL,
- "name=\"OthCrsYear\""
- " class=\"HIE_SEL_NARROW INPUT_%s\"",
- The_GetSuffix ());
- for (YearAux = 0;
- YearAux <= Deg_MAX_YEARS_PER_DEGREE;
- YearAux++) // All the years are permitted
- // because it's possible to move this course
- // to another degree (with other active years)
- HTM_OPTION (HTM_Type_UNSIGNED,&YearAux,
- YearAux == Crs->Specific.Year ? HTM_OPTION_SELECTED :
- HTM_OPTION_UNSELECTED,
- HTM_OPTION_ENABLED,
- "%s",Txt_YEAR_OF_DEGREE[YearAux]);
- HTM_SELECT_End ();
- Frm_EndForm ();
- }
- else
- HTM_Txt (Txt_YEAR_OF_DEGREE[Crs->Specific.Year]);
+ switch (ICanEdit)
+ {
+ case Usr_I_CAN:
+ Frm_BeginForm (ActChgCrsYea);
+ ParCod_PutPar (ParCod_OthHie,Crs->HieCod);
+ HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,NULL,
+ "name=\"OthCrsYear\""
+ " class=\"HIE_SEL_NARROW INPUT_%s\"",
+ The_GetSuffix ());
+ for (YearAux = 0;
+ YearAux <= Deg_MAX_YEARS_PER_DEGREE;
+ YearAux++) // All the years are permitted
+ // because it's possible to move this course
+ // to another degree (with other active years)
+ HTM_OPTION (HTM_Type_UNSIGNED,&YearAux,
+ YearAux == Crs->Specific.Year ? HTM_OPTION_SELECTED :
+ HTM_OPTION_UNSELECTED,
+ HTM_OPTION_ENABLED,
+ "%s",Txt_YEAR_OF_DEGREE[YearAux]);
+ HTM_SELECT_End ();
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ HTM_Txt (Txt_YEAR_OF_DEGREE[Crs->Specific.Year]);
+ break;
+ }
HTM_TD_End ();
/* Institutional code of the course */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
- if (ICanEdit == Usr_I_CAN)
+ switch (ICanEdit)
{
- Frm_BeginForm (ActChgInsCrsCod);
- ParCod_PutPar (ParCod_OthHie,Crs->HieCod);
- HTM_INPUT_TEXT ("InsCrsCod",Hie_MAX_CHARS_INSTITUTIONAL_COD,
- Crs->InstitutionalCod,HTM_SUBMIT_ON_CHANGE,
- "class=\"INPUT_INS_CODE INPUT_%s\"",
- The_GetSuffix ());
- Frm_EndForm ();
+ case Usr_I_CAN:
+ Frm_BeginForm (ActChgInsCrsCod);
+ ParCod_PutPar (ParCod_OthHie,Crs->HieCod);
+ HTM_INPUT_TEXT ("InsCrsCod",Hie_MAX_CHARS_INSTITUTIONAL_COD,
+ Crs->InstitutionalCod,HTM_SUBMIT_ON_CHANGE,
+ "class=\"INPUT_INS_CODE INPUT_%s\"",
+ The_GetSuffix ());
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ HTM_Txt (Crs->InstitutionalCod);
+ break;
}
- else
- HTM_Txt (Crs->InstitutionalCod);
HTM_TD_End ();
/* Course short name and full name */
diff --git a/swad_degree.c b/swad_degree.c
index 45927e974..d8735770c 100644
--- a/swad_degree.c
+++ b/swad_degree.c
@@ -389,63 +389,69 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
/* Degree type */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
- if (ICanEdit == Usr_I_CAN)
+ switch (ICanEdit)
{
- Frm_BeginForm (ActChgDegTyp);
- ParCod_PutPar (ParCod_OthHie,Deg->HieCod);
- HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,NULL,
- "name=\"OthDegTypCod\""
- " class=\"HIE_SEL_NARROW INPUT_%s\"",
- The_GetSuffix ());
- for (NumDegTyp = 0;
- NumDegTyp < DegTypes->Num;
- NumDegTyp++)
- {
- DegTyp = &DegTypes->Lst[NumDegTyp];
- HTM_OPTION (HTM_Type_LONG,&DegTyp->DegTypCod,
- DegTyp->DegTypCod == Deg->Specific.TypCod ? HTM_OPTION_SELECTED :
- HTM_OPTION_UNSELECTED,
- HTM_OPTION_ENABLED,
- "%s",DegTyp->DegTypName);
- }
- HTM_SELECT_End ();
- Frm_EndForm ();
+ case Usr_I_CAN:
+ Frm_BeginForm (ActChgDegTyp);
+ ParCod_PutPar (ParCod_OthHie,Deg->HieCod);
+ HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,NULL,
+ "name=\"OthDegTypCod\""
+ " class=\"HIE_SEL_NARROW INPUT_%s\"",
+ The_GetSuffix ());
+ for (NumDegTyp = 0;
+ NumDegTyp < DegTypes->Num;
+ NumDegTyp++)
+ {
+ DegTyp = &DegTypes->Lst[NumDegTyp];
+ HTM_OPTION (HTM_Type_LONG,&DegTyp->DegTypCod,
+ DegTyp->DegTypCod == Deg->Specific.TypCod ? HTM_OPTION_SELECTED :
+ HTM_OPTION_UNSELECTED,
+ HTM_OPTION_ENABLED,
+ "%s",DegTyp->DegTypName);
+ }
+ HTM_SELECT_End ();
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ for (NumDegTyp = 0;
+ NumDegTyp < DegTypes->Num;
+ NumDegTyp++)
+ {
+ DegTyp = &DegTypes->Lst[NumDegTyp];
+ if (DegTyp->DegTypCod == Deg->Specific.TypCod)
+ HTM_Txt (DegTyp->DegTypName);
+ }
+ break;
}
- else
- for (NumDegTyp = 0;
- NumDegTyp < DegTypes->Num;
- NumDegTyp++)
- {
- DegTyp = &DegTypes->Lst[NumDegTyp];
- if (DegTyp->DegTypCod == Deg->Specific.TypCod)
- HTM_Txt (DegTyp->DegTypName);
- }
HTM_TD_End ();
/* Degree WWW */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
- if (ICanEdit == Usr_I_CAN)
+ switch (ICanEdit)
{
- Frm_BeginForm (ActChgDegWWW);
- ParCod_PutPar (ParCod_OthHie,Deg->HieCod);
- HTM_INPUT_URL ("WWW",Deg->WWW,HTM_SUBMIT_ON_CHANGE,
- "class=\"INPUT_WWW INPUT_%s\""
- " required=\"required\"",
- The_GetSuffix ());
- Frm_EndForm ();
- }
- else
- {
- Str_Copy (WWW,Deg->WWW,sizeof (WWW) - 1);
- HTM_DIV_Begin ("class=\"EXTERNAL_WWW_SHRT\"");
- HTM_A_Begin ("href=\"%s\" target=\"_blank\" title=\"%s\""
- " class=\"DAT_%s\"",
- Deg->WWW,
- Deg->WWW,
- The_GetSuffix ());
- HTM_Txt (WWW);
- HTM_A_End ();
- HTM_DIV_End ();
+ case Usr_I_CAN:
+ Frm_BeginForm (ActChgDegWWW);
+ ParCod_PutPar (ParCod_OthHie,Deg->HieCod);
+ HTM_INPUT_URL ("WWW",Deg->WWW,HTM_SUBMIT_ON_CHANGE,
+ "class=\"INPUT_WWW INPUT_%s\""
+ " required=\"required\"",
+ The_GetSuffix ());
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Str_Copy (WWW,Deg->WWW,sizeof (WWW) - 1);
+ HTM_DIV_Begin ("class=\"EXTERNAL_WWW_SHRT\"");
+ HTM_A_Begin ("href=\"%s\" target=\"_blank\" title=\"%s\""
+ " class=\"DAT_%s\"",
+ Deg->WWW,
+ Deg->WWW,
+ The_GetSuffix ());
+ HTM_Txt (WWW);
+ HTM_A_End ();
+ HTM_DIV_End ();
+ break;
}
HTM_TD_End ();
diff --git a/swad_enrolment.c b/swad_enrolment.c
index 16030a1a1..e88bb8ed7 100644
--- a/swad_enrolment.c
+++ b/swad_enrolment.c
@@ -2443,12 +2443,18 @@ void Enr_ReqRegRemTch (void)
static void Enr_ReqRegRemUsr (Rol_Role_t Role)
{
- if (Adm_CheckIfICanAdminOtherUsrs () == Usr_I_CAN)
- /***** Form to request the user's ID of another user *****/
- Enr_ReqAnotherUsrIDToRegisterRemove (Role);
- else
- /***** Form to request if register/remove me *****/
- Enr_AskIfRegRemMe (Role);
+ switch (Adm_CheckIfICanAdminOtherUsrs ())
+ {
+ case Usr_I_CAN:
+ /***** Form to request the user's ID of another user *****/
+ Enr_ReqAnotherUsrIDToRegisterRemove (Role);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ /***** Form to request if register/remove me *****/
+ Enr_AskIfRegRemMe (Role);
+ break;
+ }
}
/*****************************************************************************/
@@ -2672,12 +2678,16 @@ void Enr_ReqRemUsrFromCrs (void)
{
/***** Get user to be removed *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Enr_CheckIfICanRemUsrFromCrs () == Usr_I_CAN)
- Enr_AskIfRemoveUsrFromCrs (&Gbl.Usrs.Other.UsrDat);
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
+ switch (Enr_CheckIfICanRemUsrFromCrs ())
+ {
+ case Usr_I_CAN:
+ Enr_AskIfRemoveUsrFromCrs (&Gbl.Usrs.Other.UsrDat);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
+ }
else
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
@@ -2692,14 +2702,19 @@ void Enr_RemUsrFromCrs1 (void)
{
/***** Get user to be removed *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Enr_CheckIfICanRemUsrFromCrs () == Usr_I_CAN)
- Enr_EffectivelyRemUsrFromCrs (&Gbl.Usrs.Other.UsrDat,&Gbl.Hierarchy.Node[Hie_CRS],
- Enr_DO_NOT_REMOVE_USR_PRODUCTION,
- Cns_VERBOSE);
- else
- Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
- }
+ switch (Enr_CheckIfICanRemUsrFromCrs ())
+ {
+ case Usr_I_CAN:
+ Enr_EffectivelyRemUsrFromCrs (&Gbl.Usrs.Other.UsrDat,
+ &Gbl.Hierarchy.Node[Hie_CRS],
+ Enr_DO_NOT_REMOVE_USR_PRODUCTION,
+ Cns_VERBOSE);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
+ }
else
Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
}
@@ -2951,7 +2966,6 @@ void Enr_ModifyUsr1 (void)
Grp_ChangeMyGrps (Cns_QUIET);
break;
case Usr_OTHER:
- default:
Grp_ChangeOtherUsrGrps ();
break;
}
@@ -3206,7 +3220,6 @@ static void Enr_EffectivelyRemUsrFromCrs (struct Usr_Data *UsrDat,
Rol_SetMyRoles ();
break;
case Usr_OTHER:
- default:
/* Now he/she does not belong to current course */
UsrDat->Accepted = false;
UsrDat->Roles.InCurrentCrs = Rol_USR;
diff --git a/swad_exam_database.c b/swad_exam_database.c
index e2b504bfe..9da5d8b65 100644
--- a/swad_exam_database.c
+++ b/swad_exam_database.c
@@ -2325,7 +2325,6 @@ unsigned Exa_DB_GetResults (MYSQL_RES **mysql_res,
Err_NotEnoughMemoryExit ();
break;
case Usr_OTHER: // A teacher/admin watching the results of other users
- default:
if (asprintf (&HidSesSubQuery,"%s","") < 0)
Err_NotEnoughMemoryExit ();
break;
@@ -2368,7 +2367,6 @@ unsigned Exa_DB_GetResults (MYSQL_RES **mysql_res,
Err_NotEnoughMemoryExit ();
break;
case Usr_OTHER: // A teacher/admin watching the results of other users
- default:
if (asprintf (&HidExaSubQuery,"%s","") < 0)
Err_NotEnoughMemoryExit ();
break;
diff --git a/swad_exam_print.c b/swad_exam_print.c
index 263cf8d0e..46a852d3a 100644
--- a/swad_exam_print.c
+++ b/swad_exam_print.c
@@ -178,55 +178,59 @@ void ExaPrn_ShowExamPrint (void)
ExaSes_GetAndCheckPars (&Exams,&Session);
/***** Check if I can access to this session *****/
- if (ExaSes_CheckIfICanAnswerThisSession (&Exams.Exam,&Session) == Usr_I_CAN)
+ switch (ExaSes_CheckIfICanAnswerThisSession (&Exams.Exam,&Session))
{
- /***** Set basic data of exam print *****/
- Print.SesCod = Session.SesCod;
- Print.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
-
- /***** Get exam print data from database *****/
- ExaPrn_GetPrintDataBySesCodAndUsrCod (&Print);
-
- if (Print.PrnCod <= 0) // Exam print does not exists ==> create it
- {
- /***** Set again basic data of exam print *****/
+ case Usr_I_CAN:
+ /***** Set basic data of exam print *****/
Print.SesCod = Session.SesCod;
Print.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
- /***** Get questions from database *****/
- ExaPrn_GetQuestionsForNewPrintFromDB (&Print,Exams.Exam.ExaCod);
+ /***** Get exam print data from database *****/
+ ExaPrn_GetPrintDataBySesCodAndUsrCod (&Print);
- if (Print.NumQsts.All)
+ if (Print.PrnCod <= 0) // Exam print does not exists ==> create it
{
- /***** Create new exam print in database *****/
- ExaPrn_CreatePrint (&Print);
+ /***** Set again basic data of exam print *****/
+ Print.SesCod = Session.SesCod;
+ Print.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
+
+ /***** Get questions from database *****/
+ ExaPrn_GetQuestionsForNewPrintFromDB (&Print,Exams.Exam.ExaCod);
+
+ if (Print.NumQsts.All)
+ {
+ /***** Create new exam print in database *****/
+ ExaPrn_CreatePrint (&Print);
+
+ /***** Set log print code and action *****/
+ ExaLog_SetPrnCod (Print.PrnCod);
+ ExaLog_SetAction (ExaLog_START_EXAM);
+ ExaLog_SetIfCanAnswer (true);
+ }
+ }
+ else // Exam print exists
+ {
+ /***** Get exam print data from database *****/
+ ExaPrn_GetPrintDataBySesCodAndUsrCod (&Print);
+
+ /***** Get questions and current user's answers from database *****/
+ ExaPrn_GetPrintQuestionsFromDB (&Print);
/***** Set log print code and action *****/
ExaLog_SetPrnCod (Print.PrnCod);
- ExaLog_SetAction (ExaLog_START_EXAM);
+ ExaLog_SetAction (ExaLog_RESUME_EXAM);
ExaLog_SetIfCanAnswer (true);
}
- }
- else // Exam print exists
- {
- /***** Get exam print data from database *****/
- ExaPrn_GetPrintDataBySesCodAndUsrCod (&Print);
- /***** Get questions and current user's answers from database *****/
- ExaPrn_GetPrintQuestionsFromDB (&Print);
-
- /***** Set log print code and action *****/
- ExaLog_SetPrnCod (Print.PrnCod);
- ExaLog_SetAction (ExaLog_RESUME_EXAM);
- ExaLog_SetIfCanAnswer (true);
- }
-
- /***** Show test to be answered *****/
- ExaPrn_ShowExamPrintToFillIt (&Exams,&Print);
+ /***** Show test to be answered *****/
+ ExaPrn_ShowExamPrintToFillIt (&Exams,&Print);
+ break;
+ case Usr_I_CAN_NOT: // Session not open or accessible
+ default:
+ /***** Show warning *****/
+ Ale_ShowAlert (Ale_INFO,Txt_You_dont_have_access_to_the_exam);
+ break;
}
- else // Session not open or accessible
- /***** Show warning *****/
- Ale_ShowAlert (Ale_INFO,Txt_You_dont_have_access_to_the_exam);
}
/*****************************************************************************/
@@ -996,42 +1000,44 @@ void ExaPrn_ReceivePrintAnswer (void)
ExaLog_SetQstInd (QstInd);
/***** Check if session if visible and open *****/
- if (ExaSes_CheckIfICanAnswerThisSession (&Exams.Exam,&Session) == Usr_I_CAN)
+ switch (ExaSes_CheckIfICanAnswerThisSession (&Exams.Exam,&Session))
{
- /***** Set log open to true ****/
- ExaLog_SetIfCanAnswer (true);
+ case Usr_I_CAN:
+ /***** Set log open to true ****/
+ ExaLog_SetIfCanAnswer (true);
- /***** Get questions and current user's answers of exam print from database *****/
- ExaPrn_GetPrintQuestionsFromDB (&Print);
+ /***** Get questions and current user's answers of exam print from database *****/
+ ExaPrn_GetPrintQuestionsFromDB (&Print);
- /***** Get answers from form to assess a test *****/
- ExaPrn_GetAnswerFromForm (&Print,QstInd);
+ /***** Get answers from form to assess a test *****/
+ ExaPrn_GetAnswerFromForm (&Print,QstInd);
- /***** Update answer in database *****/
- /* Compute question score and store in database */
- ExaPrn_ComputeScoreAndStoreQuestionOfPrint (&Print,QstInd);
+ /***** Update answer in database *****/
+ /* Compute question score and store in database */
+ ExaPrn_ComputeScoreAndStoreQuestionOfPrint (&Print,QstInd);
- /* Update exam print in database */
- Print.NumQsts.NotBlank = Exa_DB_GetNumQstsNotBlankInPrint (Print.PrnCod);
- Print.Score.All = Exa_DB_ComputeTotalScoreOfPrint (Print.PrnCod);
- Exa_DB_UpdatePrint (&Print);
+ /* Update exam print in database */
+ Print.NumQsts.NotBlank = Exa_DB_GetNumQstsNotBlankInPrint (Print.PrnCod);
+ Print.Score.All = Exa_DB_ComputeTotalScoreOfPrint (Print.PrnCod);
+ Exa_DB_UpdatePrint (&Print);
- /***** Show table with questions to answer *****/
- ExaPrn_ShowTableWithQstsToFill (&Exams,&Print);
- }
- else // Not accessible to answer
- {
- /***** Set log open to false ****/
- ExaLog_SetIfCanAnswer (false);
+ /***** Show table with questions to answer *****/
+ ExaPrn_ShowTableWithQstsToFill (&Exams,&Print);
+ break;
+ case Usr_I_CAN_NOT: // Not accessible to answer
+ default:
+ /***** Set log open to false ****/
+ ExaLog_SetIfCanAnswer (false);
- /***** Show warning *****/
- Ale_ShowAlert (Ale_INFO,Txt_You_dont_have_access_to_the_exam);
+ /***** Show warning *****/
+ Ale_ShowAlert (Ale_INFO,Txt_You_dont_have_access_to_the_exam);
- /***** Form to end/close this exam print *****/
- Frm_BeginForm (ActEndExaPrn);
- ExaSes_PutParsEdit (&Exams);
- Btn_PutCreateButton (Txt_Continue);
- Frm_EndForm ();
+ /***** Form to end/close this exam print *****/
+ Frm_BeginForm (ActEndExaPrn);
+ ExaSes_PutParsEdit (&Exams);
+ Btn_PutCreateButton (Txt_Continue);
+ Frm_EndForm ();
+ break;
}
}
diff --git a/swad_exam_result.c b/swad_exam_result.c
index 569b7b9a8..f03ae9205 100644
--- a/swad_exam_result.c
+++ b/swad_exam_result.c
@@ -825,8 +825,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
/* Write session title */
HTM_TD_Begin ("class=\"LT DAT_%s %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
+ The_GetSuffix (),The_GetColorRows ());
HTM_Txt (Session.Title);
HTM_TD_End ();
@@ -850,183 +849,224 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
/* Write total number of questions */
HTM_TD_Begin ("class=\"RT DAT_%s LINE_LEFT %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
- HTM_Unsigned (Print.NumQsts.All);
- else
- Ico_PutIconNotVisible ();
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
+ {
+ case Usr_I_CAN:
+ HTM_Unsigned (Print.NumQsts.All);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
+ }
HTM_TD_End ();
/* Valid questions */
HTM_TD_Begin ("class=\"RT DAT_GREEN_%s %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- if (Print.NumQsts.Valid.Total)
- HTM_Unsigned (Print.NumQsts.Valid.Total);
- else
- HTM_Light0 ();
+ case Usr_I_CAN:
+ if (Print.NumQsts.Valid.Total)
+ HTM_Unsigned (Print.NumQsts.Valid.Total);
+ else
+ HTM_Light0 ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Invalid questions */
HTM_TD_Begin ("class=\"RT DAT_RED_%s %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- NumQstsInvalid = Print.NumQsts.All - Print.NumQsts.Valid.Total;
- if (NumQstsInvalid)
- HTM_Unsigned (NumQstsInvalid);
- else
- HTM_Light0 ();
+ case Usr_I_CAN:
+ NumQstsInvalid = Print.NumQsts.All -
+ Print.NumQsts.Valid.Total;
+ if (NumQstsInvalid)
+ HTM_Unsigned (NumQstsInvalid);
+ else
+ HTM_Light0 ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Write number of correct questions */
HTM_TD_Begin ("class=\"RT DAT_%s LINE_LEFT %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- if (Print.NumQsts.Valid.Correct)
- HTM_Unsigned (Print.NumQsts.Valid.Correct);
- else
- HTM_Light0 ();
+ case Usr_I_CAN:
+ if (Print.NumQsts.Valid.Correct)
+ HTM_Unsigned (Print.NumQsts.Valid.Correct);
+ else
+ HTM_Light0 ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Write number of wrong questions */
HTM_TD_Begin ("class=\"RT DAT_%s %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- if (Print.NumQsts.Valid.Wrong.Negative)
- HTM_Unsigned (Print.NumQsts.Valid.Wrong.Negative);
- else
- HTM_Light0 ();
+ case Usr_I_CAN:
+ if (Print.NumQsts.Valid.Wrong.Negative)
+ HTM_Unsigned (Print.NumQsts.Valid.Wrong.Negative);
+ else
+ HTM_Light0 ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
HTM_TD_Begin ("class=\"RT DAT_%s %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- if (Print.NumQsts.Valid.Wrong.Zero)
- HTM_Unsigned (Print.NumQsts.Valid.Wrong.Zero);
- else
- HTM_Light0 ();
+ case Usr_I_CAN:
+ if (Print.NumQsts.Valid.Wrong.Zero)
+ HTM_Unsigned (Print.NumQsts.Valid.Wrong.Zero);
+ else
+ HTM_Light0 ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
HTM_TD_Begin ("class=\"RT DAT_%s %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- if (Print.NumQsts.Valid.Wrong.Positive)
- HTM_Unsigned (Print.NumQsts.Valid.Wrong.Positive);
- else
- HTM_Light0 ();
+ case Usr_I_CAN:
+ if (Print.NumQsts.Valid.Wrong.Positive)
+ HTM_Unsigned (Print.NumQsts.Valid.Wrong.Positive);
+ else
+ HTM_Light0 ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Write number of blank questions */
HTM_TD_Begin ("class=\"RT DAT_%s %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- if (Print.NumQsts.Valid.Blank)
- HTM_Unsigned (Print.NumQsts.Valid.Blank);
- else
- HTM_Light0 ();
+ case Usr_I_CAN:
+ if (Print.NumQsts.Valid.Blank)
+ HTM_Unsigned (Print.NumQsts.Valid.Blank);
+ else
+ HTM_Light0 ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Write score valid (taking into account only valid questions) */
HTM_TD_Begin ("class=\"RT DAT_%s LINE_LEFT %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- HTM_Double2Decimals (Print.Score.Valid);
- HTM_Txt ("/");
- HTM_Unsigned (Print.NumQsts.Valid.Total);
+ case Usr_I_CAN:
+ HTM_Double2Decimals (Print.Score.Valid);
+ HTM_Txt ("/");
+ HTM_Unsigned (Print.NumQsts.Valid.Total);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Write average score per question (taking into account only valid questions) */
HTM_TD_Begin ("class=\"RT DAT_%s %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
- HTM_Double2Decimals (Print.NumQsts.Valid.Total ? Print.Score.Valid /
- (double) Print.NumQsts.Valid.Total :
- 0.0);
- else
- Ico_PutIconNotVisible ();
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
+ {
+ case Usr_I_CAN:
+ HTM_Double2Decimals (Print.NumQsts.Valid.Total ? Print.Score.Valid /
+ (double) Print.NumQsts.Valid.Total :
+ 0.0);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
+ }
HTM_TD_End ();
/* Write grade over maximum grade (taking into account only valid questions) */
HTM_TD_Begin ("class=\"RT DAT_%s LINE_LEFT %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- Grade = TstPrn_ComputeGrade (Print.NumQsts.Valid.Total,Print.Score.Valid,Exam.MaxGrade);
- TstPrn_ShowGrade (Grade,Exam.MaxGrade);
- TotalGrade += Grade;
+ case Usr_I_CAN:
+ Grade = TstPrn_ComputeGrade (Print.NumQsts.Valid.Total,Print.Score.Valid,Exam.MaxGrade);
+ TstPrn_ShowGrade (Grade,Exam.MaxGrade);
+ TotalGrade += Grade;
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Link to show this result */
- HTM_TD_Begin ("class=\"RT LINE_LEFT %s\"",
- The_GetColorRows ());
- if (ICanView.Result == Usr_I_CAN)
+ HTM_TD_Begin ("class=\"RT LINE_LEFT %s\"",The_GetColorRows ());
+ switch (ICanView.Result)
{
- Exams->Exam.ExaCod = Session.ExaCod;
- Exams->SesCod = Session.SesCod;
- switch (MeOrOther)
- {
- case Usr_ME:
- Frm_BeginForm (ActSeeOneExaResMe);
- ExaSes_PutParsEdit (Exams);
- Ico_PutIconLink ("tasks.svg",Ico_BLACK,ActSeeOneExaResMe);
- break;
- case Usr_OTHER:
- Frm_BeginForm (ActSeeOneExaResOth);
- ExaSes_PutParsEdit (Exams);
- Usr_PutParOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EnUsrCod);
- Ico_PutIconLink ("tasks.svg",Ico_BLACK,ActSeeOneExaResOth);
- break;
- }
- Frm_EndForm ();
+ case Usr_I_CAN:
+ Exams->Exam.ExaCod = Session.ExaCod;
+ Exams->SesCod = Session.SesCod;
+ switch (MeOrOther)
+ {
+ case Usr_ME:
+ Frm_BeginForm (ActSeeOneExaResMe);
+ ExaSes_PutParsEdit (Exams);
+ Ico_PutIconLink ("tasks.svg",Ico_BLACK,ActSeeOneExaResMe);
+ break;
+ case Usr_OTHER:
+ Frm_BeginForm (ActSeeOneExaResOth);
+ ExaSes_PutParsEdit (Exams);
+ Usr_PutParOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EnUsrCod);
+ Ico_PutIconLink ("tasks.svg",Ico_BLACK,ActSeeOneExaResOth);
+ break;
+ }
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
HTM_TR_End ();
@@ -1280,7 +1320,6 @@ void ExaRes_ShowOneExaResult (void)
UsrDat = &Gbl.Usrs.Me.UsrDat;
break;
case Usr_OTHER:
- default:
UsrDat = &Gbl.Usrs.Other.UsrDat;
Usr_GetParOtherUsrCodEncrypted (UsrDat);
break;
@@ -1403,12 +1442,18 @@ static void ExaRes_CheckIfICanViewResult (const struct Exa_Exam *Exam,
// Whether I belong or not to groups of session is not checked here...
// ...because I should be able to see old exams made in old groups to which I belonged
- if (ICanView->Result == Usr_I_CAN)
- // Depends on 5 visibility icons associated to exam
- ICanView->Score = TstVis_IsVisibleTotalScore (Exam->Visibility) ? Usr_I_CAN :
- Usr_I_CAN_NOT;
- else
- ICanView->Score = Usr_I_CAN_NOT;
+ switch (ICanView->Result)
+ {
+ case Usr_I_CAN:
+ // Depends on 5 visibility icons associated to exam
+ ICanView->Score = TstVis_IsVisibleTotalScore (Exam->Visibility) ? Usr_I_CAN :
+ Usr_I_CAN_NOT;
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ ICanView->Score = Usr_I_CAN_NOT;
+ break;
+ }
break;
case Rol_NET:
case Rol_TCH:
@@ -1602,32 +1647,36 @@ static void ExaRes_ShowExamResultNumQsts (struct ExaPrn_Print *Print,
/***** Number of questions *****/
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
- if (ICanView->Result == Usr_I_CAN)
+ switch (ICanView->Result)
{
- HTM_TxtF ("%u",Print->NumQsts.All);
- if (Print->NumQsts.All != Print->NumQsts.Valid.Total)
- {
- HTM_Txt (" (");
+ case Usr_I_CAN:
+ HTM_TxtF ("%u",Print->NumQsts.All);
+ if (Print->NumQsts.All != Print->NumQsts.Valid.Total)
+ {
+ HTM_Txt (" (");
- /* Valid questions */
- HTM_SPAN_Begin ("class=\"DAT_GREEN_%s\"",The_GetSuffix ());
- HTM_TxtColonNBSP (Txt_QUESTIONS_valid);
- HTM_Unsigned (Print->NumQsts.Valid.Total);
- HTM_SPAN_End ();
+ /* Valid questions */
+ HTM_SPAN_Begin ("class=\"DAT_GREEN_%s\"",The_GetSuffix ());
+ HTM_TxtColonNBSP (Txt_QUESTIONS_valid);
+ HTM_Unsigned (Print->NumQsts.Valid.Total);
+ HTM_SPAN_End ();
- HTM_TxtF ("; ");
+ HTM_TxtF ("; ");
- /* Invalid questions */
- HTM_SPAN_Begin ("class=\"DAT_RED_%s\"",The_GetSuffix ());
- HTM_TxtColonNBSP (Txt_QUESTIONS_invalid);
- HTM_Unsigned (Print->NumQsts.All - Print->NumQsts.Valid.Total);
- HTM_SPAN_End ();
+ /* Invalid questions */
+ HTM_SPAN_Begin ("class=\"DAT_RED_%s\"",The_GetSuffix ());
+ HTM_TxtColonNBSP (Txt_QUESTIONS_invalid);
+ HTM_Unsigned (Print->NumQsts.All - Print->NumQsts.Valid.Total);
+ HTM_SPAN_End ();
- HTM_Txt (")");
- }
+ HTM_Txt (")");
+ }
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/***** Row end *****/
@@ -1656,19 +1705,25 @@ static void ExaRes_ShowExamResultNumAnss (struct ExaPrn_Print *Print,
/***** Number of answers *****/
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
- if (ICanView->Score == Usr_I_CAN)
- HTM_TxtF ("%s(pi=1): %u; "
- "%s(-1≤pi<0): %u; "
- "%s(pi=0): %u; "
- "%s(0<pi<1): %u; "
- "%s(pi=0): %u",
- Txt_ANSWERS_correct,Print->NumQsts.Valid.Correct,
- Txt_ANSWERS_wrong ,Print->NumQsts.Valid.Wrong.Negative,
- Txt_ANSWERS_wrong ,Print->NumQsts.Valid.Wrong.Zero,
- Txt_ANSWERS_wrong ,Print->NumQsts.Valid.Wrong.Positive,
- Txt_ANSWERS_blank ,Print->NumQsts.Valid.Blank);
- else
- Ico_PutIconNotVisible ();
+ switch (ICanView->Score)
+ {
+ case Usr_I_CAN:
+ HTM_TxtF ("%s(pi=1): %u; "
+ "%s(-1≤pi<0): %u; "
+ "%s(pi=0): %u; "
+ "%s(0<pi<1): %u; "
+ "%s(pi=0): %u",
+ Txt_ANSWERS_correct,Print->NumQsts.Valid.Correct,
+ Txt_ANSWERS_wrong ,Print->NumQsts.Valid.Wrong.Negative,
+ Txt_ANSWERS_wrong ,Print->NumQsts.Valid.Wrong.Zero,
+ Txt_ANSWERS_wrong ,Print->NumQsts.Valid.Wrong.Positive,
+ Txt_ANSWERS_blank ,Print->NumQsts.Valid.Blank);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
+ }
HTM_TD_End ();
/***** Row end *****/
@@ -1695,31 +1750,35 @@ static void ExaRes_ShowExamResultScore (struct ExaPrn_Print *Print,
/***** Score *****/
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
- if (ICanView->Score == Usr_I_CAN)
+ switch (ICanView->Score)
{
- /* Score counting all questions */
- if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
- HTM_STRONG_Begin ();
- HTM_Double2Decimals (Print->Score.All);
- HTM_Txt ("/");
- HTM_Unsigned (Print->NumQsts.All);
- if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
- HTM_STRONG_End ();
+ case Usr_I_CAN:
+ /* Score counting all questions */
+ if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
+ HTM_STRONG_Begin ();
+ HTM_Double2Decimals (Print->Score.All);
+ HTM_Txt ("/");
+ HTM_Unsigned (Print->NumQsts.All);
+ if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
+ HTM_STRONG_End ();
- /* Scoure counting only valid questions */
- if (Print->NumQsts.All != Print->NumQsts.Valid.Total)
- {
- HTM_Txt ("; ");
- HTM_TxtColonNBSP (Txt_valid_score);
- HTM_STRONG_Begin ();
- HTM_Double2Decimals (Print->Score.Valid);
- HTM_Txt ("/");
- HTM_Unsigned (Print->NumQsts.Valid.Total);
- HTM_STRONG_End ();
- }
+ /* Scoure counting only valid questions */
+ if (Print->NumQsts.All != Print->NumQsts.Valid.Total)
+ {
+ HTM_Txt ("; ");
+ HTM_TxtColonNBSP (Txt_valid_score);
+ HTM_STRONG_Begin ();
+ HTM_Double2Decimals (Print->Score.Valid);
+ HTM_Txt ("/");
+ HTM_Unsigned (Print->NumQsts.Valid.Total);
+ HTM_STRONG_End ();
+ }
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/***** Row end *****/
@@ -1747,27 +1806,33 @@ static void ExaRes_ShowExamResultGrade (const struct Exa_Exam *Exam,
/***** Grade *****/
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
- if (ICanView->Score == Usr_I_CAN)
+ switch (ICanView->Score)
{
- /* Grade counting all questions */
- if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
- HTM_STRONG_Begin ();
- TstPrn_ComputeAndShowGrade (Print->NumQsts.All,Print->Score.All,Exam->MaxGrade);
- if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
- HTM_STRONG_End ();
+ case Usr_I_CAN:
+ /* Grade counting all questions */
+ if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
+ HTM_STRONG_Begin ();
+ TstPrn_ComputeAndShowGrade (Print->NumQsts.All,Print->Score.All,Exam->MaxGrade);
+ if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
+ HTM_STRONG_End ();
- /* Grade counting only valid questions */
- if (Print->NumQsts.All != Print->NumQsts.Valid.Total)
- {
- HTM_Txt ("; ");
- HTM_TxtColonNBSP (Txt_valid_grade);
- HTM_STRONG_Begin ();
- TstPrn_ComputeAndShowGrade (Print->NumQsts.Valid.Total,Print->Score.Valid,Exam->MaxGrade);
- HTM_STRONG_End ();
- }
+ /* Grade counting only valid questions */
+ if (Print->NumQsts.All != Print->NumQsts.Valid.Total)
+ {
+ HTM_Txt ("; ");
+ HTM_TxtColonNBSP (Txt_valid_grade);
+ HTM_STRONG_Begin ();
+ TstPrn_ComputeAndShowGrade (Print->NumQsts.Valid.Total,
+ Print->Score.Valid,
+ Exam->MaxGrade);
+ HTM_STRONG_End ();
+ }
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/***** Row end *****/
diff --git a/swad_exam_session.c b/swad_exam_session.c
index b2ffb50a4..3360f3838 100644
--- a/swad_exam_session.c
+++ b/swad_exam_session.c
@@ -500,27 +500,29 @@ static void ExaSes_ListOneOrMoreSessionsTitleGrps (struct Exa_Exams *Exams,
/***** Session title *****/
HTM_ARTICLE_Begin (Anchor);
- if (ExaSes_CheckIfICanAnswerThisSession (&Exams->Exam,Session) == Usr_I_CAN)
+ switch (ExaSes_CheckIfICanAnswerThisSession (&Exams->Exam,Session))
{
- Frm_BeginForm (ActSeeExaPrn);
- Exa_PutPars (Exams);
- ParCod_PutPar (ParCod_Ses,Session->SesCod);
- HTM_BUTTON_Submit_Begin (Gbl.Usrs.Me.Role.Logged == Rol_STD ? Txt_Play :
- Txt_Resume,
- "class=\"LT BT_LINK %s_%s\"",
- HidVis_TitleClass[Session->HiddenOrVisible],
- The_GetSuffix ());
+ case Usr_I_CAN:
+ Frm_BeginForm (ActSeeExaPrn);
+ Exa_PutPars (Exams);
+ ParCod_PutPar (ParCod_Ses,Session->SesCod);
+ HTM_BUTTON_Submit_Begin (Gbl.Usrs.Me.Role.Logged == Rol_STD ? Txt_Play :
+ Txt_Resume,
+ "class=\"LT BT_LINK %s_%s\"",
+ HidVis_TitleClass[Session->HiddenOrVisible],
+ The_GetSuffix ());
+ HTM_Txt (Session->Title);
+ HTM_BUTTON_End ();
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ HTM_SPAN_Begin ("class=\"%s_%s\"",
+ HidVis_TitleClass[Session->HiddenOrVisible],
+ The_GetSuffix ());
HTM_Txt (Session->Title);
- HTM_BUTTON_End ();
- Frm_EndForm ();
- }
- else
- {
- HTM_SPAN_Begin ("class=\"%s_%s\"",
- HidVis_TitleClass[Session->HiddenOrVisible],
- The_GetSuffix ());
- HTM_Txt (Session->Title);
- HTM_SPAN_End ();
+ HTM_SPAN_End ();
+ break;
}
HTM_ARTICLE_End ();
@@ -650,25 +652,27 @@ static void ExaSes_ListOneOrMoreSessionsResultTch (struct Exa_Exams *Exams,
"trophy.svg",Ico_BLACK);
/***** Check if visibility of session results can be changed *****/
- if (ExaSes_CheckIfICanChangeVisibilityOfResults (Session) == Usr_I_CAN)
+ switch (ExaSes_CheckIfICanChangeVisibilityOfResults (Session))
{
- /***** Put form to change visibility of session results *****/
- if (Session->ShowUsrResults)
- Lay_PutContextualLinkOnlyIcon (ActChgVisExaRes,NULL,
- ExaSes_PutParsEdit,Exams,
- "eye.svg",Ico_GREEN);
- else
- Lay_PutContextualLinkOnlyIcon (ActChgVisExaRes,NULL,
- ExaSes_PutParsEdit,Exams,
- "eye-slash.svg",Ico_RED);
- }
- else // Don't put form
- {
- /***** Put icon showing the current visibility of session results *****/
- if (Session->ShowUsrResults)
- Ico_PutIconOff ("eye.svg" ,Ico_GREEN,Txt_Visible_results);
- else
- Ico_PutIconOff ("eye-slash.svg",Ico_RED ,Txt_Hidden_results);
+ case Usr_I_CAN:
+ /***** Put form to change visibility of session results *****/
+ if (Session->ShowUsrResults)
+ Lay_PutContextualLinkOnlyIcon (ActChgVisExaRes,NULL,
+ ExaSes_PutParsEdit,Exams,
+ "eye.svg",Ico_GREEN);
+ else
+ Lay_PutContextualLinkOnlyIcon (ActChgVisExaRes,NULL,
+ ExaSes_PutParsEdit,Exams,
+ "eye-slash.svg",Ico_RED);
+ break;
+ case Usr_I_CAN_NOT: // Don't put form
+ default:
+ /***** Put icon showing the current visibility of session results *****/
+ if (Session->ShowUsrResults)
+ Ico_PutIconOff ("eye.svg" ,Ico_GREEN,Txt_Visible_results);
+ else
+ Ico_PutIconOff ("eye-slash.svg",Ico_RED ,Txt_Hidden_results);
+ break;
}
}
diff --git a/swad_exam_set.c b/swad_exam_set.c
index 702f2e23e..a478b8913 100644
--- a/swad_exam_set.c
+++ b/swad_exam_set.c
@@ -588,11 +588,17 @@ static void ExaSet_ListOneOrMoreSetsForEdition (struct Exa_Exams *Exams,
The_GetColorRows ());
/* Put icon to remove the set */
- if (ICanEditSets == Usr_I_CAN)
- Ico_PutContextualIconToRemove (ActReqRemExaSet,NULL,
- ExaSet_PutParsOneSet,Exams);
- else
- Ico_PutIconRemovalNotAllowed ();
+ switch (ICanEditSets)
+ {
+ case Usr_I_CAN:
+ Ico_PutContextualIconToRemove (ActReqRemExaSet,NULL,
+ ExaSet_PutParsOneSet,Exams);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconRemovalNotAllowed ();
+ break;
+ }
/* Put icon to move up the question */
if (ICanEditSets == Usr_I_CAN && Set.SetInd > 1)
@@ -841,11 +847,17 @@ static void ExaSet_ListOneOrMoreQuestionsForEdition (struct Exa_Exams *Exams,
HTM_TD_Begin ("class=\"BT %s\"",The_GetColorRows ());
/* Put icon to remove the question */
- if (ICanEditQuestions == Usr_I_CAN)
- Ico_PutContextualIconToRemove (ActReqRemSetQst,NULL,
- ExaSet_PutParsOneQst,Exams);
- else
- Ico_PutIconRemovalNotAllowed ();
+ switch (ICanEditQuestions)
+ {
+ case Usr_I_CAN:
+ Ico_PutContextualIconToRemove (ActReqRemSetQst,NULL,
+ ExaSet_PutParsOneQst,Exams);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconRemovalNotAllowed ();
+ break;
+ }
/* Put icon to validate/invalidate the question */
Lay_PutContextualLinkOnlyIcon (ValInv[Question.Validity].NextAction,Anchor,
@@ -1405,12 +1417,20 @@ void ExaSet_MoveDownSet (void)
static Usr_ICan_t ExaSet_CheckIfICanEditExamSets (const struct Exa_Exam *Exam)
{
- if (Exa_CheckIfICanEditExams () == Usr_I_CAN)
- /***** Questions are editable only if exam has no sessions *****/
- return (Exam->NumSess == 0) ? Usr_I_CAN : // Exams with sessions should not be edited
- Usr_I_CAN_NOT;
- else
- return Usr_I_CAN_NOT; // Sets of questions are not editable
+ switch (Exa_CheckIfICanEditExams ())
+ {
+ case Usr_I_CAN:
+ /***** Questions are editable only if exam has no sessions *****/
+ return (Exam->NumSess == 0) ? Usr_I_CAN : // Exams with sessions should not be edited
+ Usr_I_CAN_NOT;
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ return Usr_I_CAN_NOT; // Sets of questions are not editable
+ break;
+ }
+
+ return Usr_I_CAN_NOT;
}
/*****************************************************************************/
diff --git a/swad_forum.c b/swad_forum.c
index f55b0a4a1..fa6f923a9 100644
--- a/swad_forum.c
+++ b/swad_forum.c
@@ -1004,22 +1004,24 @@ static void For_ShowAForumPost (struct For_Forums *Forums,
/***** Form to ban/unban post *****/
HTM_TD_Begin ("class=\"CONTEXT_COL\"");
- if (ICanModerateForum == Usr_I_CAN)
+ switch (ICanModerateForum)
{
- NextAction = DisabledOrEnabled == Cns_ENABLED ? For_ActionsDisPstFor[Forums->Forum.Type] :
- For_ActionsEnbPstFor[Forums->Forum.Type];
- Frm_BeginFormAnchor (NextAction,For_FORUM_POSTS_SECTION_ID);
- For_PutParsForum (Forums);
- Ico_PutIconLink (Icon[DisabledOrEnabled],Color[DisabledOrEnabled],NextAction);
- Frm_EndForm ();
- }
- else
- {
- if (asprintf (&Title,*TxtAllowedBanned[DisabledOrEnabled],PstNum) < 0)
- Err_NotEnoughMemoryExit ();
- Ico_PutIcon (Icon[DisabledOrEnabled],Color[DisabledOrEnabled],Title,
- "ICO_HIDDEN ICO16x16");
- free (Title);
+ case Usr_I_CAN:
+ NextAction = DisabledOrEnabled == Cns_ENABLED ? For_ActionsDisPstFor[Forums->Forum.Type] :
+ For_ActionsEnbPstFor[Forums->Forum.Type];
+ Frm_BeginFormAnchor (NextAction,For_FORUM_POSTS_SECTION_ID);
+ For_PutParsForum (Forums);
+ Ico_PutIconLink (Icon[DisabledOrEnabled],Color[DisabledOrEnabled],NextAction);
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ if (asprintf (&Title,*TxtAllowedBanned[DisabledOrEnabled],PstNum) < 0)
+ Err_NotEnoughMemoryExit ();
+ Ico_PutIcon (Icon[DisabledOrEnabled],Color[DisabledOrEnabled],Title,
+ "ICO_HIDDEN ICO16x16");
+ free (Title);
+ break;
}
/***** Form to remove post *****/
@@ -1518,8 +1520,9 @@ static void For_WriteLinksToPlatformForums (const struct For_Forums *Forums,
Forum.HieCod = -1L;
Highlight = (Forums->Forum.Type == For_FORUM__SWAD__USRS) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
- IsLastItemInLevel[1] = (IsLastForum && ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
- Lay_NO_LAST_ITEM;
+ IsLastItemInLevel[1] = (IsLastForum &&
+ ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
+ Lay_NO_LAST_ITEM;
For_WriteLinkToForum (Forums,&Forum,Highlight,1,IsLastItemInLevel);
/***** Link to forum of teachers about the platform *****/
@@ -1563,8 +1566,9 @@ static long For_WriteLinksToInsForums (const struct For_Forums *Forums,
Highlight = (Forums->Forum.Type == For_FORUM_INSTIT_USRS &&
Forums->Forum.HieCod == InsCod) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
- IsLastItemInLevel[2] = (IsLastIns && ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
- Lay_NO_LAST_ITEM;
+ IsLastItemInLevel[2] = (IsLastIns &&
+ ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
+ Lay_NO_LAST_ITEM;
For_WriteLinkToForum (Forums,&Forum,Highlight,2,IsLastItemInLevel);
/***** Link to forum of teachers from this institution *****/
@@ -1611,8 +1615,9 @@ static long For_WriteLinksToCtrForums (const struct For_Forums *Forums,
Highlight = (Forums->Forum.Type == For_FORUM_CENTER_USRS &&
Forums->Forum.HieCod == CtrCod) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
- IsLastItemInLevel[3] = (IsLastCtr && ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
- Lay_NO_LAST_ITEM;
+ IsLastItemInLevel[3] = (IsLastCtr &&
+ ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
+ Lay_NO_LAST_ITEM;
For_WriteLinkToForum (Forums,&Forum,Highlight,3,IsLastItemInLevel);
/***** Link to forum of teachers from this center *****/
@@ -1659,8 +1664,9 @@ static long For_WriteLinksToDegForums (const struct For_Forums *Forums,
Highlight = (Forums->Forum.Type == For_FORUM_DEGREE_USRS &&
Forums->Forum.HieCod == DegCod) ? Lay_HIGHLIGHT :
Lay_NO_HIGHLIGHT;
- IsLastItemInLevel[4] = (IsLastDeg && ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
- Lay_NO_LAST_ITEM;
+ IsLastItemInLevel[4] = (IsLastDeg &&
+ ICanSeeTeacherForum == Usr_I_CAN_NOT) ? Lay_LAST_ITEM :
+ Lay_NO_LAST_ITEM;
For_WriteLinkToForum (Forums,&Forum,Highlight,4,IsLastItemInLevel);
/***** Link to forum of teachers from this degree *****/
diff --git a/swad_game.c b/swad_game.c
index df177f56f..2f350b163 100644
--- a/swad_game.c
+++ b/swad_game.c
@@ -1636,16 +1636,24 @@ static void Gam_ListGameQuestions (struct Gam_Games *Games)
MYSQL_RES *mysql_res;
unsigned NumQsts;
Usr_ICan_t ICanEditQuestions = Gam_CheckIfICanEditGame (&Games->Game);
+ static void (*FunctionToDrawContextualIcons[Usr_NUM_I_CAN]) (void *Args) =
+ {
+ [Usr_I_CAN_NOT] = NULL,
+ [Usr_I_CAN ] = Gam_PutIconToAddNewQuestions,
+ };
+ void *Args[Usr_NUM_I_CAN] =
+ {
+ [Usr_I_CAN_NOT] = NULL,
+ [Usr_I_CAN ] = Games,
+ };
/***** Get data of questions from database *****/
NumQsts = Gam_DB_GetGameQuestionsBasic (&mysql_res,Games->Game.GamCod);
/***** Begin box *****/
Box_BoxBegin (Txt_Questions,
- ICanEditQuestions == Usr_I_CAN ? Gam_PutIconToAddNewQuestions :
- NULL,
- ICanEditQuestions == Usr_I_CAN ? Games :
- NULL,
+ FunctionToDrawContextualIcons[ICanEditQuestions],
+ Args[ICanEditQuestions],
Hlp_ASSESSMENT_Games_questions,Box_NOT_CLOSABLE);
/***** Show table with questions *****/
@@ -1736,11 +1744,17 @@ static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
HTM_TD_Begin ("class=\"BT %s\"",The_GetColorRows ());
/* Put icon to remove the question */
- if (ICanEditQuestions == Usr_I_CAN)
- Ico_PutContextualIconToRemove (ActReqRemGamQst,NULL,
- Gam_PutParsOneQst,Games);
- else
- Ico_PutIconRemovalNotAllowed ();
+ switch (ICanEditQuestions)
+ {
+ case Usr_I_CAN:
+ Ico_PutContextualIconToRemove (ActReqRemGamQst,NULL,
+ Gam_PutParsOneQst,Games);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconRemovalNotAllowed ();
+ break;
+ }
/* Put icon to move up the question */
if (ICanEditQuestions == Usr_I_CAN && QstInd > 1)
@@ -2154,10 +2168,10 @@ static Usr_ICan_t Gam_CheckIfICanEditGame (const struct Gam_Game *Game)
{
if (Gam_CheckIfICanEditGames () == Usr_I_CAN)
/***** Questions are editable only if game has no matches *****/
- return Game->NumMchs == 0 ? Usr_I_CAN : // Games with matches should not be edited
- Usr_I_CAN_NOT;
- else
- return Usr_I_CAN_NOT; // Questions are not editable
+ if (Game->NumMchs == 0)
+ return Usr_I_CAN;
+
+ return Usr_I_CAN_NOT;
}
/*****************************************************************************/
diff --git a/swad_group.c b/swad_group.c
index 4f7d0a4ca..4adb797a2 100644
--- a/swad_group.c
+++ b/swad_group.c
@@ -349,6 +349,11 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
extern const char *Txt_Update_users;
unsigned NumGrpTyp;
Usr_ICan_t ICanEdit;
+ static void (*FunctionToDrawContextualIcons[Usr_NUM_I_CAN]) (void *Args) =
+ {
+ [Usr_I_CAN_NOT] = NULL,
+ [Usr_I_CAN ] = Grp_PutIconToEditGroups,
+ };
/***** Trivial check: if no groups ==> nothing to do *****/
if (!Gbl.Crs.Grps.NumGrps)
@@ -360,9 +365,7 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Box_BoxBegin (Txt_Groups,
- ICanEdit == Usr_I_CAN ? Grp_PutIconToEditGroups :
- NULL,
- NULL,
+ FunctionToDrawContextualIcons[ICanEdit],NULL,
Hlp_USERS_Groups,Box_CLOSABLE);
/***** Begin form to update the students listed
@@ -630,50 +633,50 @@ void Grp_ChangeMyGrps (Cns_QuietOrVerbose_t QuietOrVerbose)
bool ChangesMade;
/***** Can I change my groups? *****/
- if (Grp_CheckIfICanChangeGrps () == Usr_I_CAN)
+ if (Grp_CheckIfICanChangeGrps () == Usr_I_CAN_NOT)
+ return;
+
+ /***** Get list of groups types and groups in this course *****/
+ Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
+
+ /***** Get the group codes which I want to join to *****/
+ LstGrpsIWant.GrpCods = NULL; // Initialized to avoid bug reported by Coverity
+ LstGrpsIWant.NumGrps = 0; // Initialized to avoid bug reported by Coverity
+ Grp_GetLstCodsGrpWanted (&LstGrpsIWant);
+
+ /***** A student can not be enroled in more than one group
+ if the type of group is of single enrolment *****/
+ // As the form to register in groups of single enrolment...
+ // ...is a radio-based form and not a checkbox-based form...
+ // ...this check is made only to avoid problems...
+ // ...if the student manipulates the form
+ MySelectionIsValid = Grp_CheckIfSelectionGrpsSingleEnrolmentIsValid (Gbl.Usrs.Me.Role.Logged,&LstGrpsIWant);
+
+ /***** Free list of groups types and groups in this course *****/
+ // The lists of group types and groups need to be freed here...
+ // ...in order to get them again when changing my groups atomically
+ Grp_FreeListGrpTypesAndGrps ();
+
+ /***** Change my groups *****/
+ if (MySelectionIsValid)
{
- /***** Get list of groups types and groups in this course *****/
- Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
-
- /***** Get the group codes which I want to join to *****/
- LstGrpsIWant.GrpCods = NULL; // Initialized to avoid bug reported by Coverity
- LstGrpsIWant.NumGrps = 0; // Initialized to avoid bug reported by Coverity
- Grp_GetLstCodsGrpWanted (&LstGrpsIWant);
-
- /***** A student can not be enroled in more than one group
- if the type of group is of single enrolment *****/
- // As the form to register in groups of single enrolment...
- // ...is a radio-based form and not a checkbox-based form...
- // ...this check is made only to avoid problems...
- // ...if the student manipulates the form
- MySelectionIsValid = Grp_CheckIfSelectionGrpsSingleEnrolmentIsValid (Gbl.Usrs.Me.Role.Logged,&LstGrpsIWant);
-
- /***** Free list of groups types and groups in this course *****/
- // The lists of group types and groups need to be freed here...
- // ...in order to get them again when changing my groups atomically
- Grp_FreeListGrpTypesAndGrps ();
-
- /***** Change my groups *****/
- if (MySelectionIsValid)
+ ChangesMade = Grp_ChangeMyGrpsAtomically (&LstGrpsIWant);
+ if (QuietOrVerbose == Cns_VERBOSE)
{
- ChangesMade = Grp_ChangeMyGrpsAtomically (&LstGrpsIWant);
- if (QuietOrVerbose == Cns_VERBOSE)
- {
- if (ChangesMade)
- Ale_CreateAlert (Ale_SUCCESS,NULL,
- Txt_The_requested_group_changes_were_successful);
- else
- Ale_CreateAlert (Ale_WARNING,NULL,
- Txt_There_has_been_no_change_in_groups);
- }
+ if (ChangesMade)
+ Ale_CreateAlert (Ale_SUCCESS,NULL,
+ Txt_The_requested_group_changes_were_successful);
+ else
+ Ale_CreateAlert (Ale_WARNING,NULL,
+ Txt_There_has_been_no_change_in_groups);
}
- else if (QuietOrVerbose == Cns_VERBOSE)
- Ale_CreateAlert (Ale_WARNING,NULL,
- Txt_In_a_type_of_group_with_single_enrolment_students_can_not_be_registered_in_more_than_one_group);
-
- /***** Free memory with the list of groups which I want to belong to *****/
- Grp_FreeListCodGrp (&LstGrpsIWant);
}
+ else if (QuietOrVerbose == Cns_VERBOSE)
+ Ale_CreateAlert (Ale_WARNING,NULL,
+ Txt_In_a_type_of_group_with_single_enrolment_students_can_not_be_registered_in_more_than_one_group);
+
+ /***** Free memory with the list of groups which I want to belong to *****/
+ Grp_FreeListCodGrp (&LstGrpsIWant);
}
/*****************************************************************************/
@@ -689,36 +692,36 @@ void Grp_ChangeOtherUsrGrps (void)
bool SelectionIsValid;
/***** Can I change another user's groups? *****/
- if (Grp_CheckIfICanChangeGrps () == Usr_I_CAN)
- {
- /***** Get list of groups types and groups in current course *****/
- Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
+ if (Grp_CheckIfICanChangeGrps () == Usr_I_CAN_NOT)
+ return;
- /***** Get the list of groups to which register this user *****/
- LstGrpsUsrWants.GrpCods = NULL; // Initialized to avoid bug reported by Coverity
- LstGrpsUsrWants.NumGrps = 0; // Initialized to avoid bug reported by Coverity
- Grp_GetLstCodsGrpWanted (&LstGrpsUsrWants);
+ /***** Get list of groups types and groups in current course *****/
+ Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
- /***** A student can not be enroled in more than one group
- if the type of group is of single enrolment *****/
- SelectionIsValid = Grp_CheckIfSelectionGrpsSingleEnrolmentIsValid (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs,
- &LstGrpsUsrWants);
+ /***** Get the list of groups to which register this user *****/
+ LstGrpsUsrWants.GrpCods = NULL; // Initialized to avoid bug reported by Coverity
+ LstGrpsUsrWants.NumGrps = 0; // Initialized to avoid bug reported by Coverity
+ Grp_GetLstCodsGrpWanted (&LstGrpsUsrWants);
- /***** Free list of groups types and groups in this course *****/
- // The lists of group types and groups need to be freed here...
- // ...in order to get them again when changing groups atomically
- Grp_FreeListGrpTypesAndGrps ();
+ /***** A student can not be enroled in more than one group
+ if the type of group is of single enrolment *****/
+ SelectionIsValid = Grp_CheckIfSelectionGrpsSingleEnrolmentIsValid (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs,
+ &LstGrpsUsrWants);
- /***** Register user in the selected groups *****/
- if (SelectionIsValid)
- Grp_ChangeGrpsOtherUsrAtomically (&LstGrpsUsrWants);
- else
- Ale_CreateAlert (Ale_WARNING,NULL,
- Txt_In_a_type_of_group_with_single_enrolment_students_can_not_be_registered_in_more_than_one_group);
+ /***** Free list of groups types and groups in this course *****/
+ // The lists of group types and groups need to be freed here...
+ // ...in order to get them again when changing groups atomically
+ Grp_FreeListGrpTypesAndGrps ();
- /***** Free memory with the list of groups to/from which register/remove users *****/
- Grp_FreeListCodGrp (&LstGrpsUsrWants);
- }
+ /***** Register user in the selected groups *****/
+ if (SelectionIsValid)
+ Grp_ChangeGrpsOtherUsrAtomically (&LstGrpsUsrWants);
+ else
+ Ale_CreateAlert (Ale_WARNING,NULL,
+ Txt_In_a_type_of_group_with_single_enrolment_students_can_not_be_registered_in_more_than_one_group);
+
+ /***** Free memory with the list of groups to/from which register/remove users *****/
+ Grp_FreeListCodGrp (&LstGrpsUsrWants);
}
/*****************************************************************************/
@@ -1714,6 +1717,11 @@ void Grp_ShowLstGrpsToChgMyGrps (void)
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)) ? Usr_I_CAN :
Usr_I_CAN_NOT;
Usr_ICan_t ICanChangeMyGrps = Usr_I_CAN_NOT;
+ static void (*FunctionToDrawContextualIcons[Usr_NUM_I_CAN]) (void *Args) =
+ {
+ [Usr_I_CAN_NOT] = NULL,
+ [Usr_I_CAN ] = Grp_PutIconToEditGroups,
+ };
if (Gbl.Crs.Grps.NumGrps) // This course has groups
{
@@ -1728,9 +1736,7 @@ void Grp_ShowLstGrpsToChgMyGrps (void)
/***** Begin box *****/
Box_BoxBegin (Txt_My_groups,
- ICanEdit == Usr_I_CAN ? Grp_PutIconToEditGroups :
- NULL,
- NULL,
+ FunctionToDrawContextualIcons[ICanEdit],NULL,
Hlp_USERS_Groups,Box_NOT_CLOSABLE);
if (Gbl.Crs.Grps.NumGrps) // This course has groups
@@ -1852,7 +1858,8 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
if (GrpTyp->MultipleEnrolment) // Enrolment is multiple
{
for (NumGrpThisType = 0, ICanChangeMySelectionForThisGrpTyp = Usr_I_CAN_NOT;
- NumGrpThisType < GrpTyp->NumGrps && ICanChangeMySelectionForThisGrpTyp == Usr_I_CAN_NOT;
+ NumGrpThisType < GrpTyp->NumGrps &&
+ ICanChangeMySelectionForThisGrpTyp == Usr_I_CAN_NOT;
NumGrpThisType++)
{
Grp = &(GrpTyp->LstGrps[NumGrpThisType]);
@@ -1888,7 +1895,8 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
else // I don't belong to a closed group
/* Step 2: Check if I can register in at least one group to which I don't belong */
for (NumGrpThisType = 0, ICanChangeMySelectionForThisGrpTyp = Usr_I_CAN_NOT;
- NumGrpThisType < GrpTyp->NumGrps && ICanChangeMySelectionForThisGrpTyp == Usr_I_CAN_NOT;
+ NumGrpThisType < GrpTyp->NumGrps &&
+ ICanChangeMySelectionForThisGrpTyp == Usr_I_CAN_NOT;
NumGrpThisType++)
{
Grp = &(GrpTyp->LstGrps[NumGrpThisType]);
@@ -1920,23 +1928,27 @@ static Usr_ICan_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
IBelongToThisGroup = Grp_CheckIfGrpIsInList (Grp->GrpCod,&LstGrpsIBelong);
/* Selection disabled? */
- if (ICanChangeMySelectionForThisGrpTyp == Usr_I_CAN) // I can change my selection for this group type
+ switch (ICanChangeMySelectionForThisGrpTyp) // I can change my selection for this group type
{
- ICanChangeMySelectionForThisGrp = Usr_I_CAN;
- if (Gbl.Usrs.Me.Role.Logged == Rol_STD)
- {
- if (Grp->Open) // If group is open
+ case Usr_I_CAN:
+ ICanChangeMySelectionForThisGrp = Usr_I_CAN;
+ if (Gbl.Usrs.Me.Role.Logged == Rol_STD)
{
- if (!IBelongToThisGroup && // I don't belong to group
- Grp->NumUsrs[Rol_STD] >= Grp->MaxStudents) // Group is full
+ if (Grp->Open) // If group is open
+ {
+ if (!IBelongToThisGroup && // I don't belong to group
+ Grp->NumUsrs[Rol_STD] >= Grp->MaxStudents) // Group is full
+ ICanChangeMySelectionForThisGrp = Usr_I_CAN_NOT;
+ }
+ else // If group is closed
ICanChangeMySelectionForThisGrp = Usr_I_CAN_NOT;
}
- else // If group is closed
- ICanChangeMySelectionForThisGrp = Usr_I_CAN_NOT;
- }
- }
- else // I can not change my selection for this group type
- ICanChangeMySelectionForThisGrp = Usr_I_CAN_NOT;
+ break;
+ case Usr_I_CAN_NOT: // I can not change my selection for this group type
+ default:
+ ICanChangeMySelectionForThisGrp = Usr_I_CAN_NOT;
+ break;
+ }
/* Put radio item or checkbox to select the group */
HTM_TR_Begin (NULL);
@@ -2188,22 +2200,26 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
/* Write checkbox to select the group */
ICanSelUnselGroup = (Gbl.Usrs.Me.Role.Logged >= Rol_STD) ? Usr_I_CAN :
Usr_I_CAN_NOT;
- if (ICanSelUnselGroup == Usr_I_CAN)
+ switch (ICanSelUnselGroup)
{
- if (Gbl.Crs.Grps.AllGrps)
- Checked = true;
- else
- for (NumGrpSel = 0, Checked = false;
- NumGrpSel < Gbl.Crs.Grps.LstGrpsSel.NumGrps;
- NumGrpSel++)
- if (Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrpSel] == -(GrpTyp->GrpTypCod))
- {
- Checked = true;
- break;
- }
+ case Usr_I_CAN:
+ if (Gbl.Crs.Grps.AllGrps)
+ Checked = true;
+ else
+ for (NumGrpSel = 0, Checked = false;
+ NumGrpSel < Gbl.Crs.Grps.LstGrpsSel.NumGrps;
+ NumGrpSel++)
+ if (Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrpSel] == -(GrpTyp->GrpTypCod))
+ {
+ Checked = true;
+ break;
+ }
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Checked = false;
+ break;
}
- else
- Checked = false;
HTM_TR_Begin (NULL);
diff --git a/swad_info.c b/swad_info.c
index 923e31d87..c98a4be90 100644
--- a/swad_info.c
+++ b/swad_info.c
@@ -127,23 +127,6 @@ static Act_Action_t Inf_ActionsInfo[Inf_NUM_SOURCES][Inf_NUM_TYPES] =
[Inf_URL ][Inf_ASSESSMENT ] = ActRcvURLAss,
};
-/***** Help *****/
-extern const char *Hlp_COURSE_Information_textual_information;
-extern const char *Hlp_COURSE_Guide;
-extern const char *Hlp_COURSE_Syllabus;
-extern const char *Hlp_COURSE_Bibliography;
-extern const char *Hlp_COURSE_FAQ;
-extern const char *Hlp_COURSE_Links;
-extern const char *Hlp_COURSE_Assessment;
-
-extern const char *Hlp_COURSE_Information_edit;
-extern const char *Hlp_COURSE_Guide_edit;
-extern const char *Hlp_COURSE_Syllabus_edit;
-extern const char *Hlp_COURSE_Bibliography_edit;
-extern const char *Hlp_COURSE_FAQ_edit;
-extern const char *Hlp_COURSE_Links_edit;
-extern const char *Hlp_COURSE_Assessment_edit;
-
/*****************************************************************************/
/**************************** Private prototypes *****************************/
/*****************************************************************************/
@@ -181,6 +164,13 @@ static bool Inf_CheckAndShowRichTxt (void);
void Inf_ShowInfo (void)
{
+ extern const char *Hlp_COURSE_Information_textual_information;
+ extern const char *Hlp_COURSE_Guide;
+ extern const char *Hlp_COURSE_Syllabus;
+ extern const char *Hlp_COURSE_Bibliography;
+ extern const char *Hlp_COURSE_FAQ;
+ extern const char *Hlp_COURSE_Links;
+ extern const char *Hlp_COURSE_Assessment;
extern const char *Txt_INFO_TITLE[Inf_NUM_TYPES];
extern const char *Txt_No_information;
struct Syl_Syllabus Syllabus;
@@ -190,16 +180,26 @@ void Inf_ShowInfo (void)
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_I_CAN :
Usr_I_CAN_NOT;
bool ShowWarningNoInfo = false;
- const char *Help[Inf_NUM_TYPES] =
+ static void (*FunctionToDrawContextualIcons[Usr_NUM_I_CAN]) (void *Args) =
{
- [Inf_INFORMATION ] = Hlp_COURSE_Information_textual_information,
- [Inf_TEACHING_GUIDE] = Hlp_COURSE_Guide,
- [Inf_LECTURES ] = Hlp_COURSE_Syllabus,
- [Inf_PRACTICALS ] = Hlp_COURSE_Syllabus,
- [Inf_BIBLIOGRAPHY ] = Hlp_COURSE_Bibliography,
- [Inf_FAQ ] = Hlp_COURSE_FAQ,
- [Inf_LINKS ] = Hlp_COURSE_Links,
- [Inf_ASSESSMENT ] = Hlp_COURSE_Assessment,
+ [Usr_I_CAN_NOT] = NULL,
+ [Usr_I_CAN ] = Inf_PutIconToEditInfo,
+ };
+ static void *Args[Usr_NUM_I_CAN] =
+ {
+ [Usr_I_CAN_NOT] = NULL,
+ [Usr_I_CAN ] = &Gbl.Crs.Info.Type,
+ };
+ static const char **Help[Inf_NUM_TYPES] =
+ {
+ [Inf_INFORMATION ] = &Hlp_COURSE_Information_textual_information,
+ [Inf_TEACHING_GUIDE] = &Hlp_COURSE_Guide,
+ [Inf_LECTURES ] = &Hlp_COURSE_Syllabus,
+ [Inf_PRACTICALS ] = &Hlp_COURSE_Syllabus,
+ [Inf_BIBLIOGRAPHY ] = &Hlp_COURSE_Bibliography,
+ [Inf_FAQ ] = &Hlp_COURSE_FAQ,
+ [Inf_LINKS ] = &Hlp_COURSE_Links,
+ [Inf_ASSESSMENT ] = &Hlp_COURSE_Assessment,
};
/***** Reset syllabus context *****/
@@ -245,11 +245,8 @@ void Inf_ShowInfo (void)
/***** Begin box *****/
Box_BoxBegin (Txt_INFO_TITLE[Gbl.Crs.Info.Type],
- (ICanEdit == Usr_I_CAN) ? Inf_PutIconToEditInfo :
- NULL,
- (ICanEdit == Usr_I_CAN) ? &Gbl.Crs.Info.Type :
- NULL,
- Help[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE);
+ FunctionToDrawContextualIcons[ICanEdit],Args[ICanEdit],
+ *Help[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE);
/****** Form to select syllabus *****/
Syl_PutFormWhichSyllabus (Syllabus.WhichSyllabus);
@@ -809,6 +806,13 @@ void Inf_SetInfoSrc (void)
void Inf_FormsToSelSendInfo (void)
{
+ extern const char *Hlp_COURSE_Information_edit;
+ extern const char *Hlp_COURSE_Guide_edit;
+ extern const char *Hlp_COURSE_Syllabus_edit;
+ extern const char *Hlp_COURSE_Bibliography_edit;
+ extern const char *Hlp_COURSE_FAQ_edit;
+ extern const char *Hlp_COURSE_Links_edit;
+ extern const char *Hlp_COURSE_Assessment_edit;
extern const char *Txt_Source_of_information;
extern const char *Txt_INFO_SRC_FULL_TEXT[Inf_NUM_SOURCES];
extern const char *Txt_INFO_SRC_HELP[Inf_NUM_SOURCES];
@@ -837,16 +841,16 @@ void Inf_FormsToSelSendInfo (void)
[Inf_PAGE ] = Inf_FormToSendPage,
[Inf_URL ] = Inf_FormToSendURL,
};
- const char *HelpEdit[Inf_NUM_TYPES] =
+ static const char **HelpEdit[Inf_NUM_TYPES] =
{
- [Inf_INFORMATION ] = Hlp_COURSE_Information_edit,
- [Inf_TEACHING_GUIDE] = Hlp_COURSE_Guide_edit,
- [Inf_LECTURES ] = Hlp_COURSE_Syllabus_edit,
- [Inf_PRACTICALS ] = Hlp_COURSE_Syllabus_edit,
- [Inf_BIBLIOGRAPHY ] = Hlp_COURSE_Bibliography_edit,
- [Inf_FAQ ] = Hlp_COURSE_FAQ_edit,
- [Inf_LINKS ] = Hlp_COURSE_Links_edit,
- [Inf_ASSESSMENT ] = Hlp_COURSE_Assessment_edit,
+ [Inf_INFORMATION ] = &Hlp_COURSE_Information_edit,
+ [Inf_TEACHING_GUIDE] = &Hlp_COURSE_Guide_edit,
+ [Inf_LECTURES ] = &Hlp_COURSE_Syllabus_edit,
+ [Inf_PRACTICALS ] = &Hlp_COURSE_Syllabus_edit,
+ [Inf_BIBLIOGRAPHY ] = &Hlp_COURSE_Bibliography_edit,
+ [Inf_FAQ ] = &Hlp_COURSE_FAQ_edit,
+ [Inf_LINKS ] = &Hlp_COURSE_Links_edit,
+ [Inf_ASSESSMENT ] = &Hlp_COURSE_Assessment_edit,
};
/***** Reset syllabus context *****/
@@ -880,7 +884,7 @@ void Inf_FormsToSelSendInfo (void)
/* Begin box and table */
Box_BoxTableBegin (Txt_Source_of_information,
Inf_PutIconToViewInfo,&Gbl.Crs.Info.Type,
- HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE,4);
+ *HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE,4);
/* Options */
for (InfoSrc = (Inf_Src_t) 0;
@@ -1493,6 +1497,13 @@ static bool Inf_CheckAndShowRichTxt (void)
void Inf_EditPlainTxtInfo (void)
{
+ extern const char *Hlp_COURSE_Information_edit;
+ extern const char *Hlp_COURSE_Guide_edit;
+ extern const char *Hlp_COURSE_Syllabus_edit;
+ extern const char *Hlp_COURSE_Bibliography_edit;
+ extern const char *Hlp_COURSE_FAQ_edit;
+ extern const char *Hlp_COURSE_Links_edit;
+ extern const char *Hlp_COURSE_Assessment_edit;
extern Syl_WhichSyllabus_t Syl_WhichSyllabus[Syl_NUM_WHICH_SYLLABUS];
extern const char *Txt_INFO_TITLE[Inf_NUM_TYPES];
extern const char *Txt_Save_changes;
@@ -1509,16 +1520,16 @@ void Inf_EditPlainTxtInfo (void)
[Inf_LINKS ] = {ActRcvPlaTxtCrsLnk,NULL,NULL},
[Inf_ASSESSMENT ] = {ActRcvPlaTxtAss ,NULL,NULL},
};
- const char *HelpEdit[Inf_NUM_TYPES] =
+ static const char **HelpEdit[Inf_NUM_TYPES] =
{
- [Inf_INFORMATION ] = Hlp_COURSE_Information_edit,
- [Inf_TEACHING_GUIDE] = Hlp_COURSE_Guide_edit,
- [Inf_LECTURES ] = Hlp_COURSE_Syllabus_edit,
- [Inf_PRACTICALS ] = Hlp_COURSE_Syllabus_edit,
- [Inf_BIBLIOGRAPHY ] = Hlp_COURSE_Bibliography_edit,
- [Inf_FAQ ] = Hlp_COURSE_FAQ_edit,
- [Inf_LINKS ] = Hlp_COURSE_Links_edit,
- [Inf_ASSESSMENT ] = Hlp_COURSE_Assessment_edit,
+ [Inf_INFORMATION ] = &Hlp_COURSE_Information_edit,
+ [Inf_TEACHING_GUIDE] = &Hlp_COURSE_Guide_edit,
+ [Inf_LECTURES ] = &Hlp_COURSE_Syllabus_edit,
+ [Inf_PRACTICALS ] = &Hlp_COURSE_Syllabus_edit,
+ [Inf_BIBLIOGRAPHY ] = &Hlp_COURSE_Bibliography_edit,
+ [Inf_FAQ ] = &Hlp_COURSE_FAQ_edit,
+ [Inf_LINKS ] = &Hlp_COURSE_Links_edit,
+ [Inf_ASSESSMENT ] = &Hlp_COURSE_Assessment_edit,
};
/***** Reset syllabus context *****/
@@ -1532,7 +1543,7 @@ void Inf_EditPlainTxtInfo (void)
if (Inf_Actions[Gbl.Crs.Info.Type].FuncPars)
Inf_Actions[Gbl.Crs.Info.Type].FuncPars (Inf_Actions[Gbl.Crs.Info.Type].Args);
Box_BoxBegin (Txt_INFO_TITLE[Gbl.Crs.Info.Type],NULL,NULL,
- HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE);
+ *HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE);
switch (Gbl.Crs.Info.Type)
{
@@ -1569,6 +1580,13 @@ void Inf_EditPlainTxtInfo (void)
void Inf_EditRichTxtInfo (void)
{
+ extern const char *Hlp_COURSE_Information_edit;
+ extern const char *Hlp_COURSE_Guide_edit;
+ extern const char *Hlp_COURSE_Syllabus_edit;
+ extern const char *Hlp_COURSE_Bibliography_edit;
+ extern const char *Hlp_COURSE_FAQ_edit;
+ extern const char *Hlp_COURSE_Links_edit;
+ extern const char *Hlp_COURSE_Assessment_edit;
extern Syl_WhichSyllabus_t Syl_WhichSyllabus[Syl_NUM_WHICH_SYLLABUS];
extern const char *Txt_INFO_TITLE[Inf_NUM_TYPES];
extern const char *Txt_Save_changes;
@@ -1585,16 +1603,16 @@ void Inf_EditRichTxtInfo (void)
[Inf_LINKS ] = {ActRcvRchTxtCrsLnk,NULL,NULL},
[Inf_ASSESSMENT ] = {ActRcvRchTxtAss ,NULL,NULL},
};
- const char *HelpEdit[Inf_NUM_TYPES] =
+ static const char **HelpEdit[Inf_NUM_TYPES] =
{
- [Inf_INFORMATION ] = Hlp_COURSE_Information_edit,
- [Inf_TEACHING_GUIDE] = Hlp_COURSE_Guide_edit,
- [Inf_LECTURES ] = Hlp_COURSE_Syllabus_edit,
- [Inf_PRACTICALS ] = Hlp_COURSE_Syllabus_edit,
- [Inf_BIBLIOGRAPHY ] = Hlp_COURSE_Bibliography_edit,
- [Inf_FAQ ] = Hlp_COURSE_FAQ_edit,
- [Inf_LINKS ] = Hlp_COURSE_Links_edit,
- [Inf_ASSESSMENT ] = Hlp_COURSE_Assessment_edit,
+ [Inf_INFORMATION ] = &Hlp_COURSE_Information_edit,
+ [Inf_TEACHING_GUIDE] = &Hlp_COURSE_Guide_edit,
+ [Inf_LECTURES ] = &Hlp_COURSE_Syllabus_edit,
+ [Inf_PRACTICALS ] = &Hlp_COURSE_Syllabus_edit,
+ [Inf_BIBLIOGRAPHY ] = &Hlp_COURSE_Bibliography_edit,
+ [Inf_FAQ ] = &Hlp_COURSE_FAQ_edit,
+ [Inf_LINKS ] = &Hlp_COURSE_Links_edit,
+ [Inf_ASSESSMENT ] = &Hlp_COURSE_Assessment_edit,
};
/***** Reset syllabus context *****/
@@ -1608,7 +1626,7 @@ void Inf_EditRichTxtInfo (void)
if (Inf_Actions[Gbl.Crs.Info.Type].FuncPars)
Inf_Actions[Gbl.Crs.Info.Type].FuncPars (Inf_Actions[Gbl.Crs.Info.Type].Args);
Box_BoxBegin (Txt_INFO_TITLE[Gbl.Crs.Info.Type],NULL,NULL,
- HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE);
+ *HelpEdit[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE);
switch (Gbl.Crs.Info.Type)
{
diff --git a/swad_institution.c b/swad_institution.c
index b612df22e..d83997872 100644
--- a/swad_institution.c
+++ b/swad_institution.c
@@ -950,28 +950,30 @@ static void Ins_ListInstitutionsForEdition (void)
/* Institution WWW */
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
- if (ICanEdit == Usr_I_CAN)
+ switch (ICanEdit)
{
- Frm_BeginForm (ActChgInsWWW);
- ParCod_PutPar (ParCod_OthHie,Ins->HieCod);
- HTM_INPUT_URL ("WWW",Ins->WWW,HTM_SUBMIT_ON_CHANGE,
- "class=\"INPUT_WWW INPUT_%s\""
- " required=\"required\"",
- The_GetSuffix ());
- Frm_EndForm ();
- }
- else
- {
- Str_Copy (WWW,Ins->WWW,sizeof (WWW) - 1);
- HTM_DIV_Begin ("class=\"EXTERNAL_WWW_SHRT\"");
- HTM_A_Begin ("href=\"%s\" target=\"_blank\" title=\"%s\""
- " class=\"DAT_%s\"",
- Ins->WWW,
- The_GetSuffix (),
- Ins->WWW);
- HTM_Txt (WWW);
- HTM_A_End ();
- HTM_DIV_End ();
+ case Usr_I_CAN:
+ Frm_BeginForm (ActChgInsWWW);
+ ParCod_PutPar (ParCod_OthHie,Ins->HieCod);
+ HTM_INPUT_URL ("WWW",Ins->WWW,HTM_SUBMIT_ON_CHANGE,
+ "class=\"INPUT_WWW INPUT_%s\""
+ " required=\"required\"",
+ The_GetSuffix ());
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Str_Copy (WWW,Ins->WWW,sizeof (WWW) - 1);
+ HTM_DIV_Begin ("class=\"EXTERNAL_WWW_SHRT\"");
+ HTM_A_Begin ("href=\"%s\" target=\"_blank\" title=\"%s\""
+ " class=\"DAT_%s\"",
+ Ins->WWW,
+ The_GetSuffix (),
+ Ins->WWW);
+ HTM_Txt (WWW);
+ HTM_A_End ();
+ HTM_DIV_End ();
+ break;
}
HTM_TD_End ();
diff --git a/swad_mail.c b/swad_mail.c
index 9c94d934b..3a864c8dd 100644
--- a/swad_mail.c
+++ b/swad_mail.c
@@ -1296,18 +1296,20 @@ void Mai_RemoveOtherUsrEmail (void)
{
/***** Get other user's code from form and get user's data *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
+ switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
- /***** Remove user's email *****/
- Mai_RemoveEmail (&Gbl.Usrs.Other.UsrDat);
+ case Usr_I_CAN:
+ /***** Remove user's email *****/
+ Mai_RemoveEmail (&Gbl.Usrs.Other.UsrDat);
- /***** Show form again *****/
- Acc_ShowFormChgOtherUsrAccount ();
+ /***** Show form again *****/
+ Acc_ShowFormChgOtherUsrAccount ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
else // User not found
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
@@ -1321,24 +1323,28 @@ static void Mai_RemoveEmail (struct Usr_Data *UsrDat)
extern const char *Txt_Email_X_removed;
char Email[Cns_MAX_BYTES_EMAIL_ADDRESS + 1];
- if (Usr_CheckIfICanEditOtherUsr (UsrDat) == Usr_I_CAN)
+ switch (Usr_CheckIfICanEditOtherUsr (UsrDat))
{
- /***** Get new email from form *****/
- Par_GetParText ("Email",Email,Cns_MAX_BYTES_EMAIL_ADDRESS);
+ case Usr_I_CAN:
+ /***** Get new email from form *****/
+ Par_GetParText ("Email",Email,Cns_MAX_BYTES_EMAIL_ADDRESS);
- /***** Remove one of user's old email addresses *****/
- Mai_DB_RemoveEmail (UsrDat->UsrCod,Email);
+ /***** Remove one of user's old email addresses *****/
+ Mai_DB_RemoveEmail (UsrDat->UsrCod,Email);
- /***** Create alert *****/
- Ale_CreateAlert (Ale_SUCCESS,Mai_EMAIL_SECTION_ID,
- Txt_Email_X_removed,
- Email);
+ /***** Create alert *****/
+ Ale_CreateAlert (Ale_SUCCESS,Mai_EMAIL_SECTION_ID,
+ Txt_Email_X_removed,
+ Email);
- /***** Update list of emails *****/
- Mai_GetEmailFromUsrCod (UsrDat);
+ /***** Update list of emails *****/
+ Mai_GetEmailFromUsrCod (UsrDat);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
/*****************************************************************************/
@@ -1362,19 +1368,21 @@ void Mai_ChangeOtherUsrEmail (void)
{
/***** Get other user's code from form and get user's data *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
+ switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
- /***** Change user's ID *****/
- Mai_ChangeUsrEmail (&Gbl.Usrs.Other.UsrDat,
- Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod));
+ case Usr_I_CAN:
+ /***** Change user's ID *****/
+ Mai_ChangeUsrEmail (&Gbl.Usrs.Other.UsrDat,
+ Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod));
- /***** Show form again *****/
- Acc_ShowFormChgOtherUsrAccount ();
+ /***** Show form again *****/
+ Acc_ShowFormChgOtherUsrAccount ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
else // User not found
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
@@ -1391,49 +1399,53 @@ static void Mai_ChangeUsrEmail (struct Usr_Data *UsrDat,Usr_MeOrOther_t MeOrOthe
extern const char *Txt_The_email_address_entered_X_is_not_valid;
char NewEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1];
- if (Usr_CheckIfICanEditOtherUsr (UsrDat) == Usr_I_CAN)
+ switch (Usr_CheckIfICanEditOtherUsr (UsrDat))
{
- /***** Get new email from form *****/
- Par_GetParText ("NewEmail",NewEmail,Cns_MAX_BYTES_EMAIL_ADDRESS);
+ case Usr_I_CAN:
+ /***** Get new email from form *****/
+ Par_GetParText ("NewEmail",NewEmail,Cns_MAX_BYTES_EMAIL_ADDRESS);
- if (Mai_CheckIfEmailIsValid (NewEmail)) // New email is valid
- {
- /***** Check if new email exists in database *****/
- if (UsrDat->EmailConfirmed &&
- !strcmp (UsrDat->Email,NewEmail)) // User's current confirmed email match exactly the new email
- Ale_CreateAlert (Ale_WARNING,Mai_EMAIL_SECTION_ID,
- Txt_The_email_address_X_matches_one_previously_registered,
- NewEmail);
- else
+ if (Mai_CheckIfEmailIsValid (NewEmail)) // New email is valid
{
- if (Mai_UpdateEmailInDB (UsrDat,NewEmail))
- {
- /***** Email updated sucessfully *****/
- Ale_CreateAlert (Ale_SUCCESS,Mai_EMAIL_SECTION_ID,
- Txt_The_email_address_X_has_been_registered_successfully,
- NewEmail);
-
- /***** Update list of emails *****/
- Mai_GetEmailFromUsrCod (UsrDat);
-
- /***** Send message via email
- to confirm the new email address *****/
- if (MeOrOther == Usr_ME)
- Mai_SendMailMsgToConfirmEmail ();
- }
- else
+ /***** Check if new email exists in database *****/
+ if (UsrDat->EmailConfirmed &&
+ !strcmp (UsrDat->Email,NewEmail)) // User's current confirmed email match exactly the new email
Ale_CreateAlert (Ale_WARNING,Mai_EMAIL_SECTION_ID,
- Txt_The_email_address_X_had_been_registered_by_another_user,
+ Txt_The_email_address_X_matches_one_previously_registered,
NewEmail);
+ else
+ {
+ if (Mai_UpdateEmailInDB (UsrDat,NewEmail))
+ {
+ /***** Email updated sucessfully *****/
+ Ale_CreateAlert (Ale_SUCCESS,Mai_EMAIL_SECTION_ID,
+ Txt_The_email_address_X_has_been_registered_successfully,
+ NewEmail);
+
+ /***** Update list of emails *****/
+ Mai_GetEmailFromUsrCod (UsrDat);
+
+ /***** Send message via email
+ to confirm the new email address *****/
+ if (MeOrOther == Usr_ME)
+ Mai_SendMailMsgToConfirmEmail ();
+ }
+ else
+ Ale_CreateAlert (Ale_WARNING,Mai_EMAIL_SECTION_ID,
+ Txt_The_email_address_X_had_been_registered_by_another_user,
+ NewEmail);
+ }
}
- }
- else // New email is not valid
- Ale_CreateAlert (Ale_WARNING,Mai_EMAIL_SECTION_ID,
- Txt_The_email_address_entered_X_is_not_valid,
- NewEmail);
+ else // New email is not valid
+ Ale_CreateAlert (Ale_WARNING,Mai_EMAIL_SECTION_ID,
+ Txt_The_email_address_entered_X_is_not_valid,
+ NewEmail);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission ();
}
/*****************************************************************************/
diff --git a/swad_match.c b/swad_match.c
index 7f44e71d4..e807c9cde 100644
--- a/swad_match.c
+++ b/swad_match.c
@@ -551,18 +551,22 @@ static void Mch_ListOneOrMoreMatchesIcons (struct Gam_Games *Games,
{
HTM_TD_Begin ("rowspan=\"2\" class=\"BT %s\"",The_GetColorRows ());
- if (Mch_CheckIfICanEditThisMatch (Match) == Usr_I_CAN)
+ switch (Mch_CheckIfICanEditThisMatch (Match))
{
- Games->MchCod = Match->MchCod;
+ case Usr_I_CAN:
+ Games->MchCod = Match->MchCod;
- /***** Put icon to remove the match *****/
- Ico_PutContextualIconToRemove (ActReqRemMch,NULL,Mch_PutParsEdit,Games);
+ /***** Put icon to remove the match *****/
+ Ico_PutContextualIconToRemove (ActReqRemMch,NULL,Mch_PutParsEdit,Games);
- /***** Put icon to edit the match *****/
- Ico_PutContextualIconToEdit (ActReqChgMch,Anchor,Mch_PutParsEdit,Games);
+ /***** Put icon to edit the match *****/
+ Ico_PutContextualIconToEdit (ActReqChgMch,Anchor,Mch_PutParsEdit,Games);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconRemovalNotAllowed ();
+ break;
}
- else
- Ico_PutIconRemovalNotAllowed ();
HTM_TD_End ();
}
@@ -835,25 +839,27 @@ static void Mch_ListOneOrMoreMatchesResultTch (struct Gam_Games *Games,
"trophy.svg",Ico_BLACK);
/***** Check if visibility of session results can be changed *****/
- if (Mch_CheckIfICanChangeVisibilityOfResults (Match) == Usr_I_CAN)
+ switch (Mch_CheckIfICanChangeVisibilityOfResults (Match))
{
- /* I can edit visibility */
- if (Match->Status.ShowUsrResults)
- Lay_PutContextualLinkOnlyIcon (ActChgVisResMchUsr,NULL,
- Mch_PutParsEdit,Games,
- "eye.svg",Ico_GREEN);
- else
- Lay_PutContextualLinkOnlyIcon (ActChgVisResMchUsr,NULL,
- Mch_PutParsEdit,Games,
- "eye-slash.svg",Ico_RED);
- }
- else
- {
- /* I can not edit visibility */
- if (Match->Status.ShowUsrResults)
- Ico_PutIconOff ("eye.svg" ,Ico_GREEN,Txt_Visible_results);
- else
- Ico_PutIconOff ("eye-slash.svg",Ico_RED ,Txt_Hidden_results );
+ case Usr_I_CAN:
+ /* I can edit visibility */
+ if (Match->Status.ShowUsrResults)
+ Lay_PutContextualLinkOnlyIcon (ActChgVisResMchUsr,NULL,
+ Mch_PutParsEdit,Games,
+ "eye.svg",Ico_GREEN);
+ else
+ Lay_PutContextualLinkOnlyIcon (ActChgVisResMchUsr,NULL,
+ Mch_PutParsEdit,Games,
+ "eye-slash.svg",Ico_RED);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ /* I can not edit visibility */
+ if (Match->Status.ShowUsrResults)
+ Ico_PutIconOff ("eye.svg" ,Ico_GREEN,Txt_Visible_results);
+ else
+ Ico_PutIconOff ("eye-slash.svg",Ico_RED ,Txt_Hidden_results );
+ break;
}
}
diff --git a/swad_match_result.c b/swad_match_result.c
index 940d0cd5d..f9a18700e 100644
--- a/swad_match_result.c
+++ b/swad_match_result.c
@@ -761,8 +761,7 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
(unsigned) StartEndTime,UniqueId) < 0)
Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LT DAT_%s %s\"",
- Id,The_GetSuffix (),
- The_GetColorRows ());
+ Id,The_GetSuffix (),The_GetColorRows ());
Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime],
Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,false,0x7);
@@ -772,8 +771,7 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
/* Write match title */
HTM_TD_Begin ("class=\"LT DAT_%s %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
+ The_GetSuffix (),The_GetColorRows ());
HTM_Txt (Match.Title);
HTM_TD_End ();
@@ -787,110 +785,137 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
/* Write number of questions */
HTM_TD_Begin ("class=\"RT DAT_%s LINE_LEFT %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
- HTM_Unsigned (Print.NumQsts.All);
- else
- Ico_PutIconNotVisible ();
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
+ {
+ case Usr_I_CAN:
+ HTM_Unsigned (Print.NumQsts.All);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
+ }
HTM_TD_End ();
/* Write number of non-blank answers */
HTM_TD_Begin ("class=\"RT DAT_%s LINE_LEFT %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- if (Print.NumQsts.NotBlank)
- HTM_Unsigned (Print.NumQsts.NotBlank);
- else
- HTM_Light0 ();
+ case Usr_I_CAN:
+ if (Print.NumQsts.NotBlank)
+ HTM_Unsigned (Print.NumQsts.NotBlank);
+ else
+ HTM_Light0 ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Write number of blank answers */
HTM_TD_Begin ("class=\"RT DAT_%s %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
+ The_GetSuffix (),The_GetColorRows ());
NumQstsBlank = Print.NumQsts.All - Print.NumQsts.NotBlank;
- if (ICanView.Score == Usr_I_CAN)
+ switch (ICanView.Score)
{
- if (NumQstsBlank)
- HTM_Unsigned (NumQstsBlank);
- else
- HTM_Light0 ();
+ case Usr_I_CAN:
+ if (NumQstsBlank)
+ HTM_Unsigned (NumQstsBlank);
+ else
+ HTM_Light0 ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Write score */
HTM_TD_Begin ("class=\"RT DAT_%s LINE_LEFT %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- HTM_Double2Decimals (Print.Score);
- HTM_Txt ("/");
- HTM_Unsigned (Print.NumQsts.All);
+ case Usr_I_CAN:
+ HTM_Double2Decimals (Print.Score);
+ HTM_Txt ("/");
+ HTM_Unsigned (Print.NumQsts.All);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Write average score per question */
HTM_TD_Begin ("class=\"RT DAT_%s %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
- HTM_Double2Decimals (Print.NumQsts.All ? Print.Score /
- (double) Print.NumQsts.All :
- 0.0);
- else
- Ico_PutIconNotVisible ();
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
+ {
+ case Usr_I_CAN:
+ HTM_Double2Decimals (Print.NumQsts.All ? Print.Score /
+ (double) Print.NumQsts.All :
+ 0.0);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
+ }
HTM_TD_End ();
/* Write grade over maximum grade */
HTM_TD_Begin ("class=\"RT DAT_%s LINE_LEFT %s\"",
- The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- Grade = TstPrn_ComputeGrade (Print.NumQsts.All,Print.Score,Games->Game.MaxGrade);
- TstPrn_ShowGrade (Grade,Games->Game.MaxGrade);
- TotalGrade += Grade;
+ case Usr_I_CAN:
+ Grade = TstPrn_ComputeGrade (Print.NumQsts.All,Print.Score,
+ Games->Game.MaxGrade);
+ TstPrn_ShowGrade (Grade,Games->Game.MaxGrade);
+ TotalGrade += Grade;
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Link to show this result */
HTM_TD_Begin ("class=\"RT LINE_LEFT %s\"",
The_GetColorRows ());
- if (ICanView.Result == Usr_I_CAN)
+ switch (ICanView.Result)
{
- Games->Game.GamCod = Match.GamCod;
- Games->MchCod = Match.MchCod;
- switch (MeOrOther)
- {
- case Usr_ME:
- Frm_BeginForm (ActSeeOneMchResMe);
- Mch_PutParsEdit (Games);
- Ico_PutIconLink ("tasks.svg",Ico_BLACK,ActSeeOneMchResMe);
- break;
- case Usr_OTHER:
- Frm_BeginForm (ActSeeOneMchResOth);
- Mch_PutParsEdit (Games);
- Usr_PutParOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EnUsrCod);
- Ico_PutIconLink ("tasks.svg",Ico_BLACK,ActSeeOneMchResOth);
- break;
- }
- Frm_EndForm ();
+ case Usr_I_CAN:
+ Games->Game.GamCod = Match.GamCod;
+ Games->MchCod = Match.MchCod;
+ switch (MeOrOther)
+ {
+ case Usr_ME:
+ Frm_BeginForm (ActSeeOneMchResMe);
+ Mch_PutParsEdit (Games);
+ Ico_PutIconLink ("tasks.svg",Ico_BLACK,ActSeeOneMchResMe);
+ break;
+ case Usr_OTHER:
+ Frm_BeginForm (ActSeeOneMchResOth);
+ Mch_PutParsEdit (Games);
+ Usr_PutParOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EnUsrCod);
+ Ico_PutIconLink ("tasks.svg",Ico_BLACK,ActSeeOneMchResOth);
+ break;
+ }
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
HTM_TR_End ();
@@ -1071,7 +1096,6 @@ void MchRes_ShowOneMchResult (void)
UsrDat = &Gbl.Usrs.Me.UsrDat;
break;
case Usr_OTHER:
- default:
UsrDat = &Gbl.Usrs.Other.UsrDat;
Usr_GetParOtherUsrCodEncrypted (UsrDat);
break;
@@ -1201,16 +1225,20 @@ void MchRes_ShowOneMchResult (void)
HTM_TD_Begin ("class=\"LB DAT_%s\"",
The_GetSuffix ());
- if (ICanView.Score == Usr_I_CAN)
+ switch (ICanView.Score)
{
- HTM_STRONG_Begin ();
- HTM_Double2Decimals (Print.Score);
- HTM_Txt ("/");
- HTM_Unsigned (Print.NumQsts.All);
- HTM_STRONG_End ();
+ case Usr_I_CAN:
+ HTM_STRONG_Begin ();
+ HTM_Double2Decimals (Print.Score);
+ HTM_Txt ("/");
+ HTM_Unsigned (Print.NumQsts.All);
+ HTM_STRONG_End ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
HTM_TR_End ();
@@ -1225,14 +1253,19 @@ void MchRes_ShowOneMchResult (void)
HTM_TD_Begin ("class=\"LB DAT_%s\"",
The_GetSuffix ());
- if (ICanView.Score == Usr_I_CAN)
+ switch (ICanView.Score)
{
- HTM_STRONG_Begin ();
- TstPrn_ComputeAndShowGrade (Print.NumQsts.All,Print.Score,Games.Game.MaxGrade);
- HTM_STRONG_End ();
+ case Usr_I_CAN:
+ HTM_STRONG_Begin ();
+ TstPrn_ComputeAndShowGrade (Print.NumQsts.All,Print.Score,
+ Games.Game.MaxGrade);
+ HTM_STRONG_End ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
HTM_TR_End ();
@@ -1287,12 +1320,18 @@ static void MchRes_CheckIfICanViewMatchResult (const struct Gam_Game *Game,
// Whether I belong or not to groups of match is not checked here...
// ...because I should be able to see old matches made in old groups to which I belonged
- if (ICanView->Result == Usr_I_CAN)
- // Depends on 5 visibility icons associated to game
- ICanView->Score = TstVis_IsVisibleTotalScore (Game->Visibility) ? Usr_I_CAN :
- Usr_I_CAN_NOT;
- else
- ICanView->Score = Usr_I_CAN_NOT;
+ switch (ICanView->Result)
+ {
+ case Usr_I_CAN:
+ // Depends on 5 visibility icons associated to game
+ ICanView->Score = TstVis_IsVisibleTotalScore (Game->Visibility) ? Usr_I_CAN :
+ Usr_I_CAN_NOT;
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ ICanView->Score = Usr_I_CAN_NOT;
+ break;
+ }
break;
case Rol_NET:
case Rol_TCH:
diff --git a/swad_nickname.c b/swad_nickname.c
index 514309ec6..c7eadf1c6 100644
--- a/swad_nickname.c
+++ b/swad_nickname.c
@@ -423,27 +423,29 @@ void Nck_RemoveOtherUsrNick (void)
/***** Get user whose nick must be removed *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
+ switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
- /***** Get nickname from form *****/
- Par_GetParText ("Nick",NickWithoutArr,
- Nck_MAX_BYTES_NICK_WITHOUT_ARROBA);
+ case Usr_I_CAN:
+ /***** Get nickname from form *****/
+ Par_GetParText ("Nick",NickWithoutArr,
+ Nck_MAX_BYTES_NICK_WITHOUT_ARROBA);
- /***** Remove one of the old nicknames *****/
- Nck_DB_RemoveNickname (Gbl.Usrs.Other.UsrDat.UsrCod,NickWithoutArr);
+ /***** Remove one of the old nicknames *****/
+ Nck_DB_RemoveNickname (Gbl.Usrs.Other.UsrDat.UsrCod,NickWithoutArr);
- /***** Show message *****/
- Ale_CreateAlert (Ale_SUCCESS,Nck_NICKNAME_SECTION_ID,
- Txt_Nickname_X_removed,
- NickWithoutArr);
+ /***** Show message *****/
+ Ale_CreateAlert (Ale_SUCCESS,Nck_NICKNAME_SECTION_ID,
+ Txt_Nickname_X_removed,
+ NickWithoutArr);
- /***** Show user's account again *****/
- Acc_ShowFormChgOtherUsrAccount ();
+ /***** Show user's account again *****/
+ Acc_ShowFormChgOtherUsrAccount ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
else // User not found
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
@@ -469,18 +471,20 @@ void Nck_ChangeOtherUsrNick (void)
{
/***** Get user whose nick must be changed *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
+ switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
- /***** Update user's nickname *****/
- Nck_ChangeUsrNick (&Gbl.Usrs.Other.UsrDat);
+ case Usr_I_CAN:
+ /***** Update user's nickname *****/
+ Nck_ChangeUsrNick (&Gbl.Usrs.Other.UsrDat);
- /***** Show user's account again *****/
- Acc_ShowFormChgOtherUsrAccount ();
+ /***** Show user's account again *****/
+ Acc_ShowFormChgOtherUsrAccount ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
else // User not found
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
diff --git a/swad_password.c b/swad_password.c
index c3ecd5239..c591b496d 100644
--- a/swad_password.c
+++ b/swad_password.c
@@ -176,13 +176,17 @@ void Pwd_UpdateOtherUsrPwd (void)
{
/***** Get other user's code from form and get user's data *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
- /***** Check and update password *****/
- Pwd_CheckAndUpdateNewPwd (&Gbl.Usrs.Other.UsrDat);
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
+ switch (Usr_CheckIfICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
+ {
+ case Usr_I_CAN:
+ /***** Check and update password *****/
+ Pwd_CheckAndUpdateNewPwd (&Gbl.Usrs.Other.UsrDat);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
+ }
else // User not found
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
}
diff --git a/swad_photo.c b/swad_photo.c
index 071ad6d00..4f8c678e9 100644
--- a/swad_photo.c
+++ b/swad_photo.c
@@ -198,7 +198,6 @@ void Pho_PutIconToChangeUsrPhoto (struct Usr_Data *UsrDat)
"camera.svg",Ico_BLACK);
break;
case Usr_OTHER:
- default:
if (Pho_ICanChangeOtherUsrPhoto (UsrDat) == Usr_I_CAN)
Lay_PutContextualLinkOnlyIcon (NextAction[UsrDat->Roles.InCurrentCrs],NULL,
Rec_PutParUsrCodEncrypted,NULL,
@@ -318,7 +317,6 @@ static void Pho_ReqPhoto (const struct Usr_Data *UsrDat)
Frm_BeginForm (ActDetMyPho);
break;
case Usr_OTHER:
- default:
Frm_BeginForm (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs]);
Usr_PutParUsrCodEncrypted (UsrDat->EnUsrCod);
break;
@@ -368,7 +366,6 @@ void Pho_SendPhotoUsr (void)
Pho_ReqMyPhoto ();
break;
case Usr_OTHER:
- default:
/***** Form to send another user's photo *****/
Pho_ReqOtherUsrPhoto ();
break;
@@ -521,32 +518,34 @@ void Pho_ReqRemUsrPhoto (void)
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,
Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CRS))
- {
- if (Pho_ICanChangeOtherUsrPhoto (&Gbl.Usrs.Other.UsrDat) == Usr_I_CAN)
+ switch (Pho_ICanChangeOtherUsrPhoto (&Gbl.Usrs.Other.UsrDat))
{
- /***** Show current photo and help message *****/
- if (Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL))
- {
- /***** Show question and button to remove user's photo *****/
- /* Begin alert */
- Ale_ShowAlertAndButtonBegin (Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_photo_of_X,
- Gbl.Usrs.Other.UsrDat.FullName);
+ case Usr_I_CAN:
+ /***** Show current photo and help message *****/
+ if (Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL))
+ {
+ /***** Show question and button to remove user's photo *****/
+ /* Begin alert */
+ Ale_ShowAlertAndButtonBegin (Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_photo_of_X,
+ Gbl.Usrs.Other.UsrDat.FullName);
- /* Show current photo */
- Pho_ShowUsrPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL,
- ClassPhoto[Gbl.Prefs.PhotoShape],Pho_NO_ZOOM);
+ /* Show current photo */
+ Pho_ShowUsrPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL,
+ ClassPhoto[Gbl.Prefs.PhotoShape],Pho_NO_ZOOM);
- /* End alert */
- Ale_ShowAlertAndButtonEnd (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs],NULL,NULL,
- Usr_PutParOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EnUsrCod,
- Btn_REMOVE_BUTTON,Txt_Remove);
- }
- else
- Ale_ShowAlert (Ale_INFO,Txt_The_photo_no_longer_exists);
+ /* End alert */
+ Ale_ShowAlertAndButtonEnd (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs],NULL,NULL,
+ Usr_PutParOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EnUsrCod,
+ Btn_REMOVE_BUTTON,Txt_Remove);
+ }
+ else
+ Ale_ShowAlert (Ale_INFO,Txt_The_photo_no_longer_exists);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
else
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
diff --git a/swad_project.c b/swad_project.c
index 46a375063..060ac0b2e 100644
--- a/swad_project.c
+++ b/swad_project.c
@@ -3050,34 +3050,36 @@ static void Prj_ReqRemUsrFromPrj (struct Prj_Projects *Projects,
/***** Get user to be removed *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Prj_CheckIfICanEditProject (&Projects->Prj) == Usr_I_CAN)
+ switch (Prj_CheckIfICanEditProject (&Projects->Prj))
{
- /***** Show question and button to remove user as a role from project *****/
- /* Begin alert */
- Ale_ShowAlertAndButtonBegin (Ale_QUESTION,Question[Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod)],
- Txt_PROJECT_ROLES_SINGUL_abc[RoleInPrj][Gbl.Usrs.Other.UsrDat.Sex],
- Projects->Prj.Title);
+ case Usr_I_CAN:
+ /***** Show question and button to remove user as a role from project *****/
+ /* Begin alert */
+ Ale_ShowAlertAndButtonBegin (Ale_QUESTION,Question[Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod)],
+ Txt_PROJECT_ROLES_SINGUL_abc[RoleInPrj][Gbl.Usrs.Other.UsrDat.Sex],
+ Projects->Prj.Title);
- /* Show user's record */
- Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
+ /* Show user's record */
+ Rec_ShowSharedRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
- /* Show form to request confirmation */
- Frm_BeginForm (ActionRemUsr[RoleInPrj]);
- Prj_PutCurrentPars (Projects);
- if (asprintf (&TxtButton,Txt_Remove_USER_from_this_project,
- Txt_PROJECT_ROLES_SINGUL_abc[RoleInPrj][Gbl.Usrs.Other.UsrDat.Sex]) < 0)
- Err_NotEnoughMemoryExit ();
- Btn_PutRemoveButton (TxtButton);
- free (TxtButton);
- Frm_EndForm ();
+ /* Show form to request confirmation */
+ Frm_BeginForm (ActionRemUsr[RoleInPrj]);
+ Prj_PutCurrentPars (Projects);
+ if (asprintf (&TxtButton,Txt_Remove_USER_from_this_project,
+ Txt_PROJECT_ROLES_SINGUL_abc[RoleInPrj][Gbl.Usrs.Other.UsrDat.Sex]) < 0)
+ Err_NotEnoughMemoryExit ();
+ Btn_PutRemoveButton (TxtButton);
+ free (TxtButton);
+ Frm_EndForm ();
- /* End alert */
- Ale_ShowAlertAndButtonEnd (ActUnk,NULL,NULL,NULL,NULL,Btn_NO_BUTTON,NULL);
+ /* End alert */
+ Ale_ShowAlertAndButtonEnd (ActUnk,NULL,NULL,NULL,NULL,Btn_NO_BUTTON,NULL);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
else
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
@@ -3128,25 +3130,27 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInPrj)
/***** Get user to be removed *****/
if (Usr_GetParOtherUsrCodEncryptedAndGetUsrData ())
- {
- if (Prj_CheckIfICanEditProject (&Projects.Prj) == Usr_I_CAN)
+ switch (Prj_CheckIfICanEditProject (&Projects.Prj))
{
- /***** Remove user from the table of project-users *****/
- Prj_DB_RemoveUsrFromPrj (Projects.Prj.PrjCod,RoleInPrj,Gbl.Usrs.Other.UsrDat.UsrCod);
+ case Usr_I_CAN:
+ /***** Remove user from the table of project-users *****/
+ Prj_DB_RemoveUsrFromPrj (Projects.Prj.PrjCod,RoleInPrj,Gbl.Usrs.Other.UsrDat.UsrCod);
- /***** Flush cache *****/
- if (Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod) == Usr_ME)
- Prj_FlushCacheMyRolesInProject ();
+ /***** Flush cache *****/
+ if (Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod) == Usr_ME)
+ Prj_FlushCacheMyRolesInProject ();
- /***** Show success alert *****/
- Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z,
- Gbl.Usrs.Other.UsrDat.FullName,
- Txt_PROJECT_ROLES_SINGUL_abc[RoleInPrj][Gbl.Usrs.Other.UsrDat.Sex],
- Projects.Prj.Title);
+ /***** Show success alert *****/
+ Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z,
+ Gbl.Usrs.Other.UsrDat.FullName,
+ Txt_PROJECT_ROLES_SINGUL_abc[RoleInPrj][Gbl.Usrs.Other.UsrDat.Sex],
+ Projects.Prj.Title);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
+ break;
}
- else
- Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
- }
else
Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission ();
@@ -3208,17 +3212,21 @@ static void Prj_PutIconsToRemEditOnePrj (struct Prj_Projects *Projects,
Ico_PutContextualIconToPrint (ActPrnOnePrj,Prj_PutCurrentPars,Projects);
/***** Locked/unlocked project edition *****/
- if (PrjCfg_CheckIfICanConfig () == Usr_I_CAN)
+ switch (PrjCfg_CheckIfICanConfig ())
{
- /* Icon to lock/unlock project edition */
- HTM_DIV_Begin ("id=\"prj_lck_%ld\" class=\"PRJ_LOCK\"",
- Projects->Prj.PrjCod);
- Prj_FormLockUnlock (&Projects->Prj);
- HTM_DIV_End ();
+ case Usr_I_CAN:
+ /* Icon to lock/unlock project edition */
+ HTM_DIV_Begin ("id=\"prj_lck_%ld\" class=\"PRJ_LOCK\"",
+ Projects->Prj.PrjCod);
+ Prj_FormLockUnlock (&Projects->Prj);
+ HTM_DIV_End ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ /* Icon to inform about locked/unlocked project edition */
+ Prj_PutIconOffLockedUnlocked (&Projects->Prj);
+ break;
}
- else
- /* Icon to inform about locked/unlocked project edition */
- Prj_PutIconOffLockedUnlocked (&Projects->Prj);
/***** Link to get resource link *****/
if (Rsc_CheckIfICanGetLink () == Usr_I_CAN)
@@ -4680,10 +4688,16 @@ void Prj_ChangeCriterionScore (void)
Err_WrongRubricExit ();
/***** Update review *****/
- if (Prj_CheckIfICanFillRubric (Prj.PrjCod,WhichRubric) == Usr_I_CAN)
- Rub_DB_UpdateScore (Rsc_PROJECT,Prj.PrjCod,-1L,CriCod,Score);
- else
- Err_NoPermission ();
+ switch (Prj_CheckIfICanFillRubric (Prj.PrjCod,WhichRubric))
+ {
+ case Usr_I_CAN:
+ Rub_DB_UpdateScore (Rsc_PROJECT,Prj.PrjCod,-1L,CriCod,Score);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Err_NoPermission ();
+ break;
+ }
/***** Free memory of the project *****/
Prj_FreeMemProject (&Prj);
diff --git a/swad_record.c b/swad_record.c
index a57b9fe93..b0388c13f 100644
--- a/swad_record.c
+++ b/swad_record.c
@@ -1733,29 +1733,31 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
HTM_TD_Begin ("class=\"REC_C2_BOT LT DAT_STRONG_%s %s\"",
The_GetSuffix (),
The_GetColorRows ());
- if (ICanEditThisField == Usr_I_CAN) // Show with form
+ switch (ICanEditThisField)
{
- HTM_TEXTAREA_Begin ("name=\"Field%ld\" rows=\"%u\""
- " class=\"REC_C2_BOT_INPUT INPUT_%s\"",
- Gbl.Crs.Records.LstFields.Lst[NumField].FieldCod,
- Gbl.Crs.Records.LstFields.Lst[NumField].NumLines,
- The_GetSuffix ());
+ case Usr_I_CAN: // Show with form
+ HTM_TEXTAREA_Begin ("name=\"Field%ld\" rows=\"%u\""
+ " class=\"REC_C2_BOT_INPUT INPUT_%s\"",
+ Gbl.Crs.Records.LstFields.Lst[NumField].FieldCod,
+ Gbl.Crs.Records.LstFields.Lst[NumField].NumLines,
+ The_GetSuffix ());
+ if (ThisFieldHasText)
+ HTM_Txt (row[0]);
+ HTM_TEXTAREA_End ();
+ break;
+ case Usr_I_CAN_NOT: // Show without form
+ default:
if (ThisFieldHasText)
- HTM_Txt (row[0]);
- HTM_TEXTAREA_End ();
- }
- else // Show without form
- {
- if (ThisFieldHasText)
- {
- Str_Copy (Text,row[0],sizeof (Text));
- Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
- Text,Cns_MAX_BYTES_TEXT,
- Str_DONT_REMOVE_SPACES);
- HTM_Txt (Text);
- }
- else
- HTM_Hyphen ();
+ {
+ Str_Copy (Text,row[0],sizeof (Text));
+ Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
+ Text,Cns_MAX_BYTES_TEXT,
+ Str_DONT_REMOVE_SPACES);
+ HTM_Txt (Text);
+ }
+ else
+ HTM_Hyphen ();
+ break;
}
HTM_TD_End ();
@@ -1767,17 +1769,21 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
}
/***** End box *****/
- if (ICanEdit == Usr_I_CAN)
+ switch (ICanEdit)
{
- /* End table, send button and end box */
- Box_BoxTableWithButtonEnd (Btn_CONFIRM_BUTTON,Txt_Save_changes);
+ case Usr_I_CAN:
+ /* End table, send button and end box */
+ Box_BoxTableWithButtonEnd (Btn_CONFIRM_BUTTON,Txt_Save_changes);
- /* End form */
- Frm_EndForm ();
+ /* End form */
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ /* End table and box */
+ Box_BoxTableEnd ();
+ break;
}
- else
- /* End table and box */
- Box_BoxTableEnd ();
}
/*****************************************************************************/
@@ -2254,7 +2260,6 @@ void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
Grp_ShowLstGrpsToChgMyGrps ();
break;
case Usr_OTHER:
- default:
Grp_ShowLstGrpsToChgOtherUsrsGrps (UsrDat->UsrCod);
break;
}
@@ -2679,20 +2684,21 @@ static void Rec_ShowEmail (struct Usr_Data *UsrDat)
Frm_LabelColumn ("REC_C1_BOT RM",NULL,Txt_Email);
/* Data */
- HTM_TD_Begin ("class=\"REC_C2_BOT LM DAT_STRONG_%s\"",
- The_GetSuffix ());
+ HTM_TD_Begin ("class=\"REC_C2_BOT LM DAT_STRONG_%s\"",The_GetSuffix ());
if (UsrDat->Email[0])
- {
- if (Mai_ICanSeeOtherUsrEmail (UsrDat) == Usr_I_CAN)
+ switch (Mai_ICanSeeOtherUsrEmail (UsrDat))
{
- HTM_A_Begin ("href=\"mailto:%s\" class=\"DAT_STRONG_%s\"",
- UsrDat->Email,The_GetSuffix ());
- HTM_Txt (UsrDat->Email);
- HTM_A_End ();
+ case Usr_I_CAN:
+ HTM_A_Begin ("href=\"mailto:%s\" class=\"DAT_STRONG_%s\"",
+ UsrDat->Email,The_GetSuffix ());
+ HTM_Txt (UsrDat->Email);
+ HTM_A_End ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ HTM_Txt ("********");
+ break;
}
- else
- HTM_Txt ("********");
- }
HTM_TD_End ();
HTM_TR_End ();
diff --git a/swad_rubric.c b/swad_rubric.c
index a41c6f9eb..fe07ddd9b 100644
--- a/swad_rubric.c
+++ b/swad_rubric.c
@@ -246,6 +246,7 @@ Usr_ICan_t Rub_CheckIfICanEditRubrics (void)
bool Rub_CheckIfEditable (void)
{
if (Rub_CheckIfICanEditRubrics () == Usr_I_CAN)
+ {
/***** Rubric is editable only if ... *****/
// TODO: Change to control that a rubric is not edited in some circunstances?
/*
@@ -253,8 +254,9 @@ bool Rub_CheckIfEditable (void)
Rubric->NumCriteria != 0;
*/
return true;
- else
- return false; // Questions are not editable
+ }
+
+ return false; // Questions are not editable
}
/*****************************************************************************/
diff --git a/swad_test_print.c b/swad_test_print.c
index 4ed04ca4d..d89e5e67f 100644
--- a/swad_test_print.c
+++ b/swad_test_print.c
@@ -60,8 +60,8 @@
struct TstRes_ICanView
{
- bool Result;
- bool Score;
+ Usr_ICan_t Result;
+ Usr_ICan_t Score;
};
/*****************************************************************************/
@@ -680,8 +680,7 @@ static void TstPrn_WriteQstAndAnsExam (struct Usr_Data *UsrDat,
/* Write score retrieved from database */
if (ICanView[TstVis_VISIBLE_EACH_QST_SCORE] == Usr_I_CAN)
{
- HTM_DIV_Begin ("class=\"LM DAT_SMALL_%s\"",
- The_GetSuffix ());
+ HTM_DIV_Begin ("class=\"LM DAT_SMALL_%s\"",The_GetSuffix ());
HTM_TxtColonNBSP (Txt_Score);
HTM_SPAN_Begin ("class=\"%s_%s\"",
PrintedQuestions[QstInd].StrAnswers[0] ?
@@ -1239,8 +1238,7 @@ static void TstPrn_WriteIntAnsPrint (struct Usr_Data *UsrDat,
}
else
{
- HTM_TD_Begin ("class=\"CM Qst_ANS_0_%s\"",
- The_GetSuffix ());
+ HTM_TD_Begin ("class=\"CM Qst_ANS_0_%s\"",The_GetSuffix ());
HTM_Txt ("?");
HTM_TD_End ();
}
@@ -1250,10 +1248,16 @@ static void TstPrn_WriteIntAnsPrint (struct Usr_Data *UsrDat,
/***** Write the correct answer *****/
HTM_TD_Begin ("class=\"CM Qst_ANS_0_%s\"",The_GetSuffix ());
- if (ICanView[TstVis_VISIBLE_CORRECT_ANSWER] == Usr_I_CAN)
- HTM_Long (Question->Answer.Integer);
- else
- Ico_PutIconNotVisible ();
+ switch (ICanView[TstVis_VISIBLE_CORRECT_ANSWER])
+ {
+ case Usr_I_CAN:
+ HTM_Long (Question->Answer.Integer);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
+ }
HTM_TD_End ();
HTM_TR_End ();
@@ -1308,16 +1312,20 @@ static void TstPrn_WriteFltAnsPrint (struct Usr_Data *UsrDat,
/***** Write the correct answer *****/
HTM_TD_Begin ("class=\"CM Qst_ANS_0_%s\"",The_GetSuffix ());
- if (ICanView[TstVis_VISIBLE_CORRECT_ANSWER] == Usr_I_CAN)
+ switch (ICanView[TstVis_VISIBLE_CORRECT_ANSWER])
{
- HTM_Txt ("[");
- HTM_Double (Question->Answer.FloatingPoint[0]);
- HTM_Txt ("; ");
- HTM_Double (Question->Answer.FloatingPoint[1]);
- HTM_Txt ("]");
+ case Usr_I_CAN:
+ HTM_Txt ("[");
+ HTM_Double (Question->Answer.FloatingPoint[0]);
+ HTM_Txt ("; ");
+ HTM_Double (Question->Answer.FloatingPoint[1]);
+ HTM_Txt ("]");
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
HTM_TR_End ();
@@ -1366,10 +1374,16 @@ static void TstPrn_WriteTF_AnsPrint (struct Usr_Data *UsrDat,
/***** Write the correct answer *****/
HTM_TD_Begin ("class=\"CM Qst_ANS_0_%s\"",The_GetSuffix ());
- if (ICanView[TstVis_VISIBLE_CORRECT_ANSWER] == Usr_I_CAN)
- Qst_WriteAnsTF (Question->Answer.TF);
- else
- Ico_PutIconNotVisible ();
+ switch (ICanView[TstVis_VISIBLE_CORRECT_ANSWER])
+ {
+ case Usr_I_CAN:
+ Qst_WriteAnsTF (Question->Answer.TF);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
+ }
HTM_TD_End ();
HTM_TR_End ();
@@ -1430,25 +1444,26 @@ static void TstPrn_WriteChoAnsPrint (struct Usr_Data *UsrDat,
/* Draw icon depending on user's answer */
if (UsrAnswers[Indexes[NumOpt]]) // This answer has been selected by the user
{
- if (ICanView[TstVis_VISIBLE_CORRECT_ANSWER] == Usr_I_CAN)
+ switch (ICanView[TstVis_VISIBLE_CORRECT_ANSWER])
{
- if (Question->Answer.Options[Indexes[NumOpt]].Correct)
- {
- Ans.Class = "Qst_ANS_OK"; // Correct
- Ans.Str = "✓";
- }
- else
- {
- Ans.Class = "Qst_ANS_BAD"; // Wrong
- Ans.Str = "✗";
- }
+ case Usr_I_CAN:
+ if (Question->Answer.Options[Indexes[NumOpt]].Correct)
+ {
+ Ans.Class = "Qst_ANS_OK"; // Correct
+ Ans.Str = "✓";
+ }
+ else
+ {
+ Ans.Class = "Qst_ANS_BAD"; // Wrong
+ Ans.Str = "✗";
+ }
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ans.Class = "Qst_ANS_0"; // Blank answer
+ Ans.Str = "•";
+ break;
}
- else
- {
- Ans.Class = "Qst_ANS_0"; // Blank answer
- Ans.Str = "•";
- }
-
HTM_TD_Begin ("class=\"CT %s_%s\" title=\"%s\"",
Ans.Class,The_GetSuffix (),
Txt_TST_Answer_given_by_the_user);
@@ -1459,47 +1474,50 @@ static void TstPrn_WriteChoAnsPrint (struct Usr_Data *UsrDat,
HTM_TD_Empty (1);
/* Draw icon that indicates whether the answer is correct */
- if (ICanView[TstVis_VISIBLE_CORRECT_ANSWER] == Usr_I_CAN)
+ switch (ICanView[TstVis_VISIBLE_CORRECT_ANSWER])
{
- if (Question->Answer.Options[Indexes[NumOpt]].Correct)
- {
- HTM_TD_Begin ("class=\"CT Qst_ANS_0_%s\" title=\"%s\"",
- The_GetSuffix (),
- Txt_TST_Answer_given_by_the_teachers);
- HTM_Txt ("•");
+ case Usr_I_CAN:
+ if (Question->Answer.Options[Indexes[NumOpt]].Correct)
+ {
+ HTM_TD_Begin ("class=\"CT Qst_ANS_0_%s\" title=\"%s\"",
+ The_GetSuffix (),
+ Txt_TST_Answer_given_by_the_teachers);
+ HTM_Txt ("•");
+ HTM_TD_End ();
+ }
+ else
+ HTM_TD_Empty (1);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ HTM_TD_Begin ("class=\"CT Qst_ANS_0_%s\"",The_GetSuffix ());
+ Ico_PutIconNotVisible ();
HTM_TD_End ();
- }
- else
- HTM_TD_Empty (1);
- }
- else
- {
- HTM_TD_Begin ("class=\"CT Qst_ANS_0_%s\"",
- The_GetSuffix ());
- Ico_PutIconNotVisible ();
- HTM_TD_End ();
+ break;
}
/* Answer letter (a, b, c,...) */
- HTM_TD_Begin ("class=\"LT %s_%s\"",
- ClassTxt,The_GetSuffix ());
+ HTM_TD_Begin ("class=\"LT %s_%s\"",ClassTxt,The_GetSuffix ());
HTM_TxtF ("%c) ",'a' + (char) NumOpt);
HTM_TD_End ();
/* Answer text and feedback */
HTM_TD_Begin ("class=\"LT\"");
- HTM_DIV_Begin ("class=\"%s_%s\"",
- ClassTxt,The_GetSuffix ());
- if (ICanView[TstVis_VISIBLE_QST_ANS_TXT] == Usr_I_CAN)
+ HTM_DIV_Begin ("class=\"%s_%s\"",ClassTxt,The_GetSuffix ());
+ switch (ICanView[TstVis_VISIBLE_QST_ANS_TXT])
{
- HTM_Txt (Question->Answer.Options[Indexes[NumOpt]].Text);
- Med_ShowMedia (&Question->Answer.Options[Indexes[NumOpt]].Media,
- "Tst_MED_SHOW_CONT",
- "Tst_MED_SHOW");
+ case Usr_I_CAN:
+ HTM_Txt (Question->Answer.Options[Indexes[NumOpt]].Text);
+ Med_ShowMedia (&Question->Answer.Options[Indexes[NumOpt]].Media,
+ "Tst_MED_SHOW_CONT",
+ "Tst_MED_SHOW");
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_DIV_End ();
if (ICanView[TstVis_VISIBLE_CORRECT_ANSWER] == Usr_I_CAN)
@@ -1593,55 +1611,57 @@ static void TstPrn_WriteTxtAnsPrint (struct Usr_Data *UsrDat,
HTM_TD_Empty (1);
/***** Write the correct answers *****/
- if (ICanView[TstVis_VISIBLE_CORRECT_ANSWER] == Usr_I_CAN)
+ switch (ICanView[TstVis_VISIBLE_CORRECT_ANSWER])
{
- HTM_TD_Begin ("class=\"CT\"");
- HTM_TABLE_BeginPadding (2);
+ case Usr_I_CAN:
+ HTM_TD_Begin ("class=\"CT\"");
+ HTM_TABLE_BeginPadding (2);
- for (NumOpt = 0;
- NumOpt < Question->Answer.NumOptions;
- NumOpt++)
- {
- HTM_TR_Begin (NULL);
+ for (NumOpt = 0;
+ NumOpt < Question->Answer.NumOptions;
+ NumOpt++)
+ {
+ HTM_TR_Begin (NULL);
- /* Answer letter (a, b, c,...) */
- HTM_TD_Begin ("class=\"LT Qst_ANS_0_%s\"",
- The_GetSuffix ());
- HTM_TxtF ("%c) ",'a' + (char) NumOpt);
- HTM_TD_End ();
+ /* Answer letter (a, b, c,...) */
+ HTM_TD_Begin ("class=\"LT Qst_ANS_0_%s\"",
+ The_GetSuffix ());
+ HTM_TxtF ("%c) ",'a' + (char) NumOpt);
+ HTM_TD_End ();
- /* Answer text and feedback */
- HTM_TD_Begin ("class=\"LT\"");
+ /* Answer text and feedback */
+ HTM_TD_Begin ("class=\"LT\"");
- HTM_DIV_Begin ("class=\"Qst_ANS_0_%s\"",
- The_GetSuffix ());
- HTM_Txt (Question->Answer.Options[NumOpt].Text);
- HTM_DIV_End ();
+ HTM_DIV_Begin ("class=\"Qst_ANS_0_%s\"",
+ The_GetSuffix ());
+ HTM_Txt (Question->Answer.Options[NumOpt].Text);
+ HTM_DIV_End ();
- if (ICanView[TstVis_VISIBLE_FEEDBACK_TXT] == Usr_I_CAN)
- if (Question->Answer.Options[NumOpt].Feedback)
- if (Question->Answer.Options[NumOpt].Feedback[0])
- {
- HTM_DIV_Begin ("class=\"Qst_TXT_LIGHT\"");
- HTM_Txt (Question->Answer.Options[NumOpt].Feedback);
- HTM_DIV_End ();
- }
+ if (ICanView[TstVis_VISIBLE_FEEDBACK_TXT] == Usr_I_CAN)
+ if (Question->Answer.Options[NumOpt].Feedback)
+ if (Question->Answer.Options[NumOpt].Feedback[0])
+ {
+ HTM_DIV_Begin ("class=\"Qst_TXT_LIGHT\"");
+ HTM_Txt (Question->Answer.Options[NumOpt].Feedback);
+ HTM_DIV_End ();
+ }
- HTM_TD_End ();
+ HTM_TD_End ();
- HTM_TR_End ();
- }
+ HTM_TR_End ();
+ }
- HTM_TABLE_End ();
- HTM_TD_End ();
- }
- else
- {
- HTM_TD_Begin ("class=\"CT Qst_ANS_0_%s\"",
- The_GetSuffix ());
- Ico_PutIconNotVisible ();
- HTM_TD_End ();
+ HTM_TABLE_End ();
+ HTM_TD_End ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ HTM_TD_Begin ("class=\"CT Qst_ANS_0_%s\"",The_GetSuffix ());
+ Ico_PutIconNotVisible ();
+ HTM_TD_End ();
+ break;
}
+
HTM_TR_End ();
HTM_TABLE_End ();
@@ -1914,8 +1934,7 @@ static void TstPrn_ShowUsrPrints (struct Usr_Data *UsrDat)
if (asprintf (&Id,"tst_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LT %s_%s %s\"",
- Id,ClassDat,The_GetSuffix (),
- The_GetColorRows ());
+ Id,ClassDat,The_GetSuffix (),The_GetColorRows ());
Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime],
Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,false,0x7);
@@ -1933,96 +1952,124 @@ static void TstPrn_ShowUsrPrints (struct Usr_Data *UsrDat)
/* Write number of questions */
HTM_TD_Begin ("class=\"RT %s_%s LINE_LEFT %s\"",
- ClassDat,The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Result == Usr_I_CAN)
- HTM_Unsigned (Print.NumQsts.All);
- else
- Ico_PutIconNotVisible ();
+ ClassDat,The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Result)
+ {
+ case Usr_I_CAN:
+ HTM_Unsigned (Print.NumQsts.All);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
+ }
HTM_TD_End ();
/* Write number of non-blank answers */
HTM_TD_Begin ("class=\"RT %s_%s LINE_LEFT %s\"",
- ClassDat,The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Result == Usr_I_CAN)
+ ClassDat,The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Result)
{
- if (Print.NumQsts.NotBlank)
- HTM_Unsigned (Print.NumQsts.NotBlank);
- else
- HTM_Light0 ();
+ case Usr_I_CAN:
+ if (Print.NumQsts.NotBlank)
+ HTM_Unsigned (Print.NumQsts.NotBlank);
+ else
+ HTM_Light0 ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Write number of blank answers */
HTM_TD_Begin ("class=\"RT %s_%s %s\"",
- ClassDat,The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Result == Usr_I_CAN)
+ ClassDat,The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Result)
{
- NumQstsBlank = Print.NumQsts.All - Print.NumQsts.NotBlank;
- if (NumQstsBlank)
- HTM_Unsigned (NumQstsBlank);
- else
- HTM_Light0 ();
+ case Usr_I_CAN:
+ NumQstsBlank = Print.NumQsts.All - Print.NumQsts.NotBlank;
+ if (NumQstsBlank)
+ HTM_Unsigned (NumQstsBlank);
+ else
+ HTM_Light0 ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Write score */
HTM_TD_Begin ("class=\"RT %s_%s LINE_LEFT %s\"",
- ClassDat,The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
+ ClassDat,The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
{
- HTM_Double2Decimals (Print.Score);
- HTM_Txt ("/");
- HTM_Unsigned (Print.NumQsts.All);
+ case Usr_I_CAN:
+ HTM_Double2Decimals (Print.Score);
+ HTM_Txt ("/");
+ HTM_Unsigned (Print.NumQsts.All);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
/* Write average score per question */
HTM_TD_Begin ("class=\"RT %s_%s %s\"",
- ClassDat,The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
- HTM_Double2Decimals (Print.NumQsts.All ? Print.Score /
- (double) Print.NumQsts.All :
- 0.0);
- else
- Ico_PutIconNotVisible ();
+ ClassDat,The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
+ {
+ case Usr_I_CAN:
+ HTM_Double2Decimals (Print.NumQsts.All ? Print.Score /
+ (double) Print.NumQsts.All :
+ 0.0);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
+ }
HTM_TD_End ();
/* Write grade */
HTM_TD_Begin ("class=\"RT %s_%s LINE_LEFT %s\"",
- ClassDat,The_GetSuffix (),
- The_GetColorRows ());
- if (ICanView.Score == Usr_I_CAN)
- TstPrn_ComputeAndShowGrade (Print.NumQsts.All,Print.Score,Tst_SCORE_MAX);
- else
- Ico_PutIconNotVisible ();
+ ClassDat,The_GetSuffix (),The_GetColorRows ());
+ switch (ICanView.Score)
+ {
+ case Usr_I_CAN:
+ TstPrn_ComputeAndShowGrade (Print.NumQsts.All,Print.Score,
+ Tst_SCORE_MAX);
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
+ }
HTM_TD_End ();
/* Link to show this test */
- HTM_TD_Begin ("class=\"RT LINE_LEFT %s\"",
- The_GetColorRows ());
- if (ICanView.Result == Usr_I_CAN)
+ HTM_TD_Begin ("class=\"RT LINE_LEFT %s\"",The_GetColorRows ());
+ switch (ICanView.Result)
{
- Frm_BeginForm (Gbl.Action.Act == ActSeeMyTstResCrs ? ActSeeOneTstResMe :
- ActSeeOneTstResOth);
- ParCod_PutPar (ParCod_Prn,Print.PrnCod);
- Ico_PutIconLink ("tasks.svg",Ico_BLACK,
- Gbl.Action.Act == ActSeeMyTstResCrs ? ActSeeOneTstResMe :
- ActSeeOneTstResOth);
- Frm_EndForm ();
+ case Usr_I_CAN:
+ Frm_BeginForm (Gbl.Action.Act == ActSeeMyTstResCrs ? ActSeeOneTstResMe :
+ ActSeeOneTstResOth);
+ ParCod_PutPar (ParCod_Prn,Print.PrnCod);
+ Ico_PutIconLink ("tasks.svg",Ico_BLACK,
+ Gbl.Action.Act == ActSeeMyTstResCrs ? ActSeeOneTstResMe :
+ ActSeeOneTstResOth);
+ Frm_EndForm ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
HTM_TR_End ();
@@ -2339,16 +2386,20 @@ void TstPrn_ShowOnePrint (void)
HTM_TD_Begin ("class=\"LB DAT_%s\"",
The_GetSuffix ());
- if (ICanView.Score == Usr_I_CAN)
+ switch (ICanView.Score)
{
- HTM_STRONG_Begin ();
- HTM_Double2Decimals (Print.Score);
- HTM_Txt ("/");
- HTM_Unsigned (Print.NumQsts.All);
- HTM_STRONG_End ();
+ case Usr_I_CAN:
+ HTM_STRONG_Begin ();
+ HTM_Double2Decimals (Print.Score);
+ HTM_Txt ("/");
+ HTM_Unsigned (Print.NumQsts.All);
+ HTM_STRONG_End ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
HTM_TR_End ();
@@ -2363,14 +2414,19 @@ void TstPrn_ShowOnePrint (void)
HTM_TD_Begin ("class=\"LB DAT_%s\"",
The_GetSuffix ());
- if (ICanView.Score == Usr_I_CAN)
+ switch (ICanView.Score)
{
- HTM_STRONG_Begin ();
- TstPrn_ComputeAndShowGrade (Print.NumQsts.All,Print.Score,Tst_SCORE_MAX);
- HTM_STRONG_End ();
+ case Usr_I_CAN:
+ HTM_STRONG_Begin ();
+ TstPrn_ComputeAndShowGrade (Print.NumQsts.All,Print.Score,
+ Tst_SCORE_MAX);
+ HTM_STRONG_End ();
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ Ico_PutIconNotVisible ();
+ break;
}
- else
- Ico_PutIconNotVisible ();
HTM_TD_End ();
HTM_TR_End ();
@@ -2420,12 +2476,18 @@ static void TstRes_CheckIfICanSeePrintResult (const struct TstPrn_Print *Print,
// if the print is not sent ==> I can not view results
ICanView->Result = (Print->Sent && Usr_ItsMe (UsrCod) == Usr_ME) ? Usr_I_CAN :
Usr_I_CAN_NOT;
- if (ICanView->Result == Usr_I_CAN)
- // Depends on 5 visibility icons associated to tests
- ICanView->Score = TstVis_IsVisibleTotalScore (TstCfg_GetConfigVisibility ()) ? Usr_I_CAN :
- Usr_I_CAN_NOT;
- else
- ICanView->Score = Usr_I_CAN_NOT;
+ switch (ICanView->Result)
+ {
+ case Usr_I_CAN:
+ // Depends on 5 visibility icons associated to tests
+ ICanView->Score = TstVis_IsVisibleTotalScore (TstCfg_GetConfigVisibility ()) ? Usr_I_CAN :
+ Usr_I_CAN_NOT;
+ break;
+ case Usr_I_CAN_NOT:
+ default:
+ ICanView->Score = Usr_I_CAN_NOT;
+ break;
+ }
break;
case Rol_NET:
case Rol_TCH:
diff --git a/swad_timeline_user.c b/swad_timeline_user.c
index 865162a1c..61ec4a152 100644
--- a/swad_timeline_user.c
+++ b/swad_timeline_user.c
@@ -298,7 +298,6 @@ void TmlUsr_PutIconFavSha (TmlUsr_FavSha_t FavSha,
TmlUsr_PutDisabledIconFavSha (FavSha,NumUsrs);
break;
case Usr_OTHER: // I am not the author
- default:
TmlFrm_PutFormToFavUnfShaUns (FavSha,Cod);
break;
}