mirror of https://github.com/acanas/swad-core.git
Version19.46.10
This commit is contained in:
parent
245cdd8fbd
commit
79a6ae8d4a
|
@ -715,7 +715,11 @@ void HTM_IMG (const char *URL,const char *Icon,const char *Title,
|
||||||
int NumBytesPrinted;
|
int NumBytesPrinted;
|
||||||
char *Attr;
|
char *Attr;
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<img src=\"%s/%s\"",URL,Icon);
|
fprintf (Gbl.F.Out,"<img src=\"%s",URL);
|
||||||
|
if (Icon)
|
||||||
|
if (Icon[0])
|
||||||
|
fprintf (Gbl.F.Out,"/%s",Icon);
|
||||||
|
fprintf (Gbl.F.Out,"\"");
|
||||||
|
|
||||||
if (Title)
|
if (Title)
|
||||||
{
|
{
|
||||||
|
|
59
swad_QR.c
59
swad_QR.c
|
@ -25,6 +25,9 @@
|
||||||
/*********************************** Headers *********************************/
|
/*********************************** Headers *********************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#define _GNU_SOURCE // For asprintf
|
||||||
|
#include <stdio.h> // For asprintf
|
||||||
|
|
||||||
#include "swad_action.h"
|
#include "swad_action.h"
|
||||||
#include "swad_global.h"
|
#include "swad_global.h"
|
||||||
#include "swad_HTML.h"
|
#include "swad_HTML.h"
|
||||||
|
@ -105,17 +108,19 @@ void QR_PrintQRCode (void)
|
||||||
|
|
||||||
void QR_ImageQRCode (const char *QRString)
|
void QR_ImageQRCode (const char *QRString)
|
||||||
{
|
{
|
||||||
|
char *URL;
|
||||||
|
|
||||||
HTM_DIV_Begin ("class=\"CM\" style=\"margin:0 auto; width:%upx;\"",
|
HTM_DIV_Begin ("class=\"CM\" style=\"margin:0 auto; width:%upx;\"",
|
||||||
QR_CODE_SIZE);
|
QR_CODE_SIZE);
|
||||||
fprintf (Gbl.F.Out,"<img src=\"https://chart.googleapis.com/chart?cht=qr&chs=%ux%u&chl=%s\""
|
|
||||||
" alt=\"%s\" title=\"%s\""
|
if (asprintf (&URL,"https://chart.googleapis.com/chart?cht=qr&chs=%ux%u&chl=%s",
|
||||||
" style=\"width:%upx; height:%upx;"
|
QR_CODE_SIZE,QR_CODE_SIZE,QRString) < 0)
|
||||||
" border:1px dashed silver;\" />",
|
Lay_NotEnoughMemoryExit ();
|
||||||
QR_CODE_SIZE,QR_CODE_SIZE,
|
HTM_IMG (URL,NULL,QRString,
|
||||||
QRString,
|
"style=\"width:%upx;height:%upx;border:1px dashed silver;\"",
|
||||||
QRString,
|
QR_CODE_SIZE,QR_CODE_SIZE);
|
||||||
QRString,
|
free ((void *) URL);
|
||||||
QR_CODE_SIZE,QR_CODE_SIZE);
|
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,17 +132,17 @@ void QR_LinkTo (unsigned Size,const char *ParamStr,long Cod)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Shortcut;
|
extern const char *Txt_Shortcut;
|
||||||
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
|
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
|
||||||
|
char *URL;
|
||||||
|
|
||||||
/***** Show QR code with direct link to the current centre *****/
|
/***** Show QR code with direct link to the current centre *****/
|
||||||
fprintf (Gbl.F.Out,"<img src=\"https://chart.googleapis.com/chart?cht=qr&chs=%ux%u&chl=%s/%s?%s=%ld\""
|
if (asprintf (&URL,"https://chart.googleapis.com/chart?cht=qr&chs=%ux%u&chl=%s/%s?%s=%ld",
|
||||||
" alt=\"%s\" title=\"%s\""
|
Size,Size,
|
||||||
" style=\"width:%upx; height:%upx;\" />",
|
Cfg_URL_SWAD_CGI,
|
||||||
Size,Size,
|
Lan_STR_LANG_ID[Gbl.Prefs.Language],ParamStr,Cod) < 0)
|
||||||
Cfg_URL_SWAD_CGI,
|
Lay_NotEnoughMemoryExit ();
|
||||||
Lan_STR_LANG_ID[Gbl.Prefs.Language],ParamStr,Cod,
|
HTM_IMG (URL,NULL,Txt_Shortcut,
|
||||||
Txt_Shortcut,
|
"style=\"width:%upx;height:%upx;\"",Size,Size);
|
||||||
Txt_Shortcut,
|
free ((void *) URL);
|
||||||
Size,Size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -147,15 +152,19 @@ void QR_LinkTo (unsigned Size,const char *ParamStr,long Cod)
|
||||||
void QR_ExamAnnnouncement (void)
|
void QR_ExamAnnnouncement (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Link_to_announcement_of_exam;
|
extern const char *Txt_Link_to_announcement_of_exam;
|
||||||
|
char *URL;
|
||||||
|
|
||||||
/***** Show QR code with direct link to the exam announcement *****/
|
/***** Show QR code with direct link to the exam announcement *****/
|
||||||
HTM_DIV_Begin ("class=\"CM\"");
|
HTM_DIV_Begin ("class=\"CM\"");
|
||||||
fprintf (Gbl.F.Out,"<img src=\"https://chart.googleapis.com/chart?cht=qr&chs=%ux%u&chl=%s/?crs=%ld%%26act=%ld\""
|
|
||||||
" alt=\"%s\" title=\"%s\""
|
if (asprintf (&URL,"https://chart.googleapis.com/chart?cht=qr&chs=%ux%u&chl=%s/?crs=%ld%%26act=%ld",
|
||||||
" style=\"width:250px; height:250px;\" />",
|
300,300,
|
||||||
300,300,
|
Cfg_URL_SWAD_CGI,Gbl.Hierarchy.Crs.CrsCod,
|
||||||
Cfg_URL_SWAD_CGI,Gbl.Hierarchy.Crs.CrsCod,Act_GetActCod (ActSeeAllExaAnn),
|
Act_GetActCod (ActSeeAllExaAnn)) < 0)
|
||||||
Txt_Link_to_announcement_of_exam,
|
Lay_NotEnoughMemoryExit ();
|
||||||
Txt_Link_to_announcement_of_exam);
|
HTM_IMG (URL,NULL,Txt_Link_to_announcement_of_exam,
|
||||||
|
"style=\"width:250px;height:250px;\"");
|
||||||
|
free ((void *) URL);
|
||||||
|
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
}
|
}
|
||||||
|
|
|
@ -487,18 +487,18 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
||||||
En OpenSWAD:
|
En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 19.46.9 (2019-10-29)"
|
#define Log_PLATFORM_VERSION "SWAD 19.46.10 (2019-10-31)"
|
||||||
#define CSS_FILE "swad19.45.css"
|
#define CSS_FILE "swad19.45.css"
|
||||||
#define JS_FILE "swad19.39.js"
|
#define JS_FILE "swad19.39.js"
|
||||||
/*
|
/*
|
||||||
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
|
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
|
||||||
// TODO: Impedir la creación y edición de proyectos si no son editables.
|
// TODO: Impedir la creación y edición de proyectos si no son editables.
|
||||||
// TODO: Continuar convirtiendo <img a HTM_IMG ()
|
|
||||||
|
|
||||||
Version 19.46.9: Oct 29, 2019 Code refactoring in HTML images. (246241 lines)
|
Version 19.46.10: Oct 31, 2019 Code refactoring in HTML images. (246196 lines)
|
||||||
Version 19.46.8: Oct 29, 2019 Code refactoring in HTML images. (246244 lines)
|
Version 19.46.9: Oct 30, 2019 Code refactoring in HTML images. (246241 lines)
|
||||||
Version 19.46.7: Oct 29, 2019 Code refactoring in HTML images. (246217 lines)
|
Version 19.46.8: Oct 30, 2019 Code refactoring in HTML images. (246244 lines)
|
||||||
Version 19.46.6: Oct 29, 2019 Code refactoring in HTML images. (246226 lines)
|
Version 19.46.7: Oct 30, 2019 Code refactoring in HTML images. (246217 lines)
|
||||||
|
Version 19.46.6: Oct 30, 2019 Code refactoring in HTML images. (246226 lines)
|
||||||
Version 19.46.5: Oct 29, 2019 Code refactoring in HTML images. (246223 lines)
|
Version 19.46.5: Oct 29, 2019 Code refactoring in HTML images. (246223 lines)
|
||||||
Version 19.46.4: Oct 28, 2019 Code refactoring in HTML images. (246247 lines)
|
Version 19.46.4: Oct 28, 2019 Code refactoring in HTML images. (246247 lines)
|
||||||
Version 19.46.3: Oct 28, 2019 Code refactoring in HTML images. (246390 lines)
|
Version 19.46.3: Oct 28, 2019 Code refactoring in HTML images. (246390 lines)
|
||||||
|
|
25
swad_forum.c
25
swad_forum.c
|
@ -3328,8 +3328,6 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
|
||||||
{
|
{
|
||||||
extern const char *The_ClassFormInBox[The_NUM_THEMES];
|
extern const char *The_ClassFormInBox[The_NUM_THEMES];
|
||||||
extern const char *The_ClassFormInBoxBold[The_NUM_THEMES];
|
extern const char *The_ClassFormInBoxBold[The_NUM_THEMES];
|
||||||
extern const char *Txt_You_have_written_1_post_in_this_thread;
|
|
||||||
extern const char *Txt_You_have_written_X_posts_in_this_thread;
|
|
||||||
extern const char *Txt_Thread_with_posts_from_you;
|
extern const char *Txt_Thread_with_posts_from_you;
|
||||||
extern const char *Txt_There_are_new_posts;
|
extern const char *Txt_There_are_new_posts;
|
||||||
extern const char *Txt_No_new_posts;
|
extern const char *Txt_No_new_posts;
|
||||||
|
@ -3373,23 +3371,12 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
|
||||||
|
|
||||||
HTM_TD_Begin ("class=\"BT %s\"",BgColor);
|
HTM_TD_Begin ("class=\"BT %s\"",BgColor);
|
||||||
if (Thr.NumMyPosts)
|
if (Thr.NumMyPosts)
|
||||||
{
|
HTM_IMG (Gbl.Usrs.Me.PhotoURL[0] ? Gbl.Usrs.Me.PhotoURL :
|
||||||
fprintf (Gbl.F.Out,"<img src=\"");
|
Cfg_URL_ICON_PUBLIC,
|
||||||
if (Gbl.Usrs.Me.PhotoURL[0]) // If I have photo
|
Gbl.Usrs.Me.PhotoURL[0] ? NULL :
|
||||||
fprintf (Gbl.F.Out,"%s",
|
"usr_bl.jpg",
|
||||||
Gbl.Usrs.Me.PhotoURL);
|
Txt_Thread_with_posts_from_you,
|
||||||
else
|
"class=\"PHOTO15x20\"");
|
||||||
fprintf (Gbl.F.Out,"%s/usr_bl.jpg",
|
|
||||||
Cfg_URL_ICON_PUBLIC);
|
|
||||||
fprintf (Gbl.F.Out,"\" alt=\"%s\" title=\"",
|
|
||||||
Txt_Thread_with_posts_from_you);
|
|
||||||
if (Thr.NumMyPosts == 1)
|
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_You_have_written_1_post_in_this_thread);
|
|
||||||
else
|
|
||||||
fprintf (Gbl.F.Out,Txt_You_have_written_X_posts_in_this_thread,
|
|
||||||
Thr.NumMyPosts);
|
|
||||||
fprintf (Gbl.F.Out,"\" class=\"PHOTO15x20\" />");
|
|
||||||
}
|
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/***** Put an icon with thread status *****/
|
/***** Put an icon with thread status *****/
|
||||||
|
|
93
swad_photo.c
93
swad_photo.c
|
@ -25,9 +25,11 @@
|
||||||
/********************************* Headers ***********************************/
|
/********************************* Headers ***********************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#define _GNU_SOURCE // For asprintf
|
||||||
#include <linux/limits.h> // For PATH_MAX
|
#include <linux/limits.h> // For PATH_MAX
|
||||||
#include <linux/stddef.h> // For NULL
|
#include <linux/stddef.h> // For NULL
|
||||||
#include <math.h> // For log10, floor, ceil, modf, sqrt...
|
#include <math.h> // For log10, floor, ceil, modf, sqrt...
|
||||||
|
#include <stdio.h> // For asprintf
|
||||||
#include <stdlib.h> // For system, getenv, etc.
|
#include <stdlib.h> // For system, getenv, etc.
|
||||||
#include <string.h> // For string functions
|
#include <string.h> // For string functions
|
||||||
#include <sys/wait.h> // For the macro WEXITSTATUS
|
#include <sys/wait.h> // For the macro WEXITSTATUS
|
||||||
|
@ -580,6 +582,7 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
|
||||||
char FileNamePhotoMap[PATH_MAX + 1]; // Full name (including path) of the temporary file with the original image with faces
|
char FileNamePhotoMap[PATH_MAX + 1]; // Full name (including path) of the temporary file with the original image with faces
|
||||||
char FileNameTxtMap[PATH_MAX + 1]; // Full name (including path) of the temporary file with the text neccesary to make the image map
|
char FileNameTxtMap[PATH_MAX + 1]; // Full name (including path) of the temporary file with the text neccesary to make the image map
|
||||||
char PathRelPhoto[PATH_MAX + 1];
|
char PathRelPhoto[PATH_MAX + 1];
|
||||||
|
char *Img;
|
||||||
FILE *FileTxtMap = NULL; // Temporary file with the text neccesary to make the image map. Initialized to avoid warning
|
FILE *FileTxtMap = NULL; // Temporary file with the text neccesary to make the image map. Initialized to avoid warning
|
||||||
char MIMEType[Brw_MAX_BYTES_MIME_TYPE + 1];
|
char MIMEType[Brw_MAX_BYTES_MIME_TYPE + 1];
|
||||||
bool WrongType = false;
|
bool WrongType = false;
|
||||||
|
@ -785,12 +788,11 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
|
||||||
Cfg_PATH_PHOTO_TMP_PUBLIC,
|
Cfg_PATH_PHOTO_TMP_PUBLIC,
|
||||||
Gbl.UniqueNameEncrypted);
|
Gbl.UniqueNameEncrypted);
|
||||||
HTM_DIV_Begin ("class=\"TIT CM\"");
|
HTM_DIV_Begin ("class=\"TIT CM\"");
|
||||||
fprintf (Gbl.F.Out,"<img src=\"%s/%s_map.jpg\""
|
if (asprintf (&Img,"%s_map.jpg",Gbl.UniqueNameEncrypted) < 0)
|
||||||
" usemap=\"#faces_map\""
|
Lay_NotEnoughMemoryExit ();
|
||||||
" alt=\"%s\" title=\"%s\" />",
|
HTM_IMG (Cfg_URL_PHOTO_TMP_PUBLIC,Img,Txt_Faces_detected,
|
||||||
Cfg_URL_PHOTO_TMP_PUBLIC,
|
"usemap=\"#faces_map\"");
|
||||||
Gbl.UniqueNameEncrypted,
|
free ((void *) Img);
|
||||||
Txt_Faces_detected,Txt_Faces_detected);
|
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
|
||||||
/***** End alert *****/
|
/***** End alert *****/
|
||||||
|
@ -886,6 +888,7 @@ static void Pho_UpdatePhoto2 (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_PHOTO_PROCESSING_CAPTIONS[3];
|
extern const char *Txt_PHOTO_PROCESSING_CAPTIONS[3];
|
||||||
unsigned NumPhoto;
|
unsigned NumPhoto;
|
||||||
|
char *Img;
|
||||||
|
|
||||||
/***** Start alert *****/
|
/***** Start alert *****/
|
||||||
Ale_ShowLastAlertAndButton1 ();
|
Ale_ShowLastAlertAndButton1 ();
|
||||||
|
@ -898,14 +901,12 @@ static void Pho_UpdatePhoto2 (void)
|
||||||
NumPhoto++)
|
NumPhoto++)
|
||||||
{
|
{
|
||||||
HTM_TD_Begin ("class=\"DAT CT\" style=\"width:33%%;\"");
|
HTM_TD_Begin ("class=\"DAT CT\" style=\"width:33%%;\"");
|
||||||
fprintf (Gbl.F.Out,"<img src=\"%s/%s_paso%u.jpg\""
|
if (asprintf (&Img,"%s_paso%u.jpg",Gbl.Usrs.FileNamePhoto,NumPhoto + 1) < 0)
|
||||||
" alt=\"%s\" title=\"%s\""
|
Lay_NotEnoughMemoryExit ();
|
||||||
" style=\"width:%upx; height:%upx;\" />",
|
HTM_IMG (Cfg_URL_PHOTO_TMP_PUBLIC,Img,Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto],
|
||||||
Cfg_URL_PHOTO_TMP_PUBLIC,
|
"style=\"width:%upx;height:%upx;\"",
|
||||||
Gbl.Usrs.FileNamePhoto,NumPhoto + 1,
|
Pho_PHOTO_REAL_WIDTH,Pho_PHOTO_REAL_HEIGHT);
|
||||||
Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto],
|
free ((void *) Img);
|
||||||
Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto],
|
|
||||||
Pho_PHOTO_REAL_WIDTH,Pho_PHOTO_REAL_HEIGHT);
|
|
||||||
fprintf (Gbl.F.Out,"<br />%s",Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto]);
|
fprintf (Gbl.F.Out,"<br />%s",Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto]);
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
}
|
}
|
||||||
|
@ -1267,35 +1268,35 @@ void Pho_ShowUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL,
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Start image *****/
|
/***** Image zoom *****/
|
||||||
fprintf (Gbl.F.Out,"<img src=\"");
|
|
||||||
PhotoExists = false;
|
PhotoExists = false;
|
||||||
if (PhotoURL)
|
if (PhotoURL)
|
||||||
if (PhotoURL[0])
|
if (PhotoURL[0])
|
||||||
PhotoExists = true;
|
PhotoExists = true;
|
||||||
if (PhotoExists)
|
|
||||||
fprintf (Gbl.F.Out,"%s",PhotoURL);
|
|
||||||
else
|
|
||||||
fprintf (Gbl.F.Out,"%s/usr_bl.jpg",Cfg_URL_ICON_PUBLIC);
|
|
||||||
fprintf (Gbl.F.Out,"\" alt=\"%s\" title=\"%s\""
|
|
||||||
" class=\"%s\"",
|
|
||||||
UsrDat->FullName,UsrDat->FullName,
|
|
||||||
ClassPhoto);
|
|
||||||
|
|
||||||
/***** Image zoom *****/
|
|
||||||
if (PutZoomCode)
|
if (PutZoomCode)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out," onmouseover=\"zoom(this,'");
|
|
||||||
if (PhotoExists)
|
if (PhotoExists)
|
||||||
fprintf (Gbl.F.Out,"%s",PhotoURL);
|
HTM_IMG (PhotoURL,NULL,UsrDat->FullName,
|
||||||
|
"class=\"%s\""
|
||||||
|
" onmouseover=\"zoom(this,'%s','%s');\""
|
||||||
|
" onmouseout=\"noZoom();\"",
|
||||||
|
ClassPhoto,PhotoURL,IdCaption);
|
||||||
else
|
else
|
||||||
fprintf (Gbl.F.Out,"%s/usr_bl.jpg",Cfg_URL_ICON_PUBLIC);
|
HTM_IMG (Cfg_URL_ICON_PUBLIC,"usr_bl.jpg",UsrDat->FullName,
|
||||||
fprintf (Gbl.F.Out,"','%s');\" onmouseout=\"noZoom();\"",
|
"class=\"%s\""
|
||||||
IdCaption);
|
" onmouseover=\"zoom(this,'%s/usr_bl.jpg','%s');\""
|
||||||
|
" onmouseout=\"noZoom();\"",
|
||||||
|
ClassPhoto,Cfg_URL_ICON_PUBLIC,IdCaption);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (PhotoExists)
|
||||||
|
HTM_IMG (PhotoURL,NULL,UsrDat->FullName,
|
||||||
|
"class=\"%s\"",ClassPhoto);
|
||||||
|
else
|
||||||
|
HTM_IMG (Cfg_URL_ICON_PUBLIC,"usr_bl.jpg",UsrDat->FullName,
|
||||||
|
"class=\"%s\"",ClassPhoto);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** End image *****/
|
|
||||||
fprintf (Gbl.F.Out," />");
|
|
||||||
|
|
||||||
/***** End form to go to public profile *****/
|
/***** End form to go to public profile *****/
|
||||||
if (PutLinkToPublicProfile)
|
if (PutLinkToPublicProfile)
|
||||||
|
@ -2500,24 +2501,22 @@ static void Pho_ShowDegreeAvgPhotoAndStat (struct Degree *Deg,
|
||||||
/***** Show photo *****/
|
/***** Show photo *****/
|
||||||
if (PhotoURL[0])
|
if (PhotoURL[0])
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<img src=\"%s\"",PhotoURL);
|
|
||||||
if (PhotoCaption[0])
|
if (PhotoCaption[0])
|
||||||
fprintf (Gbl.F.Out," onmouseover=\"zoom(this,'%s','%s');\""
|
HTM_IMG (PhotoURL,NULL,Deg->ShrtName,
|
||||||
" onmouseout=\"noZoom();\"",
|
" style=\"width:%upx;height:%upx;\""
|
||||||
|
" onmouseover=\"zoom(this,'%s','%s');\""
|
||||||
|
" onmouseout=\"noZoom();\"",
|
||||||
|
PhotoWidth,PhotoHeight,
|
||||||
PhotoURL,IdCaption);
|
PhotoURL,IdCaption);
|
||||||
fprintf (Gbl.F.Out," alt=\"%s\""
|
else
|
||||||
" style=\"width:%upx; height:%upx;\" />",
|
HTM_IMG (PhotoURL,NULL,Deg->ShrtName,
|
||||||
Deg->ShrtName,
|
" style=\"width:%upx;height:%upx;\" />",
|
||||||
PhotoWidth,PhotoHeight);
|
PhotoWidth,PhotoHeight);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
HTM_IMG (Cfg_URL_ICON_PUBLIC,"usr_bl.jpg",Deg->ShrtName,
|
||||||
fprintf (Gbl.F.Out,"<img src=\"%s/usr_bl.jpg\" alt=\"%s\""
|
"style=\"width:%upx;height:%upx;\"",
|
||||||
" style=\"width:%upx; height:%upx;\" />",
|
|
||||||
Cfg_URL_ICON_PUBLIC,
|
|
||||||
Deg->ShrtName,
|
|
||||||
PhotoWidth,PhotoHeight);
|
PhotoWidth,PhotoHeight);
|
||||||
}
|
|
||||||
|
|
||||||
/***** Caption *****/
|
/***** Caption *****/
|
||||||
HTM_DIV_Begin ("class=\"CLASSPHOTO_CAPTION\"");
|
HTM_DIV_Begin ("class=\"CLASSPHOTO_CAPTION\"");
|
||||||
|
|
60
swad_text.c
60
swad_text.c
|
@ -49160,23 +49160,23 @@ const char *Txt_Thread_X_removed = // Warning: it is very important to include %
|
||||||
|
|
||||||
const char *Txt_Thread_with_posts_from_you =
|
const char *Txt_Thread_with_posts_from_you =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Discusión con comentarios de usted."; // Necessita traduccio
|
"Discusión con comentarios de usted"; // Necessita traduccio
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Thread with posts from you."; // Need Übersetzung
|
"Thread with posts from you"; // Need Übersetzung
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Thread with posts from you.";
|
"Thread with posts from you";
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Discusión con comentarios de usted.";
|
"Discusión con comentarios de usted";
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"Thread with posts from you."; // Besoin de traduction
|
"Thread with posts from you"; // Besoin de traduction
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
"Discusión con comentarios de usted."; // Okoteve traducción
|
"Discusión con comentarios de usted"; // Okoteve traducción
|
||||||
#elif L==7 // it
|
#elif L==7 // it
|
||||||
"Discussione con post per te.";
|
"Discussione con post per te";
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Thread with posts from you."; // Potrzebujesz tlumaczenie
|
"Thread with posts from you"; // Potrzebujesz tlumaczenie
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Discussão com mensagens de você.";
|
"Discussão com mensagens de você";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_threads =
|
const char *Txt_threads =
|
||||||
|
@ -55880,48 +55880,6 @@ const char *Txt_You_have_to_register_compulsorily_in_one_group_of_type_X = // Wa
|
||||||
"Você tem que se registrar obrigatoriamente em um grupo do tipo %s.";
|
"Você tem que se registrar obrigatoriamente em um grupo do tipo %s.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_You_have_written_1_post_in_this_thread =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Usted ha escrito 1 comentario en esta discusión"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Sie haben 1 Nachricht in diesem Thread";
|
|
||||||
#elif L==3 // en
|
|
||||||
"You have written 1 post in this thread";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Usted ha escrito 1 comentario en esta discusión";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Vous avez écrit 1 post dans ce fil";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Usted ha escrito 1 comentario en esta discusión"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Hai scritto 1 post in questa discussione";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"You have written 1 post in this thread"; // Potrzebujesz tlumaczenie
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Você escreveu 1 post nesta discussão";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_You_have_written_X_posts_in_this_thread = // Warning: it is very important to include %u in the following sentences
|
|
||||||
#if L==1 // ca
|
|
||||||
"Usted ha escrito %u comentarios en esta discusión"; // Necessita traduccio
|
|
||||||
#elif L==2 // de
|
|
||||||
"Sie haben %u Nachrichten in diesem Thread";
|
|
||||||
#elif L==3 // en
|
|
||||||
"You have written %u posts in this thread";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Usted ha escrito %u comentarios en esta discusión";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Vous avez écrit %u posts dans ce fil";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Usted ha escrito %u comentarios en esta discusión"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Hai scritto %u post in questa discussione";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"You have written %u posts in this thread"; // Potrzebujesz tlumaczenie
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Você escreveu %u posts nesta discussão";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_You_must_enter_an_integer_value_as_the_correct_answer =
|
const char *Txt_You_must_enter_an_integer_value_as_the_correct_answer =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Debe escribir un valor entero como respuesta correcta."; // Necessita traduccio
|
"Debe escribir un valor entero como respuesta correcta."; // Necessita traduccio
|
||||||
|
|
Loading…
Reference in New Issue