diff --git a/css/swad_desktop.css b/css/swad_desktop.css index 4d5de4d91..53cdf82e3 100644 --- a/css/swad_desktop.css +++ b/css/swad_desktop.css @@ -33,7 +33,7 @@ body background-color:white; font-family:"Helvetica Neue",Helvetica,Arial,sans-serif; } -input {font-size:10pt;} +input {font-size:10pt; vertical-align:middle;} select {font-size:10pt;} textarea {font-size:8pt;} table @@ -149,9 +149,9 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;} .DAY_WRK_LIGHT {color:#E0E0E0; font-size:8pt;} .DAY_NO_WORK_LIGHT {color:#FFE0FF; font-size:8pt;} .DAY_HLD_LIGHT {color:#FFE0E0; font-size:8pt;} -.DAY {border:solid 1px; border-color:#FFFFFF;} +.DAY {border:solid 1px; border-color:white;} .TODAY {border:solid 1px; border-color:#50B800;} -.DAY_EVENT {border:solid 1px; border-color:#FFFFFF; background-color:#FFF080;} +.DAY_EVENT {border:solid 1px; border-color:white; background-color:#FFF080;} .TODAY_EVENT {border:solid 1px; border-color:#50B800; background-color:#FFF080;} /********************************** Notice ***********************************/ @@ -264,6 +264,7 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;} .ICON16x16B {width:16px; height:16px; vertical-align:middle; display:block;} .ICON28x28 {width:28px; height:28px; vertical-align:middle;} .ICON32x32 {width:32px; height:32px; vertical-align:middle;} +.ICON32x32B {width:32px; height:32px; vertical-align:middle; display:block;} .ICON64x64 {width:64px; height:64px; vertical-align:middle;} /********************************* Frame 10 **********************************/ @@ -427,12 +428,12 @@ a:hover img.CENTRE_PHOTO_SHOW .WHITE_COURSE {color:#4D88A1; font-size:20pt; white-space:nowrap;} .GREY_COURSE {font-family:Georgia, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#F7F6F5; font-size:20pt; white-space:nowrap;} -.BLUE_COURSE {font-family:Georgia, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#FFFFFF; font-size:20pt; white-space:nowrap;} -.YELLOW_COURSE {font-family:Georgia, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#FFFFFF; font-size:20pt; white-space:nowrap;} +.BLUE_COURSE {font-family:Georgia, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:white; font-size:20pt; white-space:nowrap;} +.YELLOW_COURSE {font-family:Georgia, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:white; font-size:20pt; white-space:nowrap;} .WHITE_HEAD {color:#E0E0E0; font-size:10pt; white-space:nowrap;} .GREY_HEAD {color:#E0E0E0; font-size:10pt; white-space:nowrap;} -.BLUE_HEAD {color:#FFFFFF; font-size:10pt; white-space:nowrap;} +.BLUE_HEAD {color:white; font-size:10pt; white-space:nowrap;} .YELLOW_HEAD {color:#B3B0B3; font-size:10pt; white-space:nowrap;} .WHITE_CUR_TIME {color:#808080; font-size:12pt; font-weight:bold;} @@ -442,12 +443,12 @@ a:hover img.CENTRE_PHOTO_SHOW .WHITE_NOTIF {color:#707070; font-size:10pt; white-space:nowrap;} .GREY_NOTIF {color:#E0E0E0; font-size:10pt; white-space:nowrap;} -.BLUE_NOTIF {color:#FFFFFF; font-size:10pt; white-space:nowrap;} +.BLUE_NOTIF {color:white; font-size:10pt; white-space:nowrap;} .YELLOW_NOTIF {color:#B3B0B3; font-size:10pt; white-space:nowrap;} .WHITE_USR {color:#E0E0E0; font-size:12pt; font-weight:bold; white-space:nowrap;} .GREY_USR {color:#E0E0E0; font-size:12pt; font-weight:bold; white-space:nowrap;} -.BLUE_USR {color:#FFFFFF; font-size:12pt; font-weight:bold; white-space:nowrap;} +.BLUE_USR {color:white; font-size:12pt; font-weight:bold; white-space:nowrap;} .YELLOW_USR {color:#B3B0B3; font-size:12pt; font-weight:bold; white-space:nowrap;} .WHITE_CONNECTED {color:#398000; font-size:10pt;} @@ -773,11 +774,11 @@ a:hover img.CENTRE_PHOTO_SHOW .PRAC {background-color:#DBE5E9; border:solid 2px; border-color:#E4EEF2 #D0DADE #D0DADE #E4EEF2;} .TUTO {background-color:#D6E9C3; border:solid 2px; border-color:#DFEEE0 #CAE3B1 #CAE3B1 #DFEEE0;} -.USR_LIST_TYPE_OFF {border:solid 1px; border-color:#FFFFFF;} +.USR_LIST_TYPE_OFF {border:solid 1px; border-color:white;} .USR_LIST_TYPE_ON {border:solid 1px; border-color:#50B800;} -.LAYOUT_OFF {background-color:white;} -.LAYOUT_ON {background-color:#80E000;} +.LAYOUT_OFF {height:32px; text-align:center; vertical-align:middle; border:solid 1px; border-color:white; background-color:white;} +.LAYOUT_ON {height:32px; text-align:center; vertical-align:middle; border:solid 1px; border-color:#C0DAE4; background-color:#DDECF1;} .LOG {font-family:"Arial Narrow", "Nimbus Sans L", "DejaVu LGC Sans Condensed", sans-serif; color:#606060; font-size:9pt;} .LOG_R {font-family:"Arial Narrow", "Nimbus Sans L", "DejaVu LGC Sans Condensed", sans-serif; color:#FF0000; font-size:9pt;} diff --git a/css/swad_mobile.css b/css/swad_mobile.css index bad85f5d9..a25f28083 100644 --- a/css/swad_mobile.css +++ b/css/swad_mobile.css @@ -32,7 +32,7 @@ body background-color:white; font-family:"Helvetica Neue",Helvetica,Arial,sans-serif; } -input {font-size:16pt;} +input {font-size:16pt; vertical-align:middle;} select {font-size:16pt;} textarea {font-size:12pt;} table @@ -99,9 +99,9 @@ p {margin:0;} .DAY_WRK_LIGHT {color:#E0E0E0; font-size:8pt;} .DAY_NO_WORK_LIGHT {color:#FFE0FF; font-size:8pt;} .DAY_HLD_LIGHT {color:#FFE0E0; font-size:8pt;} -.DAY {border:solid 1px; border-color:#FFFFFF;} +.DAY {border:solid 1px; border-color:white;} .TODAY {border:solid 1px; border-color:#50B800;} -.DAY_EVENT {border:solid 1px; border-color:#FFFFFF; background-color:#FFF080;} +.DAY_EVENT {border:solid 1px; border-color:white; background-color:#FFF080;} .TODAY_EVENT {border:solid 1px; border-color:#50B800; background-color:#FFF080;} /********************************** Notice ***********************************/ @@ -228,6 +228,7 @@ p {margin:0;} .ICON16x16 {width:16px; height:16px; vertical-align:middle;} .ICON16x16B {width:16px; height:16px; vertical-align:middle; display:block;} .ICON32x32 {width:32px; height:32px; vertical-align:middle;} +.ICON32x32B {width:32px; height:32px; vertical-align:middle; display:block;} .ICON64x64 {width:64px; height:64px; vertical-align:middle;} /********************************* Frame 10 **********************************/ @@ -390,17 +391,17 @@ a:hover img.CENTRE_PHOTO_SHOW .WHITE_COURSE {color:#4D88A1; font-size:14pt; white-space:nowrap;} .GREY_COURSE {font-Family:Georgia, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#F7F6F5; font-size:14pt; white-space:nowrap;} -.BLUE_COURSE {font-Family:Georgia, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#FFFFFF; font-size:14pt; white-space:nowrap;} -.YELLOW_COURSE {font-Family:Georgia, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#FFFFFF; font-size:14pt; white-space:nowrap;} +.BLUE_COURSE {font-Family:Georgia, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:white; font-size:14pt; white-space:nowrap;} +.YELLOW_COURSE {font-Family:Georgia, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:white; font-size:14pt; white-space:nowrap;} .WHITE_HEAD {color:#E0E0E0; font-size:16pt; white-space:nowrap;} .GREY_HEAD {color:#E0E0E0; font-size:16pt; white-space:nowrap;} -.BLUE_HEAD {color:#FFFFFF; font-size:16pt; white-space:nowrap;} +.BLUE_HEAD {color:white; font-size:16pt; white-space:nowrap;} .YELLOW_HEAD {color:#B3B0B3; font-size:16pt; white-space:nowrap;} .WHITE_USR {color:#E0E0E0; font-size:16pt; font-weight:bold; white-space:nowrap;} .GREY_USR {color:#E0E0E0; font-size:16pt; font-weight:bold; white-space:nowrap;} -.BLUE_USR {color:#FFFFFF; font-size:16pt; font-weight:bold; white-space:nowrap;} +.BLUE_USR {color:white; font-size:16pt; font-weight:bold; white-space:nowrap;} .YELLOW_USR {color:#B3B0B3; font-size:16pt; font-weight:bold; white-space:nowrap;} .WHITE_CONNECTED {color:#398000; font-size:10pt;} @@ -584,11 +585,11 @@ a:hover img.CENTRE_PHOTO_SHOW .CUR_TIME {color:#BAD2DA; font-size:12pt; font-weight:bold;} -.USR_LIST_TYPE_OFF {border:solid 1px; border-color:#FFFFFF;} +.USR_LIST_TYPE_OFF {border:solid 1px; border-color:white;} .USR_LIST_TYPE_ON {border:solid 1px; border-color:#50B800;} -.LAYOUT_OFF {background-color:white;} -.LAYOUT_ON {background-color:#80E000;} +.LAYOUT_OFF {height:32px; text-align:center; vertical-align:middle; border:solid 1px; border-color:white; background-color:white;} +.LAYOUT_ON {height:32px; text-align:center; vertical-align:middle; border:solid 1px; border-color:#C0DAE4; background-color:#DDECF1;} .LOG {font-Family:"Arial Narrow", "Nimbus Sans L", "DejaVu LGC Sans Condensed", sans-serif; color:#606060; font-size:9pt;} .LOG_R {font-Family:"Arial Narrow", "Nimbus Sans L", "DejaVu LGC Sans Condensed", sans-serif; color:#FF0000; font-size:9pt;} diff --git a/swad_action.c b/swad_action.c index 2ca104899..63034b807 100644 --- a/swad_action.c +++ b/swad_action.c @@ -998,6 +998,7 @@ Profile: 856. ActDetMyPho Receive my photo and detect faces on it 857. ActUpdMyPho Update my photo 858. ActRemMyPho Remove my photo + 878. ActChgPubPho Change photo privacity 859. ActReqEdiMyIns Request the edition of my institution, centre and department 860. ActChgCtyMyIns Change the country of my institution @@ -1020,7 +1021,6 @@ Profile: 875. ActShoLftCol Show left side column 876. ActShoRgtCol Show right side column 877. ActChgIco Change icon set - 878. ActChgPubPho Change photo privacity 879. ActChgNtfPrf Change whether to notify by e-mail new messages 880. ActPrnUsrQR Show my QR code ready to print 881. ActPrnMyTimTbl Show the timetable listo to impresión of all my courses @@ -2220,6 +2220,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* 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}, /* ActRemMyPho */{ 428,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pho_RemoveMyPhoto1 ,Pho_RemoveMyPhoto2 ,NULL}, + /* ActChgPubPho */{ 774,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pho_ChangePublicPhoto ,Rec_ShowMyCommonRecordUpd ,NULL}, /* ActReqEdiMyIns */{1165,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Rec_ShowFormMyInsCtrDpt ,NULL}, /* ActChgCtyMyIns */{1166,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Rec_ChgCountryOfMyInstitution ,NULL}, @@ -2242,7 +2243,6 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActShoLftCol */{ 670,-1,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Prf_ShowLeftCol ,Prf_EditPrefs ,NULL}, /* ActShoRgtCol */{ 671,-1,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Prf_ShowRightCol ,Prf_EditPrefs ,NULL}, /* ActChgIco */{1092,-1,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Ico_ChangeIconSet ,Prf_EditPrefs ,NULL}, - /* ActChgPubPho */{ 774,-1,TabPrf,ActEdiPrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Prf_ChangePublicPhoto ,Prf_EditPrefs ,NULL}, /* ActChgNtfPrf */{ 775,-1,TabPrf,ActEdiPrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Ntf_ChangeNotifyEvents ,Prf_EditPrefs ,NULL}, /* ActPrnUsrQR */{1022,-1,TabPrf,ActFrmUsrAcc ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,QR_PrintQRCode ,NULL}, diff --git a/swad_action.h b/swad_action.h index 1295e0655..41bb37e73 100644 --- a/swad_action.h +++ b/swad_action.h @@ -1065,29 +1065,29 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica #define ActDetMyPho (ActSeeAllStaCrs+29) #define ActUpdMyPho (ActSeeAllStaCrs+30) #define ActRemMyPho (ActSeeAllStaCrs+31) +#define ActChgPubPho (ActSeeAllStaCrs+32) -#define ActReqEdiMyIns (ActSeeAllStaCrs+32) -#define ActChgCtyMyIns (ActSeeAllStaCrs+33) -#define ActChgMyIns (ActSeeAllStaCrs+34) -#define ActChgMyCtr (ActSeeAllStaCrs+35) -#define ActChgMyDpt (ActSeeAllStaCrs+36) -#define ActChgMyOff (ActSeeAllStaCrs+37) -#define ActChgMyOffPho (ActSeeAllStaCrs+38) +#define ActReqEdiMyIns (ActSeeAllStaCrs+33) +#define ActChgCtyMyIns (ActSeeAllStaCrs+34) +#define ActChgMyIns (ActSeeAllStaCrs+35) +#define ActChgMyCtr (ActSeeAllStaCrs+36) +#define ActChgMyDpt (ActSeeAllStaCrs+37) +#define ActChgMyOff (ActSeeAllStaCrs+38) +#define ActChgMyOffPho (ActSeeAllStaCrs+39) -#define ActReqEdiMyNet (ActSeeAllStaCrs+39) -#define ActChgMyNet (ActSeeAllStaCrs+40) +#define ActReqEdiMyNet (ActSeeAllStaCrs+40) +#define ActChgMyNet (ActSeeAllStaCrs+41) -#define ActChgLay (ActSeeAllStaCrs+41) -#define ActChgThe (ActSeeAllStaCrs+42) -#define ActReqChgLan (ActSeeAllStaCrs+43) -#define ActChgLan (ActSeeAllStaCrs+44) -#define ActChgCol (ActSeeAllStaCrs+45) -#define ActHidLftCol (ActSeeAllStaCrs+46) -#define ActHidRgtCol (ActSeeAllStaCrs+47) -#define ActShoLftCol (ActSeeAllStaCrs+48) -#define ActShoRgtCol (ActSeeAllStaCrs+49) -#define ActChgIco (ActSeeAllStaCrs+50) -#define ActChgPubPho (ActSeeAllStaCrs+51) +#define ActChgLay (ActSeeAllStaCrs+42) +#define ActChgThe (ActSeeAllStaCrs+43) +#define ActReqChgLan (ActSeeAllStaCrs+44) +#define ActChgLan (ActSeeAllStaCrs+45) +#define ActChgCol (ActSeeAllStaCrs+46) +#define ActHidLftCol (ActSeeAllStaCrs+47) +#define ActHidRgtCol (ActSeeAllStaCrs+48) +#define ActShoLftCol (ActSeeAllStaCrs+49) +#define ActShoRgtCol (ActSeeAllStaCrs+50) +#define ActChgIco (ActSeeAllStaCrs+51) #define ActChgNtfPrf (ActSeeAllStaCrs+52) #define ActPrnUsrQR (ActSeeAllStaCrs+53) diff --git a/swad_changelog.h b/swad_changelog.h index d9d6129a1..475b9dcdf 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -35,11 +35,12 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 14.50.3 (2015/01/01)" +#define Log_PLATFORM_VERSION "SWAD 14.50.4 (2015/01/01)" // 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 | tail -1 /* + Version 14.50.4 :Jan 01, 2014 Changes in preferences and photos. (172705 lines) Version 14.50.3 :Jan 01, 2014 Changes in layout of preferences. (172691 lines) Version 14.50.2 :Jan 01, 2014 Changes in CSS. (172739 lines) Version 14.50.1 :Dec 31, 2014 Horizontal menu (not finished). (172736 lines) diff --git a/swad_icon.c b/swad_icon.c index 4e08e37b9..fcab21b29 100644 --- a/swad_icon.c +++ b/swad_icon.c @@ -75,13 +75,14 @@ void Ico_PutIconsToSelectIconSet (void) IconSet < Ico_NUM_ICON_SETS; IconSet++) { - fprintf (Gbl.F.Out,"", + fprintf (Gbl.F.Out,"", IconSet == Gbl.Prefs.IconSet ? "LAYOUT_ON" : "LAYOUT_OFF"); Act_FormStart (ActChgIco); Par_PutHiddenParamString ("IconSet",Ico_IconSetId[IconSet]); fprintf (Gbl.F.Out,"" + " alt=\"%s\" title=\"%s\" class=\"ICON32x32B\"" + " style=\"margin:0 auto;\" />" "" "", Gbl.Prefs.IconsURL, diff --git a/swad_layout.c b/swad_layout.c index 417a685a7..2a65e6ad4 100644 --- a/swad_layout.c +++ b/swad_layout.c @@ -2033,13 +2033,14 @@ void Lay_PutIconsToSelectLayout (void) Layout < Lay_NUM_LAYOUTS; Layout++) { - fprintf (Gbl.F.Out,"", + fprintf (Gbl.F.Out,"", Layout == Gbl.Prefs.Layout ? "LAYOUT_ON" : "LAYOUT_OFF"); Act_FormStart (ActChgLay); Par_PutHiddenParamUnsigned ("Layout",(unsigned) Layout); fprintf (Gbl.F.Out,"" + " alt=\"%s\" title=\"%s\" class=\"ICON32x32B\"" + " style=\"margin:0 auto;\" />" "" "", Gbl.Prefs.IconsURL, diff --git a/swad_notification.c b/swad_notification.c index 9dac45272..439bd7204 100644 --- a/swad_notification.c +++ b/swad_notification.c @@ -1648,7 +1648,7 @@ void Ntf_MarkAllNotifAsSeen (void) void Ntf_PutFormChangeNotifSentByEMail (void) { extern const char *The_ClassFormul[The_NUM_THEMES]; - extern const char *Txt_Change_preferences; + extern const char *Txt_Save_changes; extern const char *Txt_Notifications; extern const char *Txt_Create_BR_notification; extern const char *Txt_Notify_me_BR_by_e_mail; @@ -1705,7 +1705,7 @@ void Ntf_PutFormChangeNotifSentByEMail (void) /***** End form *****/ fprintf (Gbl.F.Out,""); - Lay_PutSendButton (Txt_Change_preferences); + Lay_PutSendButton (Txt_Save_changes); fprintf (Gbl.F.Out,""); /***** End table *****/ diff --git a/swad_photo.c b/swad_photo.c index 4a40c956b..0d82c20c0 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -79,12 +79,12 @@ const char *Pho_StrAvgPhotoPrograms[Pho_NUM_AVERAGE_PHOTO_TYPES] = /*****************************************************************************/ static void Pho_PutLinkToRemoveUsrPhoto (const struct UsrData *UsrDat); - static void Pho_UpdatePhoto1 (struct UsrData *UsrDat); static void Pho_UpdatePhoto2 (void); - static void Pho_ClearPhotoName (long UsrCod); +static void Pho_PutFormPublicPhoto (void); + static long Pho_GetDegWithAvgPhotoLeastRecentlyUpdated (void); static long Pho_GetTimeAvgPhotoWasComputed (long DegCod); static long Pho_GetTimeToComputeAvgPhoto (long DegCod); @@ -137,7 +137,7 @@ bool Pho_CheckIfICanChangeOtherUsrPhoto (long UsrCod) } /*****************************************************************************/ -/********* Put a link to the action used to request user's photo *************/ +/********** Put a link to the action used to request user's photo ************/ /*****************************************************************************/ void Pho_PutLinkToChangeUsrPhoto (const struct UsrData *UsrDat) @@ -178,7 +178,6 @@ static void Pho_PutLinkToRemoveUsrPhoto (const struct UsrData *UsrDat) extern const char *Txt_Remove_photo; /***** Link for changing / uploading the photo *****/ - fprintf (Gbl.F.Out,"
"); if (UsrDat->UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) // It's me Act_FormStart (ActRemMyPho); else // Not me @@ -189,8 +188,7 @@ static void Pho_PutLinkToRemoveUsrPhoto (const struct UsrData *UsrDat) Act_LinkFormSubmit (Txt_Remove_photo,The_ClassFormul[Gbl.Prefs.Theme]); Lay_PutSendIcon ("delon",Txt_Remove_photo,Txt_Remove_photo); - fprintf (Gbl.F.Out,"" - "
"); + fprintf (Gbl.F.Out,""); } /*****************************************************************************/ @@ -236,14 +234,18 @@ void Pho_ReqPhoto (const struct UsrData *UsrDat,bool PhotoExists,const char *Pho /***** Write message about photo presence or ausence *****/ if (PhotoExists) // User has photo { - Pho_PutLinkToRemoveUsrPhoto (UsrDat); // Link (form) to remove photo + /***** Forms to remove photo and make it public *****/ + fprintf (Gbl.F.Out,"
"); + Pho_PutLinkToRemoveUsrPhoto (UsrDat); + Pho_PutFormPublicPhoto (); + fprintf (Gbl.F.Out,"
"); /* Show photo */ Pho_ShowUsrPhoto (UsrDat,PhotoURL,"PHOTO150x200",true); } Lay_ShowAlert (Lay_INFO,Txt_You_can_send_a_file_with_an_image_in_jpg_format_); - /***** Write a form to send photo *****/ + /***** Form to send photo *****/ if (ItsMe) Act_FormStart (ActDetMyPho); else @@ -1006,6 +1008,62 @@ void Pho_ShowUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL, fprintf (Gbl.F.Out," />"); } +/*****************************************************************************/ +/*********************** Select public / private photo ***********************/ +/*****************************************************************************/ + +static void Pho_PutFormPublicPhoto (void) + { + extern const char *The_ClassFormul[The_NUM_THEMES]; + extern const char *Txt_Public_photo; + + /***** Start form *****/ + Act_FormStart (ActChgPubPho); + + /***** Checkbox to select between public or private photo *****/ + fprintf (Gbl.F.Out,"" + "%s", + Gbl.FormId, + The_ClassFormul[Gbl.Prefs.Theme],Txt_Public_photo); + + /***** End form *****/ + fprintf (Gbl.F.Out,""); + } + +/*****************************************************************************/ +/********** Get parameter with public / private photo from form **************/ +/*****************************************************************************/ + +bool Pho_GetParamPublicPhoto (void) + { + char YN[1+1]; + + Par_GetParToText ("PublicPhoto",YN,1); + return (Str_ConvertToUpperLetter (YN[0]) == 'Y'); + } + +/*****************************************************************************/ +/*********************** Change public / private photo ***********************/ +/*****************************************************************************/ + +void Pho_ChangePublicPhoto (void) + { + char Query[512]; + + /***** Get param with public/private photo *****/ + Gbl.Usrs.Me.UsrDat.PublicPhoto = Pho_GetParamPublicPhoto (); + + /***** Store public/private photo in database *****/ + sprintf (Query,"UPDATE usr_data SET PublicPhoto='%c' WHERE UsrCod='%ld'", + Gbl.Usrs.Me.UsrDat.PublicPhoto ? 'Y' : + 'N', + Gbl.Usrs.Me.UsrDat.UsrCod); + DB_QueryUPDATE (Query,"can not update your preference about public photo"); + } + /*****************************************************************************/ /******** Calculate average photos of all students from each degree **********/ /*****************************************************************************/ diff --git a/swad_photo.h b/swad_photo.h index e88141c63..e7ed0a40a 100644 --- a/swad_photo.h +++ b/swad_photo.h @@ -101,6 +101,9 @@ void Pho_UpdatePhotoName (struct UsrData *UsrDat); void Pho_ShowUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL, const char *ClassPhoto,bool Zoom); +bool Pho_GetParamPublicPhoto (void); +void Pho_ChangePublicPhoto (void); + void Pho_CalcPhotoDegree (void); void Pho_RemoveObsoleteStatDegrees (void); void Pho_ShowPhotoDegree (void); diff --git a/swad_preference.c b/swad_preference.c index 6f97e9f6d..fc532d594 100644 --- a/swad_preference.c +++ b/swad_preference.c @@ -54,7 +54,6 @@ extern struct Globals Gbl; /*****************************************************************************/ static void Prf_UpdateSideColsOnUsrDataTable (void); -static void Prf_PutFormPublicPhoto (void); /*****************************************************************************/ /***************************** Edit preferences ******************************/ @@ -75,7 +74,7 @@ void Prf_EditPrefs (void) ""); Lay_EndRoundFrameTable10 (); - /***** Layout & icons *****/ + /***** Layout, icons, theme & side columns *****/ fprintf (Gbl.F.Out,"" "" "" - "" - "
"); @@ -84,12 +83,6 @@ void Prf_EditPrefs (void) ""); Ico_PutIconsToSelectIconSet (); fprintf (Gbl.F.Out,"
"); - - /***** Theme & side colums *****/ - fprintf (Gbl.F.Out,"" - "" "" @@ -101,9 +94,6 @@ void Prf_EditPrefs (void) if (Gbl.Usrs.Me.Logged) { - /***** Public / private photo *****/ - Prf_PutFormPublicPhoto (); - /***** Automatic e-mail to notify of new events *****/ Ntf_PutFormChangeNotifSentByEMail (); @@ -342,14 +332,14 @@ void Prf_PutIconsToSelectSideCols (void) SideCols <= Lay_SHOW_BOTH_COLUMNS; SideCols++) { - fprintf (Gbl.F.Out,"", Gbl.Prefs.IconsURL, @@ -529,65 +519,3 @@ unsigned Prf_GetParamSideCols (void) return UnsignedNum; } - -/*****************************************************************************/ -/*********************** Select public / private photo ***********************/ -/*****************************************************************************/ - -static void Prf_PutFormPublicPhoto (void) - { - extern const char *The_ClassFormul[The_NUM_THEMES]; - extern const char *Txt_Public_photo; - - /***** Start form *****/ - Lay_StartRoundFrameTable10 (NULL,2,Txt_Public_photo); - fprintf (Gbl.F.Out,"" - "" - ""); - Lay_EndRoundFrameTable10 (); - } - -/*****************************************************************************/ -/********** Get parameter with public / private photo from form **************/ -/*****************************************************************************/ - -bool Prf_GetParamPublicPhoto (void) - { - char YN[1+1]; - - Par_GetParToText ("PublicPhoto",YN,1); - return (Str_ConvertToUpperLetter (YN[0]) == 'Y'); - } - -/*****************************************************************************/ -/*********************** Change public / private photo ***********************/ -/*****************************************************************************/ - -void Prf_ChangePublicPhoto (void) - { - char Query[512]; - - /***** Get param with public/private photo *****/ - Gbl.Usrs.Me.UsrDat.PublicPhoto = Prf_GetParamPublicPhoto (); - - /***** Store public/private photo in database *****/ - sprintf (Query,"UPDATE usr_data SET PublicPhoto='%c' WHERE UsrCod='%ld'", - Gbl.Usrs.Me.UsrDat.PublicPhoto ? 'Y' : - 'N', - Gbl.Usrs.Me.UsrDat.UsrCod); - DB_QueryUPDATE (Query,"can not update your preference about public photo"); - } diff --git a/swad_preference.h b/swad_preference.h index 15d7d23b2..7ee903c2c 100644 --- a/swad_preference.h +++ b/swad_preference.h @@ -60,7 +60,4 @@ void Prf_ShowLeftCol (void); void Prf_ShowRightCol (void); unsigned Prf_GetParamSideCols (void); -bool Prf_GetParamPublicPhoto (void); -void Prf_ChangePublicPhoto (void); - #endif diff --git a/swad_record.c b/swad_record.c index af6f30a21..7c5feea2c 100644 --- a/swad_record.c +++ b/swad_record.c @@ -1862,7 +1862,7 @@ void Rec_ShowFormMyCommRecord (void) extern const char *Txt_Before_going_to_any_other_option_you_must_fill_your_record_card_including_your_sex; extern const char *Txt_Before_going_to_any_other_option_you_must_fill_your_record_card_including_your_name; extern const char *Txt_Before_going_to_any_other_option_you_must_fill_your_record_card_including_your_country_nationality; - extern const char *Txt_Save; + extern const char *Txt_Save_changes; /***** If user has no sex, name and surname... *****/ if (Gbl.Usrs.Me.UsrDat.Sex == Usr_SEX_UNKNOWN) @@ -1882,7 +1882,7 @@ void Rec_ShowFormMyCommRecord (void) /***** My record *****/ Act_FormStart (ActChgMyData); Rec_ShowCommonRecord (Rec_FORM_MY_COMMON_RECORD,&Gbl.Usrs.Me.UsrDat); - Lay_PutSendButton (Txt_Save); + Lay_PutSendButton (Txt_Save_changes); Rec_WriteLinkToDataProtectionClause (); fprintf (Gbl.F.Out,"" ""); @@ -2979,7 +2979,7 @@ void Rec_GetUsrExtraDataFromRecordForm (struct UsrData *UsrDat) UsrDat->Sex = (Usr_Sex_t) UnsignedNum; /***** Get whether photo is public from form *****/ - UsrDat->PublicPhoto = Prf_GetParamPublicPhoto (); + UsrDat->PublicPhoto = Pho_GetParamPublicPhoto (); /***** Get country code *****/ Par_GetParToText ("OthCtyCod",LongStr,1+10); diff --git a/swad_text.c b/swad_text.c index b320f6a59..0fb0d453a 100644 --- a/swad_text.c +++ b/swad_text.c @@ -16247,7 +16247,7 @@ const char *Txt_MENU_TITLE[Act_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==1 "Dokumente" #elif L==2 - "Documents area" + "Documents" #elif L==3 "Documentos" #elif L==4 @@ -17283,7 +17283,7 @@ const char *Txt_MENU_TITLE[Act_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==1 "Aktentasche" #elif L==2 - "Virtual pendrive" + "Briefcase" #elif L==3 "Maletín" #elif L==4 @@ -17291,9 +17291,9 @@ const char *Txt_MENU_TITLE[Act_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==5 "Maletín" // Okoteve traducción #elif L==6 - "Penna USB" + "Cartella" #elif L==7 - "Pendrive" + "Teczka" #elif L==8 "Pasta" #endif @@ -32006,6 +32006,27 @@ const char *Txt_Save = "Salvar"; #endif +const char *Txt_Save_changes = +#if L==0 + "Desar canvis"; +#elif L==1 + "Änderungen speichern"; +#elif L==2 + "Save changes"; +#elif L==3 + "Guardar cambios"; +#elif L==4 + "Enregistrer les modifications"; +#elif L==5 + "Ñongatu"; +#elif L==6 + "Salva modifiche"; +#elif L==7 + "Zapisz zmiany"; +#elif L==8 + "Salvar alterações"; +#endif + const char *Txt_Save_file_properties = #if L==0 "Guardar les propietats del fitxer"; @@ -41805,17 +41826,17 @@ const char *Txt_The_ZIP_file_has_been_unzipped_successfully = const char *Txt_Theme_SKIN = #if L==0 - "Tema (colors)"; + "Tema"; #elif L==1 "Skin"; #elif L==2 "Theme"; #elif L==3 - "Tema (colores)"; + "Tema"; #elif L==4 "Thème"; #elif L==5 - "Tema (colores)"; // Okoteve traducción + "Tema"; // Okoteve traducción #elif L==6 "Tema"; #elif L==7 diff --git a/swad_theme.c b/swad_theme.c index c679df05d..a2d3c3335 100644 --- a/swad_theme.c +++ b/swad_theme.c @@ -239,14 +239,14 @@ void The_PutIconsToSelectTheme (void) Theme < The_NUM_THEMES; Theme++) { - fprintf (Gbl.F.Out,"", Gbl.Prefs.IconsURL,
"); The_PutIconsToSelectTheme (); fprintf (Gbl.F.Out,"", + fprintf (Gbl.F.Out,"", SideCols == Gbl.Prefs.SideCols ? "LAYOUT_ON" : "LAYOUT_OFF"); Act_FormStart (ActChgCol); Par_PutHiddenParamUnsigned ("SideCols",SideCols); fprintf (Gbl.F.Out,"" + " alt=\"%s\" title=\"%s\" style=\"display:block;" + " width:32px; height:20px; margin:0 auto;\" />" "" "
", - The_ClassFormul[Gbl.Prefs.Theme]); - Act_FormStart (ActChgPubPho); - - /***** Checkbox to select between public or private photo *****/ - fprintf (Gbl.F.Out,"", - Gbl.FormId); - fprintf (Gbl.F.Out,"%s",Txt_Public_photo); - - /***** End form *****/ - fprintf (Gbl.F.Out,"" - "
", + fprintf (Gbl.F.Out,"", Theme == Gbl.Prefs.Theme ? "LAYOUT_ON" : "LAYOUT_OFF"); Act_FormStart (ActChgThe); Par_PutHiddenParamString ("Theme",The_ThemeId[Theme]); fprintf (Gbl.F.Out,"" + " width:32px; height:20px; margin:0 auto;\" />" "" "