Version 15.192.7

This commit is contained in:
Antonio Cañas Vargas 2016-04-11 18:54:23 +02:00
parent 7206f79112
commit 1834d7c940
5 changed files with 86 additions and 99 deletions

View File

@ -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},

View File

@ -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)

View File

@ -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);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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);

View File

@ -47063,36 +47063,6 @@ const char *Txt_Total_BR_score =
"Pontua&ccedil;&atilde;o<br />total"; "Pontua&ccedil;&atilde;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&szlig; 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&ugrave; le visage appara&icirc;t en position avant"
" et l'arri&egrave;re-plan est blanc ou tr&egrave;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 &egrave; bianco o molto chiaro.";
#elif L==8
"Spr&oacute;buj wys&lstrok;a&cacute; inny obraz, gdzie pojawia si&eogon; twarz&aogon; w przednim po&lstrok;o&zdot;eniu,"
" a t&lstrok;o jest bia&lstrok;e lub bardzo jasne.";
#elif L==9
"Tente enviar outra imagem onde o rosto aparece na posi&ccedil;&atilde;o dianteira"
" eo fundo &eacute; 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";