mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-01 22:35:28 +02:00
Version 15.192.7
This commit is contained in:
parent
7206f79112
commit
1834d7c940
|
@ -2258,9 +2258,9 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActReqStdPho */{1433,-1,TabUsr,ActLstStd ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pho_SendPhotoUsr ,NULL},
|
/* ActReqStdPho */{1433,-1,TabUsr,ActLstStd ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pho_SendPhotoUsr ,NULL},
|
||||||
/* ActReqTchPho */{1434,-1,TabUsr,ActLstTch ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pho_SendPhotoUsr ,NULL},
|
/* ActReqTchPho */{1434,-1,TabUsr,ActLstTch ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pho_SendPhotoUsr ,NULL},
|
||||||
|
|
||||||
/* ActDetOthPho */{1435,-1,TabUsr,ActLstOth ,0x1F0,0x1E0,0x1E0,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Pho_RecUsrPhotoDetFaces ,NULL},
|
/* ActDetOthPho */{1435,-1,TabUsr,ActLstOth ,0x1F0,0x1E0,0x1E0,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Pho_RecOtherUsrPhotoDetFaces ,NULL},
|
||||||
/* ActDetStdPho */{1436,-1,TabUsr,ActLstStd ,0x1F0,0x1E0,0x1E0,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Pho_RecUsrPhotoDetFaces ,NULL},
|
/* ActDetStdPho */{1436,-1,TabUsr,ActLstStd ,0x1F0,0x1E0,0x1E0,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Pho_RecOtherUsrPhotoDetFaces ,NULL},
|
||||||
/* ActDetTchPho */{1437,-1,TabUsr,ActLstTch ,0x1F0,0x1E0,0x1E0,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Pho_RecUsrPhotoDetFaces ,NULL},
|
/* ActDetTchPho */{1437,-1,TabUsr,ActLstTch ,0x1F0,0x1E0,0x1E0,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Pho_RecOtherUsrPhotoDetFaces ,NULL},
|
||||||
|
|
||||||
/* ActUpdOthPho */{1438,-1,TabUsr,ActLstOth ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pho_UpdateUsrPhoto1 ,Pho_UpdateUsrPhoto2 ,NULL},
|
/* ActUpdOthPho */{1438,-1,TabUsr,ActLstOth ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pho_UpdateUsrPhoto1 ,Pho_UpdateUsrPhoto2 ,NULL},
|
||||||
/* ActUpdStdPho */{1439,-1,TabUsr,ActLstStd ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pho_UpdateUsrPhoto1 ,Pho_UpdateUsrPhoto2 ,NULL},
|
/* ActUpdStdPho */{1439,-1,TabUsr,ActLstStd ,0x1F0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pho_UpdateUsrPhoto1 ,Pho_UpdateUsrPhoto2 ,NULL},
|
||||||
|
@ -2652,7 +2652,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
|
|
||||||
/* ActChgMyData */{ 298,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Rec_UpdateMyRecord ,Rec_ShowMyCommonRecordUpd ,NULL},
|
/* ActChgMyData */{ 298,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Rec_UpdateMyRecord ,Rec_ShowMyCommonRecordUpd ,NULL},
|
||||||
|
|
||||||
/* ActReqMyPho */{ 30,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pho_ReqMyPhoto ,NULL},
|
/* ActReqMyPho */{ 30,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pho_ReqMyPhotoWithContextualLinks ,NULL},
|
||||||
/* ActDetMyPho */{ 693,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Pho_RecMyPhotoDetFaces ,NULL},
|
/* ActDetMyPho */{ 693,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Pho_RecMyPhotoDetFaces ,NULL},
|
||||||
/* ActUpdMyPho */{ 694,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pho_UpdateMyPhoto1 ,Pho_UpdateMyPhoto2 ,NULL},
|
/* ActUpdMyPho */{ 694,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pho_UpdateMyPhoto1 ,Pho_UpdateMyPhoto2 ,NULL},
|
||||||
/* ActRemMyPho */{ 428,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pho_RemoveMyPhoto1 ,Pho_RemoveMyPhoto2 ,NULL},
|
/* ActRemMyPho */{ 428,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pho_RemoveMyPhoto1 ,Pho_RemoveMyPhoto2 ,NULL},
|
||||||
|
|
|
@ -130,17 +130,21 @@
|
||||||
// TODO: In social refreshing via AJAX, an error occurs when session expirates
|
// TODO: In social refreshing via AJAX, an error occurs when session expirates
|
||||||
// TODO: Messages in msg_content_deleted older than a certain time should be deleted to ensure the protection of personal data
|
// TODO: Messages in msg_content_deleted older than a certain time should be deleted to ensure the protection of personal data
|
||||||
|
|
||||||
|
// TODO: Request confirmation to remove user's photo
|
||||||
|
// TODO: Put contextual icon to remove user's photo
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 15.192.6 (2016-04-11)"
|
#define Log_PLATFORM_VERSION "SWAD 15.192.7 (2016-04-11)"
|
||||||
#define CSS_FILE "swad15.192.6.css"
|
#define CSS_FILE "swad15.192.6.css"
|
||||||
#define JS_FILE "swad15.190.1.js"
|
#define JS_FILE "swad15.190.1.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 15.192.7: Apr 11, 2016 Changes in forms to upload user's photo. (199340 lines)
|
||||||
Version 15.192.6: Apr 11, 2016 Changes in layout of test edition.
|
Version 15.192.6: Apr 11, 2016 Changes in layout of test edition.
|
||||||
Changes in forms to upload files. (199359 lines)
|
Changes in forms to upload files. (199359 lines)
|
||||||
Version 15.192.5: Apr 11, 2016 Fixed bug in edition of tests. (199369 lines)
|
Version 15.192.5: Apr 11, 2016 Fixed bug in edition of tests. (199369 lines)
|
||||||
|
|
133
swad_photo.c
133
swad_photo.c
|
@ -86,7 +86,14 @@ const char *Pho_StrAvgPhotoPrograms[Pho_NUM_AVERAGE_PHOTO_TYPES] =
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Pho_PutLinkToRemoveMyPhoto (void);
|
static void Pho_PutLinkToRemoveMyPhoto (void);
|
||||||
static void Pho_PutLinkToRemoveOtherUsrPhoto (const struct UsrData *UsrDat);
|
static void Pho_PutLinkToRemoveOtherUsrPhoto (void);
|
||||||
|
static void Pho_ReqMyPhoto (void);
|
||||||
|
static void Pho_ReqOtherUsrPhotoWithContextualLinks (void);
|
||||||
|
static void Pho_ReqOtherUsrPhoto (void);
|
||||||
|
|
||||||
|
static void Pho_ReqPhoto (const struct UsrData *UsrDat,const char *PhotoURL);
|
||||||
|
|
||||||
|
static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat);
|
||||||
|
|
||||||
static void Pho_UpdatePhoto1 (struct UsrData *UsrDat);
|
static void Pho_UpdatePhoto1 (struct UsrData *UsrDat);
|
||||||
static void Pho_UpdatePhoto2 (void);
|
static void Pho_UpdatePhoto2 (void);
|
||||||
|
@ -227,14 +234,14 @@ static void Pho_PutLinkToRemoveMyPhoto (void)
|
||||||
/********************* Put a link to remove user's photo *********************/
|
/********************* Put a link to remove user's photo *********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Pho_PutLinkToRemoveOtherUsrPhoto (const struct UsrData *UsrDat)
|
static void Pho_PutLinkToRemoveOtherUsrPhoto (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Remove_photo;
|
extern const char *Txt_Remove_photo;
|
||||||
|
|
||||||
/***** Link for removing the photo *****/
|
/***** Link for removing the photo *****/
|
||||||
Lay_PutContextualLink ( UsrDat->RoleInCurrentCrsDB == Rol_STUDENT ? ActRemStdPho :
|
Lay_PutContextualLink ( Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB == Rol_STUDENT ? ActRemStdPho :
|
||||||
(UsrDat->RoleInCurrentCrsDB == Rol_TEACHER ? ActRemTchPho :
|
(Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB == Rol_TEACHER ? ActRemTchPho :
|
||||||
ActRemOthPho), // Guest, visitor or admin
|
ActRemOthPho), // Guest, visitor or admin
|
||||||
Usr_PutParamOtherUsrCodEncrypted,
|
Usr_PutParamOtherUsrCodEncrypted,
|
||||||
"remove-on64x64.png",
|
"remove-on64x64.png",
|
||||||
Txt_Remove_photo,Txt_Remove_photo);
|
Txt_Remove_photo,Txt_Remove_photo);
|
||||||
|
@ -244,58 +251,73 @@ static void Pho_PutLinkToRemoveOtherUsrPhoto (const struct UsrData *UsrDat)
|
||||||
/************************ Form for sending my photo **************************/
|
/************************ Form for sending my photo **************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Pho_ReqMyPhoto (void)
|
void Pho_ReqMyPhotoWithContextualLinks (void)
|
||||||
{
|
{
|
||||||
/* Show the form for sending the photo */
|
/***** Contextual links to remove photo and change privacy *****/
|
||||||
Pho_ReqPhoto (&Gbl.Usrs.Me.UsrDat,Gbl.Usrs.Me.MyPhotoExists,Gbl.Usrs.Me.PhotoURL);
|
if (Gbl.Usrs.Me.MyPhotoExists) // I have photo
|
||||||
|
{
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
||||||
|
Pho_PutLinkToRemoveMyPhoto ();
|
||||||
|
Pri_PutLinkToChangeMyPrivacy (); // Put link (form) to change my privacy
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Show the form to send my photo *****/
|
||||||
|
Pho_ReqMyPhoto ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Pho_ReqMyPhoto (void)
|
||||||
|
{
|
||||||
|
/***** Show the form for sending the photo *****/
|
||||||
|
Pho_ReqPhoto (&Gbl.Usrs.Me.UsrDat,Gbl.Usrs.Me.PhotoURL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************* Form for sending other user's photo *********************/
|
/******************* Form for sending other user's photo *********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Pho_ReqUsrPhoto (struct UsrData *UsrDat)
|
static void Pho_ReqOtherUsrPhotoWithContextualLinks (void)
|
||||||
{
|
{
|
||||||
bool PhotoExists;
|
|
||||||
char PhotoURL[PATH_MAX+1];
|
char PhotoURL[PATH_MAX+1];
|
||||||
|
|
||||||
/* Check if user's photo exists and create a link to it */
|
/***** Check if user's photo exists and create a link to it *****/
|
||||||
PhotoExists = Pho_BuildLinkToPhoto (UsrDat,PhotoURL,true);
|
if (Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL,true)) // User has photo
|
||||||
|
{
|
||||||
|
/***** Forms to remove photo and change privacy *****/
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
||||||
|
Pho_PutLinkToRemoveOtherUsrPhoto ();
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
}
|
||||||
|
|
||||||
/* Show the form for sending the photo */
|
/***** Show the form to send another user's photo *****/
|
||||||
Pho_ReqPhoto (UsrDat,PhotoExists,PhotoURL);
|
Pho_ReqPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Pho_ReqOtherUsrPhoto (void)
|
||||||
|
{
|
||||||
|
char PhotoURL[PATH_MAX+1];
|
||||||
|
|
||||||
|
/***** Get photo URL *****/
|
||||||
|
Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL,true);
|
||||||
|
|
||||||
|
/***** Show the form to send another user's photo *****/
|
||||||
|
Pho_ReqPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************** Show a form for sending an user's photo ******************/
|
/****************** Show a form for sending an user's photo ******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Pho_ReqPhoto (const struct UsrData *UsrDat,bool PhotoExists,const char *PhotoURL)
|
static void Pho_ReqPhoto (const struct UsrData *UsrDat,const char *PhotoURL)
|
||||||
{
|
{
|
||||||
extern const char *The_ClassForm[The_NUM_THEMES];
|
extern const char *The_ClassForm[The_NUM_THEMES];
|
||||||
extern const char *Txt_Photo;
|
extern const char *Txt_Photo;
|
||||||
extern const char *Txt_You_can_send_a_file_with_an_image_in_jpg_format_;
|
extern const char *Txt_You_can_send_a_file_with_an_image_in_jpg_format_;
|
||||||
extern const char *Txt_File_with_the_photo;
|
extern const char *Txt_File_with_the_photo;
|
||||||
extern const char *Txt_Upload_photo;
|
extern const char *Txt_Upload_photo;
|
||||||
bool ItsMe = (UsrDat->UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod);
|
|
||||||
|
|
||||||
/***** Write message about photo presence or ausence *****/
|
|
||||||
if (PhotoExists) // User has photo
|
|
||||||
{
|
|
||||||
/***** Forms to remove photo and change privacy *****/
|
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
|
||||||
if (ItsMe)
|
|
||||||
{
|
|
||||||
Pho_PutLinkToRemoveMyPhoto ();
|
|
||||||
Pri_PutLinkToChangeMyPrivacy (); // Put link (form) to change my privacy
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Pho_PutLinkToRemoveOtherUsrPhoto (UsrDat);
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Start form *****/
|
/***** Start form *****/
|
||||||
if (ItsMe)
|
if (UsrDat->UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) // It's me
|
||||||
Act_FormStart (ActDetMyPho);
|
Act_FormStart (ActDetMyPho);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -309,7 +331,6 @@ void Pho_ReqPhoto (const struct UsrData *UsrDat,bool PhotoExists,const char *Pho
|
||||||
Lay_StartRoundFrame (NULL,Txt_Photo,NULL);
|
Lay_StartRoundFrame (NULL,Txt_Photo,NULL);
|
||||||
|
|
||||||
/***** Show current photo and help message *****/
|
/***** Show current photo and help message *****/
|
||||||
// if (PhotoExists)
|
|
||||||
Pho_ShowUsrPhoto (UsrDat,PhotoURL,
|
Pho_ShowUsrPhoto (UsrDat,PhotoURL,
|
||||||
"PHOTO186x248",Pho_NO_ZOOM,false);
|
"PHOTO186x248",Pho_NO_ZOOM,false);
|
||||||
Lay_ShowAlert (Lay_INFO,Txt_You_can_send_a_file_with_an_image_in_jpg_format_);
|
Lay_ShowAlert (Lay_INFO,Txt_You_can_send_a_file_with_an_image_in_jpg_format_);
|
||||||
|
@ -348,7 +369,12 @@ void Pho_SendPhotoUsr (void)
|
||||||
Gbl.Usrs.Other.UsrDat.Accepted = Usr_CheckIfUsrBelongsToCrs (Gbl.Usrs.Other.UsrDat.UsrCod,
|
Gbl.Usrs.Other.UsrDat.Accepted = Usr_CheckIfUsrBelongsToCrs (Gbl.Usrs.Other.UsrDat.UsrCod,
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
true);
|
true);
|
||||||
Pho_ReqUsrPhoto (&Gbl.Usrs.Other.UsrDat); // Request user's photograph
|
if (Gbl.Usrs.Other.UsrDat.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) // It's me
|
||||||
|
/***** Form to send my photo *****/
|
||||||
|
Pho_ReqMyPhotoWithContextualLinks ();
|
||||||
|
else
|
||||||
|
/***** Form to send another user's photo *****/
|
||||||
|
Pho_ReqOtherUsrPhotoWithContextualLinks ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
||||||
|
@ -364,14 +390,15 @@ void Pho_SendPhotoUsr (void)
|
||||||
void Pho_RecMyPhotoDetFaces (void)
|
void Pho_RecMyPhotoDetFaces (void)
|
||||||
{
|
{
|
||||||
/***** Receive my photo and detect faces on it *****/
|
/***** Receive my photo and detect faces on it *****/
|
||||||
Pho_ReceivePhotoAndDetectFaces (true,&Gbl.Usrs.Me.UsrDat);
|
if (!Pho_ReceivePhotoAndDetectFaces (true,&Gbl.Usrs.Me.UsrDat))
|
||||||
|
Pho_ReqMyPhoto (); // Request my photograph again
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********** Receive another user's photo and detect faces on it **************/
|
/********** Receive another user's photo and detect faces on it **************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Pho_RecUsrPhotoDetFaces (void)
|
void Pho_RecOtherUsrPhotoDetFaces (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
||||||
|
|
||||||
|
@ -380,8 +407,11 @@ void Pho_RecUsrPhotoDetFaces (void)
|
||||||
|
|
||||||
/***** Get password, user type and user's data from database *****/
|
/***** Get password, user type and user's data from database *****/
|
||||||
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat))
|
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat))
|
||||||
|
{
|
||||||
/***** Receive photo *****/
|
/***** Receive photo *****/
|
||||||
Pho_ReceivePhotoAndDetectFaces (false,&Gbl.Usrs.Other.UsrDat);
|
if (!Pho_ReceivePhotoAndDetectFaces (false,&Gbl.Usrs.Other.UsrDat))
|
||||||
|
Pho_ReqOtherUsrPhoto (); // Request user's photograph again
|
||||||
|
}
|
||||||
else
|
else
|
||||||
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
|
||||||
}
|
}
|
||||||
|
@ -433,14 +463,14 @@ void Pho_RemoveUsrPhoto (void)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************** Receive a photo and detect faces on it ********************/
|
/***************** Receive a photo and detect faces on it ********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
// Return false if no "green" faces detected
|
||||||
|
|
||||||
void Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat)
|
static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_file_is_not_X;
|
extern const char *Txt_The_file_is_not_X;
|
||||||
extern const char *Txt_Could_not_detect_any_face_in_front_position_;
|
extern const char *Txt_Could_not_detect_any_face_in_front_position_;
|
||||||
extern const char *Txt_A_face_marked_in_green_has_been_detected_;
|
extern const char *Txt_A_face_marked_in_green_has_been_detected_;
|
||||||
extern const char *Txt_A_face_marked_in_red_has_been_detected_;
|
extern const char *Txt_A_face_marked_in_red_has_been_detected_;
|
||||||
extern const char *Txt_Try_sending_another_image_where_the_face_appears_in_front_position_;
|
|
||||||
extern const char *Txt_X_faces_marked_in_green_have_been_detected_;
|
extern const char *Txt_X_faces_marked_in_green_have_been_detected_;
|
||||||
extern const char *Txt_X_faces_marked_in_red_have_been_detected_;
|
extern const char *Txt_X_faces_marked_in_red_have_been_detected_;
|
||||||
extern const char *Txt_X_faces_have_been_detected_in_front_position_1_Z_;
|
extern const char *Txt_X_faces_have_been_detected_in_front_position_1_Z_;
|
||||||
|
@ -510,7 +540,7 @@ void Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat)
|
||||||
{
|
{
|
||||||
sprintf (Gbl.Message,Txt_The_file_is_not_X,"jpg");
|
sprintf (Gbl.Message,Txt_The_file_is_not_X,"jpg");
|
||||||
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* End the reception of photo in a temporary file */
|
/* End the reception of photo in a temporary file */
|
||||||
|
@ -520,7 +550,7 @@ void Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat)
|
||||||
if (!Fil_EndReceptionOfFile (FileNamePhotoTmp,Param))
|
if (!Fil_EndReceptionOfFile (FileNamePhotoTmp,Param))
|
||||||
{
|
{
|
||||||
Lay_ShowAlert (Lay_WARNING,"Error copying file.");
|
Lay_ShowAlert (Lay_WARNING,"Error copying file.");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Copy the original photo received to private directory.
|
/* Copy the original photo received to private directory.
|
||||||
|
@ -585,19 +615,13 @@ void Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat)
|
||||||
|
|
||||||
/***** Message to the user about the number of faces detected in the image*****/
|
/***** Message to the user about the number of faces detected in the image*****/
|
||||||
if (NumFacesTotal == 0)
|
if (NumFacesTotal == 0)
|
||||||
{
|
|
||||||
Lay_ShowAlert (Lay_WARNING,Txt_Could_not_detect_any_face_in_front_position_);
|
Lay_ShowAlert (Lay_WARNING,Txt_Could_not_detect_any_face_in_front_position_);
|
||||||
Lay_ShowAlert (Lay_INFO,Txt_Try_sending_another_image_where_the_face_appears_in_front_position_);
|
|
||||||
}
|
|
||||||
else if (NumFacesTotal == 1)
|
else if (NumFacesTotal == 1)
|
||||||
{
|
{
|
||||||
if (NumFacesGreen == 1)
|
if (NumFacesGreen == 1)
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Txt_A_face_marked_in_green_has_been_detected_);
|
Lay_ShowAlert (Lay_SUCCESS,Txt_A_face_marked_in_green_has_been_detected_);
|
||||||
else
|
else
|
||||||
{
|
|
||||||
Lay_ShowAlert (Lay_WARNING,Txt_A_face_marked_in_red_has_been_detected_);
|
Lay_ShowAlert (Lay_WARNING,Txt_A_face_marked_in_red_has_been_detected_);
|
||||||
Lay_ShowAlert (Lay_INFO,Txt_Try_sending_another_image_where_the_face_appears_in_front_position_);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else // NumFacesTotal > 1
|
else // NumFacesTotal > 1
|
||||||
{
|
{
|
||||||
|
@ -612,7 +636,6 @@ void Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat)
|
||||||
sprintf (Gbl.Message,Txt_X_faces_marked_in_red_have_been_detected_,
|
sprintf (Gbl.Message,Txt_X_faces_marked_in_red_have_been_detected_,
|
||||||
NumFacesRed);
|
NumFacesRed);
|
||||||
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
||||||
Lay_ShowAlert (Lay_INFO,Txt_Try_sending_another_image_where_the_face_appears_in_front_position_);
|
|
||||||
}
|
}
|
||||||
else // NumFacesGreen > 0
|
else // NumFacesGreen > 0
|
||||||
{
|
{
|
||||||
|
@ -626,17 +649,6 @@ void Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Button to send another photo *****/
|
|
||||||
if (NumFacesGreen == 0)
|
|
||||||
{
|
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
|
||||||
if (UsrDat->UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod)
|
|
||||||
Pho_PutLinkToChangeMyPhoto ();
|
|
||||||
else if (UsrDat->UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod)
|
|
||||||
Pho_PutLinkToChangeOtherUsrPhoto ();
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Create map *****/
|
/***** Create map *****/
|
||||||
fprintf (Gbl.F.Out,"<map name=\"faces_map\">\n");
|
fprintf (Gbl.F.Out,"<map name=\"faces_map\">\n");
|
||||||
if (NumFacesTotal)
|
if (NumFacesTotal)
|
||||||
|
@ -673,6 +685,9 @@ void Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat)
|
||||||
Cfg_HTTPS_URL_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP,
|
Cfg_HTTPS_URL_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP,
|
||||||
Gbl.UniqueNameEncrypted,
|
Gbl.UniqueNameEncrypted,
|
||||||
Txt_Faces_detected,Txt_Faces_detected);
|
Txt_Faces_detected,Txt_Faces_detected);
|
||||||
|
|
||||||
|
/***** Button to send another photo *****/
|
||||||
|
return (NumFacesGreen != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -83,16 +83,14 @@ typedef enum
|
||||||
bool Pho_CheckIfICanChangeOtherUsrPhoto (const struct UsrData *UsrDat);
|
bool Pho_CheckIfICanChangeOtherUsrPhoto (const struct UsrData *UsrDat);
|
||||||
void Pho_PutLinkToChangeMyPhoto (void);
|
void Pho_PutLinkToChangeMyPhoto (void);
|
||||||
void Pho_PutLinkToChangeOtherUsrPhoto (void);
|
void Pho_PutLinkToChangeOtherUsrPhoto (void);
|
||||||
void Pho_ReqMyPhoto (void);
|
void Pho_ReqMyPhotoWithContextualLinks (void);
|
||||||
void Pho_ReqUsrPhoto (struct UsrData *UsrDat);
|
void Pho_ReqUsrPhotoWithContextualLinks (struct UsrData *UsrDat);
|
||||||
void Pho_ReqPhoto (const struct UsrData *UsrDat,bool PhotoExists,const char *PhotoURL);
|
|
||||||
void Pho_SendPhotoUsr (void);
|
void Pho_SendPhotoUsr (void);
|
||||||
void Pho_RecMyPhotoDetFaces (void);
|
void Pho_RecMyPhotoDetFaces (void);
|
||||||
void Pho_RecUsrPhotoDetFaces (void);
|
void Pho_RecOtherUsrPhotoDetFaces (void);
|
||||||
void Pho_RemoveMyPhoto1 (void);
|
void Pho_RemoveMyPhoto1 (void);
|
||||||
void Pho_RemoveMyPhoto2 (void);
|
void Pho_RemoveMyPhoto2 (void);
|
||||||
void Pho_RemoveUsrPhoto (void);
|
void Pho_RemoveUsrPhoto (void);
|
||||||
void Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat);
|
|
||||||
void Pho_UpdateMyPhoto1 (void);
|
void Pho_UpdateMyPhoto1 (void);
|
||||||
void Pho_UpdateMyPhoto2 (void);
|
void Pho_UpdateMyPhoto2 (void);
|
||||||
void Pho_UpdateUsrPhoto1 (void);
|
void Pho_UpdateUsrPhoto1 (void);
|
||||||
|
|
30
swad_text.c
30
swad_text.c
|
@ -47063,36 +47063,6 @@ const char *Txt_Total_BR_score =
|
||||||
"Pontuação<br />total";
|
"Pontuação<br />total";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Try_sending_another_image_where_the_face_appears_in_front_position_ =
|
|
||||||
#if L==1
|
|
||||||
"Provi a enviar una altra imatge on la cara aparegui de front"
|
|
||||||
" i el fons sigui blanc o molt clar.";
|
|
||||||
#elif L==2
|
|
||||||
"Versuchen Sie ein anderes Bild zu senden, wo das Gesicht vor Position erscheint,"
|
|
||||||
" und der Hintergrund ist weiß oder sehr leicht.";
|
|
||||||
#elif L==3
|
|
||||||
"Try sending another image where the face appears in front position"
|
|
||||||
" and the background is white or very light.";
|
|
||||||
#elif L==4
|
|
||||||
"Pruebe a enviar otra imagen donde el rostro aparezca de frente"
|
|
||||||
" y el fondo sea blanco o muy claro.";
|
|
||||||
#elif L==5
|
|
||||||
"Essayez d'envoyer une autre image où le visage apparaît en position avant"
|
|
||||||
" et l'arrière-plan est blanc ou très clair.";
|
|
||||||
#elif L==6
|
|
||||||
"Pruebe a enviar otra imagen donde el rostro aparezca de frente"
|
|
||||||
" y el fondo sea blanco o muy claro."; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"Prova a inviare un'altra immagine dove il viso appare in posizione frontale"
|
|
||||||
" e lo sfondo è bianco o molto chiaro.";
|
|
||||||
#elif L==8
|
|
||||||
"Spróbuj wysłać inny obraz, gdzie pojawia się twarzą w przednim położeniu,"
|
|
||||||
" a tło jest białe lub bardzo jasne.";
|
|
||||||
#elif L==9
|
|
||||||
"Tente enviar outra imagem onde o rosto aparece na posição dianteira"
|
|
||||||
" eo fundo é branco ou muito claro.";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_TST_Correct_ANSWER =
|
const char *Txt_TST_Correct_ANSWER =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Correcta";
|
"Correcta";
|
||||||
|
|
Loading…
Reference in New Issue
Block a user