diff --git a/swad_changelog.h b/swad_changelog.h index 5391b93b2..61ac3ddf9 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -103,11 +103,12 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 14.117.13 (2015/07/22)" +#define Log_PLATFORM_VERSION "SWAD 14.117.14 (2015/07/22)" // 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 /* + Version 14.117.14:Jul 22, 2015 Checking "alt" and "title" in all images. (185203 lines) Version 14.117.13:Jul 22, 2015 Checking "alt" and "title" in all images. Removed unused function about mail domains. (185153 lines) Version 14.117.12:Jul 22, 2015 Checking "alt" and "title" in all images. (185213 lines) diff --git a/swad_network.c b/swad_network.c index 90cd3f91a..6488ecdcb 100644 --- a/swad_network.c +++ b/swad_network.c @@ -202,11 +202,13 @@ static void Net_ShowAWebOrSocialNet (const char *URL, " style=\"display:inline;\">" "" "\"%s\"" + " alt=\"%s\" title=\"%s\"" + " style=\"width:16px; height:16px; margin:0 1px;\" />" "" "", URL,Title, - Gbl.Prefs.IconsURL,Icon,Title); + Gbl.Prefs.IconsURL,Icon, + Title,Title); } /*****************************************************************************/ @@ -259,14 +261,16 @@ void Net_ShowFormMyWebsAndSocialNets (void) fprintf (Gbl.F.Out,"" "" "\"\"" + " alt=\"%s\" title=\"%s\"" + " style=\"width:16px; height:16px;" + " margin-right:10px; vertical-align:middle;\" />" "%s:" "", ClassForm, Gbl.Prefs.IconsURL,Net_WebsAndSocialNetworksDB[NumURL], Net_TitleWebsAndSocialNetworks[NumURL], Net_TitleWebsAndSocialNetworks[NumURL], + Net_TitleWebsAndSocialNetworks[NumURL], Net_COL2_WIDTH); Act_FormStart (ActChgMyNet); Par_PutHiddenParamUnsigned ("Web",(unsigned) NumURL); @@ -475,8 +479,9 @@ void Net_ShowWebAndSocialNetworksStats (void) fprintf (Gbl.F.Out,"" "" "\"\"" + " alt=\"%s\" title=\"%s\"" + " style=\"width:16px; height:16px;" + " margin:0 2px; vertical-align:middle;\" />" "%s" "" "%u" @@ -488,6 +493,7 @@ void Net_ShowWebAndSocialNetworksStats (void) Gbl.Prefs.IconsURL,Net_WebsAndSocialNetworksDB[Web], Net_TitleWebsAndSocialNetworks[Web], Net_TitleWebsAndSocialNetworks[Web], + Net_TitleWebsAndSocialNetworks[Web], NumUsrs, NumUsrsTotalInPlatform ? 100.0 * (float) NumUsrs / (float) NumUsrsTotalInPlatform : 0.0); diff --git a/swad_notice.c b/swad_notice.c index 15a7bf03e..f832f6bc2 100644 --- a/swad_notice.c +++ b/swad_notice.c @@ -404,7 +404,8 @@ void Not_ShowNotices (Not_Listing_t TypeNoticesListing) RSS_WriteRSSLink (Gbl.F.Out,Gbl.CurrentCrs.Crs.CrsCod); fprintf (Gbl.F.Out,"\" target=\"_blank\">" "\"RSS\"" + " alt=\"RSS\" title=\"RSS\"" + " class=\"ICON16x16\" />" "" "", Gbl.Prefs.IconsURL); @@ -520,19 +521,22 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing, case Not_ACTIVE_NOTICE: fprintf (Gbl.F.Out,"" "\"%s\"" + " alt=\"%s\" title=\"%s\" class=\"ICON16x16\" />" "", Txt_NOTICE_Active_SINGULAR, Gbl.Prefs.IconsURL, + Txt_NOTICE_Active_SINGULAR, Txt_NOTICE_Active_SINGULAR); break; case Not_OBSOLETE_NOTICE: fprintf (Gbl.F.Out,"" "\"%s\"" + " alt=\"%s\" title=\"%s\"" + " class=\"ICON16x16\" />" "", Txt_NOTICE_Obsolete_SINGULAR, Gbl.Prefs.IconsURL, + Txt_NOTICE_Obsolete_SINGULAR, Txt_NOTICE_Obsolete_SINGULAR); break; } @@ -568,9 +572,11 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing, Not_PutHiddenParamNotCod (NotCod); Act_LinkFormSubmit (Txt_See_full_notice,The_ClassFormul[Gbl.Prefs.Theme]); fprintf (Gbl.F.Out,"\"%s\"" + " alt=\"%s\" title=\"%s\"" + " class=\"ICON32x32\" />" "", Gbl.Prefs.IconsURL, + Txt_See_full_notice, Txt_See_full_notice); Act_FormEnd (); fprintf (Gbl.F.Out,""); @@ -597,11 +603,12 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing, Not_PutHiddenParamNotCod (NotCod); Act_LinkFormSubmit (Txt_Remove_notice,The_ClassFormul[Gbl.Prefs.Theme]); fprintf (Gbl.F.Out,"\"%s\"" + " alt=\"%s\" title=\"%s\"" + " class=\"ICON16x16\" />" " %s", Gbl.Prefs.IconsURL, Txt_Remove_notice, - Txt_Remove); + Txt_Remove,Txt_Remove_notice); Act_FormEnd (); fprintf (Gbl.F.Out,""); diff --git a/swad_notification.c b/swad_notification.c index dbbc0c492..616829368 100644 --- a/swad_notification.c +++ b/swad_notification.c @@ -441,10 +441,12 @@ void Ntf_ShowMyNotifications (void) Act_FormEnd (); } else - fprintf (Gbl.F.Out,"\"%s\""", Gbl.Prefs.IconsURL, Ntf_Icons[NotifyEvent], + Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent], Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent]); fprintf (Gbl.F.Out,""); @@ -1803,6 +1805,7 @@ void Ntf_WriteNumberOfNewNtfs (void) extern const char *Txt_See_notifications; extern const char *Txt_notification; extern const char *Txt_notifications; + extern const char *Txt_Notifications; extern const char *Txt_NOTIF_new_SINGULAR; extern const char *Txt_NOTIF_new_PLURAL; unsigned NumUnseenNtfs; @@ -1831,14 +1834,17 @@ void Ntf_WriteNumberOfNewNtfs (void) /***** Icon *****/ fprintf (Gbl.F.Out,"
" "\"%s\" ", - Gbl.Prefs.PathTheme); + Gbl.Prefs.PathTheme, + Txt_Notifications, + Txt_Notifications); /***** Number of new notifications *****/ if (NumNewNtfs == 1) fprintf (Gbl.F.Out,"1 %s", - Txt_NOTIF_new_SINGULAR); + Txt_NOTIF_new_SINGULAR); else fprintf (Gbl.F.Out,"%u %s", NumNewNtfs, diff --git a/swad_photo.c b/swad_photo.c index 062d4e9ec..f73db36bd 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -422,6 +422,7 @@ void Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat) 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_Y_Z_; + extern const char *Txt_Faces_detected; char PathPhotosPriv[PATH_MAX+1]; char PathPhotosPubl[PATH_MAX+1]; char PathPhotosTmpPubl[PATH_MAX+1]; @@ -634,9 +635,13 @@ void Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *UsrDat) sprintf (FileNamePhotoMap,"%s/%s/%s/%s_map.jpg", Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP,Gbl.UniqueNameEncrypted); fprintf (Gbl.F.Out,"
" - "" + "\"%s\"" "
", - Cfg_HTTPS_URL_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP,Gbl.UniqueNameEncrypted); + Cfg_HTTPS_URL_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP, + Gbl.UniqueNameEncrypted, + Txt_Faces_detected,Txt_Faces_detected); } /*****************************************************************************/ @@ -726,11 +731,14 @@ static void Pho_UpdatePhoto2 (void) fprintf (Gbl.F.Out,"" "\"%s\"" "
%s" "", Cfg_HTTPS_URL_SWAD_PUBLIC,Cfg_FOLDER_PHOTO,Cfg_FOLDER_PHOTO_TMP, Gbl.Usrs.FileNamePhoto,NumPhoto + 1, + Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto], + Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto], Pho_PHOTO_REAL_WIDTH,Pho_PHOTO_REAL_HEIGHT, Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto]); fprintf (Gbl.F.Out,"" @@ -1021,10 +1029,10 @@ void Pho_ShowUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL, fprintf (Gbl.F.Out,"%s",PhotoURL); else fprintf (Gbl.F.Out,"%s/usr_bl.jpg",Gbl.Prefs.IconsURL); - fprintf (Gbl.F.Out,"\" class=\"%s\"",ClassPhoto); - if (SpecialFullName[0] && - Act_Actions[Gbl.CurrentAct].BrowserWindow == Act_MAIN_WINDOW) // Only in main window - fprintf (Gbl.F.Out," title=\"%s\"",SpecialFullName); + fprintf (Gbl.F.Out,"\" alt=\"%s\" title=\"%s\"" + " class=\"%s\"", + SpecialFullName,SpecialFullName, + ClassPhoto); /***** Image zoom *****/ if (PutZoomCode) @@ -2216,7 +2224,9 @@ static void Pho_ShowDegreeAvgPhotoAndStat (struct Degree *Deg,Pho_AvgPhotoSeeOrP fprintf (Gbl.F.Out,"%s/usr_bl.jpg\"" " style=\"width:%upx; height:%upx;\"", Gbl.Prefs.IconsURL,PhotoWidth,PhotoHeight); - fprintf (Gbl.F.Out," alt=\"%s\" />",Deg->FullName); + fprintf (Gbl.F.Out," alt=\"%s\" title=\"%s\" />", + Deg->ShortName, + Deg->FullName); if (SeeOrPrint == Pho_DEGREES_PRINT) fprintf (Gbl.F.Out,""); fprintf (Gbl.F.Out,"
%s
%d %s
%d %s
(%d%%)", diff --git a/swad_text.c b/swad_text.c index bc0261e95..1b758502b 100644 --- a/swad_text.c +++ b/swad_text.c @@ -10794,6 +10794,27 @@ const char *Txt_X_faces_marked_in_red_have_been_detected_ = // Warning: it is ve " but the background behind the heads is too dark."; // Necessita de tradução #endif +const char *Txt_Faces_detected = +#if L==0 + "Rostros detectados"; // Necessita traduccio +#elif L==1 + "Faces detected"; // Need Übersetzung +#elif L==2 + "Faces detected"; +#elif L==3 + "Rostros detectados"; +#elif L==4 + "Faces detected"; // Besoin de traduction +#elif L==5 + "Rostros detectados"; // Okoteve traducción +#elif L==6 + "Faces detected"; // Bisogno di traduzione +#elif L==7 + "Faces detected"; // Potrzebujesz tlumaczenie +#elif L==8 + "Faces detected"; // Necessita de tradução +#endif + const char *Txt_Failed_email_confirmation_key = #if L==0 "Error en la clave de confirmación de correo."; // Necessita traduccio