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,""
- ""
"");
The_PutIconsToSelectTheme ();
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,"",
+ 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;\" />"
""
" ",
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," "
- "",
- 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,""
- " "
- " ");
- 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,"",
+ 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;\" />"
""
" ",
Gbl.Prefs.IconsURL,