diff --git a/swad_QR.c b/swad_QR.c
index eedb83caa..9ba86dea9 100644
--- a/swad_QR.c
+++ b/swad_QR.c
@@ -109,14 +109,17 @@ static void QR_ImageQRCode (const char *QRString)
{
fprintf (Gbl.F.Out,"
"
"
![\"%s\"](\"https://chart.googleapis.com/chart?cht=qr&chs=%ux%u&chl=%s\"")
"
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:%upx; height:%upx;"
+ " border:1px dashed silver;\" />"
+ "
"
"
%s"
"
",
QR_CODE_SIZE,
QR_CODE_SIZE,QR_CODE_SIZE,
QRString,
QRString,
+ QRString,
QR_CODE_SIZE,QR_CODE_SIZE,
QRString);
}
@@ -132,10 +135,12 @@ void QR_LinkTo (unsigned Size,const char *ParamStr,long Cod)
/***** Show QR code with direct link to the current centre *****/
fprintf (Gbl.F.Out,"
",
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:%upx; height:%upx;\" />",
Size,Size,
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],ParamStr,Cod,
Txt_Shortcut,
+ Txt_Shortcut,
Size,Size);
}
@@ -150,9 +155,11 @@ void QR_ExamAnnnouncement (void)
/***** Show QR code with direct link to the exam announcement *****/
fprintf (Gbl.F.Out,""
"
![\"%s\"](\"https://chart.googleapis.com/chart?cht=qr&chs=%ux%u&chl=%s/?crs=%ld%%26act=%ld\"")
"
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:200px; height:200px;\" />"
"
",
200,200,
Cfg_HTTPS_URL_SWAD_CGI,Gbl.CurrentCrs.Crs.CrsCod,Act_Actions[ActSeeExaAnn].ActCod,
+ Txt_Link_to_announcement_of_exam,
Txt_Link_to_announcement_of_exam);
}
diff --git a/swad_changelog.h b/swad_changelog.h
index 61ac3ddf9..19ddf767b 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -103,11 +103,12 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 14.117.14 (2015/07/22)"
+#define Log_PLATFORM_VERSION "SWAD 14.117.15 (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.15:Jul 22, 2015 Checking "alt" and "title" in all images. (185279 lines)
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)
diff --git a/swad_place.c b/swad_place.c
index ecfb8895c..43f3f5651 100644
--- a/swad_place.c
+++ b/swad_place.c
@@ -408,6 +408,7 @@ void Plc_FreeListPlaces (void)
static void Plc_ListPlacesForEdition (void)
{
extern const char *Txt_Places;
+ extern const char *Txt_Removal_not_allowed;
extern const char *Txt_Remove_place;
unsigned NumPlc;
struct Place *Plc;
@@ -429,7 +430,9 @@ static void Plc_ListPlacesForEdition (void)
"");
if (Plc->NumCtrs) // Place has centres ==> deletion forbidden
fprintf (Gbl.F.Out," ",
+ " alt=\"%s\" title=\"%s\""
+ " class=\"ICON16x16\" />",
+ Txt_Removal_not_allowed,Txt_Removal_not_allowed,
Gbl.Prefs.IconsURL);
else
{
diff --git a/swad_plugin.c b/swad_plugin.c
index a337f7440..34e49ebea 100644
--- a/swad_plugin.c
+++ b/swad_plugin.c
@@ -121,7 +121,8 @@ void Plg_ListPlugins (void)
" | "
""
- " "
""
" | "
@@ -132,7 +133,8 @@ void Plg_ListPlugins (void)
""
"",
URL,Plg->Name,
- Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_PLUGINS,Gbl.Plugins.Lst[NumPlg].Logo,Plg->Name,
+ Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_PLUGINS,Gbl.Plugins.Lst[NumPlg].Logo,
+ Plg->Name,Plg->Name,
URL,Plg->Name,
Plg->Name);
}
@@ -386,11 +388,14 @@ static void Plg_ListPluginsForEdition (void)
/* Plugin logo */
fprintf (Gbl.F.Out,""
- " "
" | ",
Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_PLUGINS,
- Gbl.Plugins.Lst[NumPlg].Logo,Gbl.Plugins.Lst[NumPlg].Name);
+ Gbl.Plugins.Lst[NumPlg].Logo,
+ Gbl.Plugins.Lst[NumPlg].Name,
+ Gbl.Plugins.Lst[NumPlg].Name);
/* Plugin name */
fprintf (Gbl.F.Out,"UsrCod,Rol_TEACHER,Rol_STUDENT);
fprintf (Gbl.F.Out," | "
""
- " "
" | "
""
@@ -355,6 +356,7 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
" |
",
Gbl.Prefs.IconsURL,
Txt_ROLES_SINGUL_Abc[Rol_TEACHER][UsrDat->Sex],
+ Txt_ROLES_SINGUL_Abc[Rol_TEACHER][UsrDat->Sex],
NumCrssUsrIsTeacher,
(NumCrssUsrIsTeacher == 1) ? Txt_course :
Txt_courses,
@@ -369,7 +371,8 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
NumStds = Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_STUDENT,Rol_STUDENT);
fprintf (Gbl.F.Out,""
""
- " "
" | "
""
@@ -379,6 +382,7 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
" |
",
Gbl.Prefs.IconsURL,
Txt_ROLES_SINGUL_Abc[Rol_STUDENT][UsrDat->Sex],
+ Txt_ROLES_SINGUL_Abc[Rol_STUDENT][UsrDat->Sex],
NumCrssUsrIsStudent,
(NumCrssUsrIsStudent == 1) ? Txt_course :
Txt_courses,
@@ -395,7 +399,8 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
NumPublicFiles = 0;
fprintf (Gbl.F.Out,""
""
- " "
" | "
""
@@ -405,6 +410,7 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
" |
",
Gbl.Prefs.IconsURL,
Txt_Files,
+ Txt_Files,
NumFiles,
(NumFiles == 1) ? Txt_file :
Txt_files,
@@ -416,11 +422,13 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
/* First click time */
fprintf (Gbl.F.Out,""
""
- " "
" | "
"",
Gbl.Prefs.IconsURL,
+ Txt_From_TIME,
Txt_From_TIME);
if (UsrFigures.FirstClickTime.Date.Year)
{
@@ -449,11 +457,13 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
/* Number of clicks */
fprintf (Gbl.F.Out," |
"
""
- " "
" | "
"",
Gbl.Prefs.IconsURL,
+ Txt_Clicks,
Txt_Clicks);
if (UsrFigures.NumClicks >= 0)
@@ -488,11 +498,13 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
/***** Number of file views *****/
fprintf (Gbl.F.Out," |
"
""
- " "
" | "
"",
Gbl.Prefs.IconsURL,
+ Txt_Downloads,
Txt_Downloads);
if (UsrFigures.NumFileViews >= 0)
{
@@ -525,11 +537,13 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
/***** Number of posts in forums *****/
fprintf (Gbl.F.Out," |
"
""
- " "
" | "
"",
Gbl.Prefs.IconsURL,
+ Txt_Forums,
Txt_Forums);
if (UsrFigures.NumForPst >= 0)
{
@@ -562,11 +576,13 @@ static void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
/***** Number of messages sent *****/
fprintf (Gbl.F.Out," |
"
""
- " "
" | "
"",
Gbl.Prefs.IconsURL,
+ Txt_Messages,
Txt_Messages);
if (UsrFigures.NumMsgSnt >= 0)
{
diff --git a/swad_record.c b/swad_record.c
index 099ba2209..7f270cec9 100644
--- a/swad_record.c
+++ b/swad_record.c
@@ -268,6 +268,7 @@ void Rec_ListFieldsRecordsForEdition (void)
void Rec_ShowFormCreateRecordField (void)
{
extern const char *Txt_New_record_field;
+ extern const char *Txt_Removal_not_allowed;
extern const char *Txt_RECORD_FIELD_VISIBILITY_MENU[Rec_NUM_TYPES_VISIBILITY];
extern const char *Txt_Create_record_field;
Rec_VisibilityRecordFields_t Vis;
@@ -285,9 +286,12 @@ void Rec_ShowFormCreateRecordField (void)
fprintf (Gbl.F.Out," |
"
""
" "
+ " alt=\"%s\" title=\"%s\""
+ " class=\"ICON16x16\" />"
" | ",
- Gbl.Prefs.IconsURL);
+ Gbl.Prefs.IconsURL,
+ Txt_Removal_not_allowed,
+ Txt_Removal_not_allowed);
/***** Field name *****/
fprintf (Gbl.F.Out,""
@@ -1352,12 +1356,14 @@ static void Rec_WriteFormShowOfficeHours (bool ShowOfficeHours,const char *ListU
fprintf (Gbl.F.Out," style=\"vertical-align:middle;\""
" onclick=\"javascript:document.getElementById('%s').submit();\" />"
" "
+ " alt=\"%s\" title=\"%s\""
+ " class=\"ICON16x16\" />"
" %s"
"",
Gbl.FormId,
Gbl.Prefs.IconsURL,
Txt_Show_office_hours,
+ Txt_Show_office_hours,
The_ClassFormul[Gbl.Prefs.Theme],
Txt_Show_office_hours);
Act_FormEnd ();
@@ -2191,12 +2197,16 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
{
Act_FormStart (ActReqEdiRecCom);
Act_LinkFormSubmit (Txt_Edit_my_personal_data,NULL);
- fprintf (Gbl.F.Out,""
+ fprintf (Gbl.F.Out," "
" ![\"%s\"](\"%s/edit16x16.gif\"") "
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:16px; height:16px;"
+ " padding:0 2px;\" />"
" "
"",
Gbl.Prefs.IconsURL,
+ Txt_Edit,
Txt_Edit);
Act_FormEnd ();
}
@@ -2213,12 +2223,16 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
ActSeeRecOneTch);
Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod);
Act_LinkFormSubmit (Txt_View_record_for_this_course,NULL);
- fprintf (Gbl.F.Out," "
+ fprintf (Gbl.F.Out," "
" ![\"%s\"](\"%s/card16x16.gif\"") "
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:16px; height:16px;"
+ " padding:0 2px;\" />"
" "
"",
Gbl.Prefs.IconsURL,
+ Txt_View_record_for_this_course,
Txt_View_record_for_this_course);
Act_FormEnd ();
}
@@ -2234,12 +2248,16 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
Act_FormStart (ActReqMdfUsr);
Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod);
Act_LinkFormSubmit (Txt_Admin_user,NULL);
- fprintf (Gbl.F.Out," "
+ fprintf (Gbl.F.Out," "
" ![\"%s\"](\"%s/config16x16.gif\"") "
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:16px; height:16px;"
+ " padding:0 2px;\" />"
" "
"",
Gbl.Prefs.IconsURL,
+ Txt_Admin_user,
Txt_Admin_user);
Act_FormEnd ();
}
@@ -2259,12 +2277,16 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
Grp_PutParamAllGroups ();
Par_PutHiddenParamChar ("FullTree",'Y'); // By default, show all files
Act_LinkFormSubmit (Txt_View_works,ClassData);
- fprintf (Gbl.F.Out," "
+ fprintf (Gbl.F.Out," "
" ![\"%s\"](\"%s/folder16x16.gif\"") "
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:16px; height:16px;"
+ " padding:0 2px;\" />"
" "
"",
Gbl.Prefs.IconsURL,
+ Txt_View_works,
Txt_View_works);
Act_FormEnd ();
@@ -2278,12 +2300,16 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
}
Grp_PutParamAllGroups ();
Act_LinkFormSubmit (Txt_See_exams,ClassData);
- fprintf (Gbl.F.Out," "
+ fprintf (Gbl.F.Out," "
" ![\"%s\"](\"%s/file16x16.gif\"") "
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:16px; height:16px;"
+ " padding:0 2px;\" />"
" "
"",
Gbl.Prefs.IconsURL,
+ Txt_See_exams,
Txt_See_exams);
Act_FormEnd ();
@@ -2295,12 +2321,16 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
Par_PutHiddenParamString ("UsrCodStd",UsrDat->EncryptedUsrCod);
Grp_PutParamAllGroups ();
Act_LinkFormSubmit (Txt_Attendance,ClassData);
- fprintf (Gbl.F.Out," "
+ fprintf (Gbl.F.Out," "
" ![\"%s\"](\"%s/rollcall16x16.gif\"") "
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:16px; height:16px;"
+ " padding:0 2px;\" />"
" "
"",
Gbl.Prefs.IconsURL,
+ Txt_Attendance,
Txt_Attendance);
Act_FormEnd ();
}
@@ -2314,12 +2344,16 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
else
Msg_PutHiddenParamAnotherRecipient (UsrDat);
Act_LinkFormSubmit (Txt_Write_a_message,ClassData);
- fprintf (Gbl.F.Out," "
+ fprintf (Gbl.F.Out," "
" ![\"%s\"](\"%s/msg16x16.gif\"") "
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:16px; height:16px;"
+ " padding:0 2px;\" />"
" "
"",
Gbl.Prefs.IconsURL,
+ Txt_Write_a_message,
Txt_Write_a_message);
Act_FormEnd ();
@@ -2332,12 +2366,16 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
Act_FormStart (ActUnfUsr);
Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod);
Act_LinkFormSubmit (Txt_Unfollow,ClassData);
- fprintf (Gbl.F.Out," "
+ fprintf (Gbl.F.Out," "
" ![\"%s\"](\"%s/unfollow16x16.gif\"") "
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:16px; height:16px;"
+ " padding:0 2px;\" />"
" "
"",
Gbl.Prefs.IconsURL,
+ Txt_Unfollow,
Txt_Unfollow);
Act_FormEnd ();
}
@@ -2346,12 +2384,16 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
Act_FormStart (ActFolUsr);
Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod);
Act_LinkFormSubmit (Txt_Follow,ClassData);
- fprintf (Gbl.F.Out," "
+ fprintf (Gbl.F.Out," "
" ![\"%s\"](\"%s/follow16x16.gif\"") "
+ " alt=\"%s\" title=\"%s\""
+ " style=\"width:16px; height:16px;"
+ " padding:0 2px;\" />"
" "
"",
Gbl.Prefs.IconsURL,
+ Txt_Follow,
Txt_Follow);
Act_FormEnd ();
}
@@ -2617,11 +2659,13 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
if (Sex == Gbl.Usrs.Me.UsrDat.Sex)
fprintf (Gbl.F.Out," checked=\"checked\"");
fprintf (Gbl.F.Out," />"
- " ![\"%s\"" \"%s\""](\"%s/%s16x16.gif\") %s",
Gbl.Prefs.IconsURL,Usr_StringsSexDB[Sex],
Txt_SEX_SINGULAR_Abc[Sex],
+ Txt_SEX_SINGULAR_Abc[Sex],
Txt_SEX_SINGULAR_Abc[Sex]);
}
fprintf (Gbl.F.Out," | "