Version 15.198

This commit is contained in:
Antonio Cañas Vargas 2016-04-15 14:30:28 +02:00
parent b35c57e82c
commit b0581608be
8 changed files with 188 additions and 51 deletions

View File

@ -1743,13 +1743,87 @@ a:hover img.CENTRE_PHOTO_SHOW
.TEST_EXA_LIGHT {color:#A0A0A0; font-size:12pt;}
.TEST_EDI {color:#404040; font-size:12pt;}
.TEST_EDI_LIGHT {color:#A0A0A0; font-size:12pt;}
.TEST_IMG_SHOW_STEM {width:100%; border-radius:4px; margin:10px 0;}
.TEST_IMG_SHOW_ANS {width:100%; border-radius:4px; margin:10px 0;}
.TEST_IMG_EDIT_LIST_STEM {width:100%; border-radius:2px; margin:5px 0;}
.TEST_IMG_EDIT_LIST_ANS {width:100%; border-radius:2px; margin:5px 0;}
.TEST_IMG_EDIT_ONE_CONTAINER {margin:15px 0; text-align:left; vertical-align:top;}
.TEST_IMG_EDIT_ONE_STEM {width:100%; border-radius:4px;}
.TEST_IMG_EDIT_ONE_ANS {width:100%; border-radius:4px;}
.TEST_IMG_SHOW_STEM_CONTAINER
{
box-sizing:border-box;
width:100%;
margin:10px 0;
}
.TEST_IMG_SHOW_STEM
{
box-sizing:border-box;
width:100%;
border-radius:4px;
}
.TEST_IMG_SHOW_ANS_CONTAINER
{
box-sizing:border-box;
width:100%;
margin:10px 0;
}
.TEST_IMG_SHOW_ANS
{
box-sizing:border-box;
width:100%;
border-radius:4px;
}
.TEST_IMG_EDIT_LIST_STEM_CONTAINER
{
box-sizing:border-box;
width:100%;
margin:5px 0;
}
.TEST_IMG_EDIT_LIST_STEM
{
box-sizing:border-box;
width:100%;
border-radius:2px;
}
.TEST_IMG_EDIT_LIST_ANS_CONTAINER
{
box-sizing:border-box;
width:100%;
margin:5px 0;
}
.TEST_IMG_EDIT_LIST_ANS
{
box-sizing:border-box;
width:100%;
border-radius:2px;
}
.TEST_FORM_EDIT_IMG
{
box-sizing:border-box;
margin:15px 0;
text-align:left;
vertical-align:top;
}
.TEST_IMG_EDIT_ONE_STEM_CONTAINER
{
box-sizing:border-box;
width:100%;
}
.TEST_IMG_EDIT_ONE_STEM
{
box-sizing:border-box;
width:100%;
border-radius:4px;
}
.TEST_IMG_EDIT_ONE_ANS_CONTAINER
{
box-sizing:border-box;
width:100%;
}
.TEST_IMG_EDIT_ONE_ANS
{
box-sizing:border-box;
width:100%;
border-radius:4px;
}
.TEST_EDI_ANS_LEFT_COL
{
box-sizing:border-box;
@ -1970,22 +2044,28 @@ a:hover img.CENTRE_PHOTO_SHOW
margin:0;
resize:none;
}
.SOCIAL_IMG_TIT_POST
{
box-sizing:border-box;
width:440px;
}
.SOCIAL_TXT
{
padding:5px 0;
color:#404040;
font-size:13pt;
}
.SOCIAL_IMG_POST
.SOCIAL_POST_IMG_CONTAINER
{
box-sizing:border-box;
width:480px;
margin:10px 0;
}
.SOCIAL_POST_IMG
{
box-sizing:border-box;
width:480px;
border-radius:4px;
margin:10px 0;
}
.SOCIAL_POST_IMG_TIT_URL
{
box-sizing:border-box;
width:440px;
}
.SOCIAL_ICON_COMMENT
{
@ -2085,29 +2165,41 @@ a:hover img.CENTRE_PHOTO_SHOW
margin:0;
resize:none;
}
.SOCIAL_IMG_COMMENT
.SOCIAL_COMMENT_IMG_CONTAINER
{
box-sizing:border-box;
width:440px;
border-radius:4px;
margin:10px 0;
}
.SOCIAL_IMG_TIT_COMMENT
.SOCIAL_COMMENT_IMG
{
box-sizing:border-box;
width:440px;
border-radius:4px;
}
.SOCIAL_COMMENT_IMG_TIT_URL
{
box-sizing:border-box;
width:440px;
}
/************************************ Forum **********************************/
.FOR_IMG_CONTAINER
{
box-sizing:border-box;
width:100%;
margin:10px 0;
}
.FOR_IMG
{
box-sizing:border-box;
width:100%;
border-radius:4px;
margin:20px 0;
}
.FOR_IMG_TIT
.FOR_IMG_TIT_URL
{
box-sizing:border-box;
width:480px;
margin-bottom:10px;
}
/*********************************** Messages ********************************/
@ -2118,16 +2210,22 @@ a:hover img.CENTRE_PHOTO_SHOW
text-align:left;
vertical-align:middle;
}
.MSG_IMG
.MSG_IMG_CONTAINER
{
box-sizing:border-box;
width:100%;
border-radius:4px;
margin:10px 0;
}
.MSG_IMG_TIT
.MSG_IMG
{
box-sizing:border-box;
width:100%;
border-radius:4px;
}
.MSG_IMG_TIT_URL
{
box-sizing:border-box;
width:480px;
margin-bottom:10px;
}
.MSG_TXT {color:#404040; font-size:13pt;}
.MSG_TIT {color:#4D88A1; font-size:13pt;}

View File

@ -136,13 +136,14 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.197 (2016-04-15)"
#define CSS_FILE "swad15.193.css"
#define Log_PLATFORM_VERSION "SWAD 15.198 (2016-04-15)"
#define CSS_FILE "swad15.198.css"
#define JS_FILE "swad15.197.js"
// 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 15.198: Apr 15, 2016 Changes in layout related to image URL. (199646 lines)
Version 15.197: Apr 15, 2016 Input field to enter image URL. (199518 lines)
Version 15.196: Apr 15, 2016 Changes related to image URL. (199467 lines)
Version 15.195.1: Apr 15, 2016 New fields in images to store URL when a user click in the image. (199390 lines)

View File

@ -1307,7 +1307,7 @@ static void For_ShowAForumPost (struct ForumThread *Thr,unsigned PstNum,long Pst
Msg_WriteMsgContent (Content,Cns_MAX_BYTES_LONG_TEXT,true,false);
/***** Show image *****/
Img_ShowImage (&Image,"FOR_IMG");
Img_ShowImage (&Image,"FOR_IMG_CONTAINER","FOR_IMG");
}
else
fprintf (Gbl.F.Out,"%s",Txt_This_post_has_been_banned_probably_for_not_satisfy_the_rules_of_the_forums);
@ -3838,7 +3838,7 @@ static void For_WriteFormForumPst (bool IsReply,long ThrCod,const char *Subject)
Lay_HelpPlainEditor ();
/***** Attached image (optional) *****/
Img_PutImageUploader (-1,"FOR_IMG_TIT");
Img_PutImageUploader (-1,"FOR_IMG_TIT_URL");
/***** Send button *****/
Lay_PutCreateButton (Txt_Send_message);

View File

@ -527,12 +527,14 @@ void Img_MoveImageToDefinitiveDirectory (struct Image *Image)
/******************** Write the image of a test question *********************/
/*****************************************************************************/
void Img_ShowImage (struct Image *Image,const char *ClassImg)
void Img_ShowImage (struct Image *Image,
const char *ClassContainer,const char *ClassImg)
{
extern const char *Txt_Image_not_found;
char FileNameImgPriv[PATH_MAX+1];
char FullPathImgPriv[PATH_MAX+1];
char URL[PATH_MAX+1];
bool PutLink;
/***** If no image to show ==> nothing to do *****/
if (!Image->Name)
@ -567,14 +569,32 @@ void Img_ShowImage (struct Image *Image,const char *ClassImg)
FileNameImgPriv);
/***** Show image *****/
fprintf (Gbl.F.Out,"<div>"
"<img src=\"%s\" class=\"%s\" alt=\"\"",
URL,ClassImg);
/* Check if optional link is present */
PutLink = false;
if (Image->URL)
if (Image->URL[0])
PutLink = true;
/* Start image container */
fprintf (Gbl.F.Out,"<div class=\"%s\">",ClassContainer);
/* Start optional link to external URL */
if (PutLink)
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\">",Image->URL);
/* Image */
fprintf (Gbl.F.Out,"<img src=\"%s\" class=\"%s\" alt=\"\"",URL,ClassImg);
if (Image->Title)
if (Image->Title[0])
fprintf (Gbl.F.Out," title=\"%s\"",Image->Title);
fprintf (Gbl.F.Out," />"
"</div>");
fprintf (Gbl.F.Out," />");
/* End optional link to external URL */
if (PutLink)
fprintf (Gbl.F.Out,"</a>");
/* End image container */
fprintf (Gbl.F.Out,"</div>");
}
else
Lay_ShowAlert (Lay_WARNING,Txt_Image_not_found);

View File

@ -130,7 +130,8 @@ Img_Action_t Img_GetImageActionFromForm (const char *ParamAction);
void Img_GetAndProcessImageFileFromForm (struct Image *Image,const char *ParamFile);
void Img_MoveImageToDefinitiveDirectory (struct Image *Image);
void Img_ShowImage (struct Image *Image,const char *ClassImg);
void Img_ShowImage (struct Image *Image,
const char *ClassContainer,const char *ClassImg);
void Img_RemoveImageFile (const char *ImageName);
#endif

View File

@ -418,7 +418,7 @@ static void Msg_PutFormMsgUsrs (const char *Content)
Lay_HelpPlainEditor ();
/***** Attached image (optional) *****/
Img_PutImageUploader (-1,"MSG_IMG_TIT");
Img_PutImageUploader (-1,"MSG_IMG_TIT_URL");
/***** Send button *****/
Lay_PutCreateButton (Txt_Send_message);
@ -2960,7 +2960,7 @@ static void Msg_ShowASentOrReceivedMessage (Msg_TypeOfMessages_t TypeOfMessages,
Msg_WriteMsgContent (Content,Cns_MAX_BYTES_LONG_TEXT,true,false);
// fprintf (Gbl.F.Out,"<br />&nbsp;");
}
Img_ShowImage (&Image,"MSG_IMG");
Img_ShowImage (&Image,"MSG_IMG_CONTAINER","MSG_IMG");
fprintf (Gbl.F.Out,"</td>"
"</tr>");

View File

@ -1480,12 +1480,15 @@ static void Soc_GetAndWriteSocialPost (long PstCod)
DB_FreeMySQLResult (&mysql_res);
/***** Write content *****/
fprintf (Gbl.F.Out,"<div class=\"SOCIAL_TXT\">");
Msg_WriteMsgContent (Content,Cns_MAX_BYTES_LONG_TEXT,true,false);
fprintf (Gbl.F.Out,"</div>");
if (Content[0])
{
fprintf (Gbl.F.Out,"<div class=\"SOCIAL_TXT\">");
Msg_WriteMsgContent (Content,Cns_MAX_BYTES_LONG_TEXT,true,false);
fprintf (Gbl.F.Out,"</div>");
}
/***** Show image *****/
Img_ShowImage (&Image,"SOCIAL_IMG_POST");
Img_ShowImage (&Image,"SOCIAL_POST_IMG_CONTAINER","SOCIAL_POST_IMG");
/***** Free image *****/
Img_ImageDestructor (&Image);
@ -1976,7 +1979,7 @@ static void Soc_PutFormToWriteNewPost (void)
/***** Textarea and button *****/
Soc_PutTextarea (Txt_New_SOCIAL_post,
"SOCIAL_TEXTAREA_POST","SOCIAL_IMG_TIT_POST");
"SOCIAL_TEXTAREA_POST","SOCIAL_POST_IMG_TIT_URL");
/***** End form *****/
Act_FormEnd ();
@ -2220,7 +2223,7 @@ static void Soc_PutHiddenFormToWriteNewCommentToSocialNote (long NotCod,
/***** Textarea and button *****/
Soc_PutTextarea (Txt_New_SOCIAL_comment,
"SOCIAL_TEXTAREA_COMMENT","SOCIAL_IMG_TIT_COMMENT");
"SOCIAL_TEXTAREA_COMMENT","SOCIAL_COMMENT_IMG_TIT_URL");
/***** End form *****/
Act_FormEnd ();
@ -2389,7 +2392,7 @@ static void Soc_WriteSocialComment (struct SocialComment *SocCom,
fprintf (Gbl.F.Out,"</div>");
/* Show image */
Img_ShowImage (&SocCom->Image,"SOCIAL_IMG_COMMENT");
Img_ShowImage (&SocCom->Image,"SOCIAL_COMMENT_IMG_CONTAINER","SOCIAL_COMMENT_IMG");
/* Put icon to mark this social comment as favourite */
if (IAmTheAuthor) // I am the author

View File

@ -155,6 +155,7 @@ static void Tst_ShowTstResultAfterAssess (long TstCod,unsigned *NumQstsNotBlank,
static void Tst_WriteQstAndAnsExam (unsigned NumQst,long QstCod,MYSQL_ROW row,
double *ScoreThisQst,bool *AnswerIsNotBlank);
static void Tst_PutFormToEditQstImage (struct Image *Image,int NumImgInForm,
const char *ClassContainer,
const char *ClassImg,
const char *ClassImgTitURL,
bool OptionsDisabled);
@ -1003,7 +1004,9 @@ static void Tst_WriteQstAndAnsExam (unsigned NumQst,long QstCod,MYSQL_ROW row,
Gbl.RowEvenOdd);
Tst_WriteQstStem (row[4],"TEST_EXA");
Img_GetImageNameTitleAndURLFromRow (row[6],row[7],row[8],&Gbl.Test.Image);
Img_ShowImage (&Gbl.Test.Image,"TEST_IMG_SHOW_STEM");
Img_ShowImage (&Gbl.Test.Image,
"TEST_IMG_SHOW_STEM_CONTAINER",
"TEST_IMG_SHOW_STEM");
if (Gbl.Action.Act == ActSeeTst)
Tst_WriteAnswersOfAQstSeeExam (NumQst,QstCod,(Str_ConvertToUpperLetter (row[3][0]) == 'Y'));
@ -1055,6 +1058,7 @@ void Tst_WriteQstStem (const char *Stem,const char *ClassStem)
/*****************************************************************************/
static void Tst_PutFormToEditQstImage (struct Image *Image,int NumImgInForm,
const char *ClassContainer,
const char *ClassImg,
const char *ClassImgTitURL,
bool OptionsDisabled)
@ -1075,7 +1079,7 @@ static void Tst_PutFormToEditQstImage (struct Image *Image,int NumImgInForm,
Img_SetParamNames (&ParamUploadImg,NumImgInForm);
/***** Start container *****/
fprintf (Gbl.F.Out,"<div class=\"TEST_IMG_EDIT_ONE_CONTAINER\">");
fprintf (Gbl.F.Out,"<div class=\"TEST_FORM_EDIT_IMG\">");
/***** Choice 1: No image *****/
fprintf (Gbl.F.Out,"<input type=\"radio\" name=\"%s\" value=\"%u\"",
@ -1101,7 +1105,7 @@ static void Tst_PutFormToEditQstImage (struct Image *Image,int NumImgInForm,
"</label>",
The_ClassForm[Gbl.Prefs.Theme],
Txt_Current_image);
Img_ShowImage (Image,ClassImg);
Img_ShowImage (Image,ClassContainer,ClassImg);
/***** Choice 3: Change/new image *****/
UniqueId++;
@ -2798,7 +2802,9 @@ static void Tst_ListOneOrMoreQuestionsToEdit (unsigned long NumRows,MYSQL_RES *m
Gbl.RowEvenOdd);
Tst_WriteQstStem (row[4],"TEST_EDI");
Img_GetImageNameTitleAndURLFromRow (row[6],row[7],row[8],&Gbl.Test.Image);
Img_ShowImage (&Gbl.Test.Image,"TEST_IMG_EDIT_LIST_STEM");
Img_ShowImage (&Gbl.Test.Image,
"TEST_IMG_EDIT_LIST_STEM_CONTAINER",
"TEST_IMG_EDIT_LIST_STEM");
Tst_WriteQstFeedback (row[5],"TEST_EDI_LIGHT");
Tst_WriteAnswersOfAQstEdit (Gbl.Test.QstCod);
fprintf (Gbl.F.Out,"</td>");
@ -3027,7 +3033,9 @@ static void Tst_WriteAnswersOfAQstEdit (long QstCod)
"<div class=\"TEST_EDI\">"
"%s",
Answer);
Img_ShowImage (&Gbl.Test.Answer.Options[NumOpt].Image,"TEST_IMG_EDIT_LIST_ANS");
Img_ShowImage (&Gbl.Test.Answer.Options[NumOpt].Image,
"TEST_IMG_EDIT_LIST_ANS_CONTAINER",
"TEST_IMG_EDIT_LIST_ANS");
fprintf (Gbl.F.Out,"</div>");
/* Write the text of the feedback */
@ -3344,7 +3352,9 @@ static void Tst_WriteChoiceAnsSeeExam (unsigned NumQst,long QstCod,bool Shuffle)
fprintf (Gbl.F.Out,"<td class=\"TEST_EXA LEFT_TOP\">"
"%s",
Gbl.Test.Answer.Options[NumOpt].Text);
Img_ShowImage (&Gbl.Test.Answer.Options[NumOpt].Image,"TEST_IMG_SHOW_ANS");
Img_ShowImage (&Gbl.Test.Answer.Options[NumOpt].Image,
"TEST_IMG_SHOW_ANS_CONTAINER",
"TEST_IMG_SHOW_ANS");
fprintf (Gbl.F.Out,"</td>"
"</tr>");
}
@ -3514,7 +3524,9 @@ static void Tst_WriteChoiceAnsAssessExam (unsigned NumQst,MYSQL_RES *mysql_res,
"<div class=\"TEST_EXA\">"
"%s",
Gbl.Test.Answer.Options[Indexes[NumOpt]].Text);
Img_ShowImage (&Gbl.Test.Answer.Options[Indexes[NumOpt]].Image,"TEST_IMG_SHOW_ANS");
Img_ShowImage (&Gbl.Test.Answer.Options[Indexes[NumOpt]].Image,
"TEST_IMG_SHOW_ANS_CONTAINER",
"TEST_IMG_SHOW_ANS");
fprintf (Gbl.F.Out,"</div>");
if (Gbl.Test.Config.FeedbackType == Tst_FEEDBACK_FULL_FEEDBACK)
if (Gbl.Test.Answer.Options[Indexes[NumOpt]].Feedback)
@ -4499,6 +4511,7 @@ static void Tst_PutFormEditOneQst (char *Stem,char *Feedback)
Txt_Stem,
Stem);
Tst_PutFormToEditQstImage (&Gbl.Test.Image,-1,
"TEST_IMG_EDIT_ONE_STEM_CONTAINER",
"TEST_IMG_EDIT_ONE_STEM",
"STEM", // Title / attribution
false);
@ -4719,6 +4732,7 @@ static void Tst_PutFormEditOneQst (char *Stem,char *Feedback)
/* Image */
Tst_PutFormToEditQstImage (&Gbl.Test.Answer.Options[NumOpt].Image,
(int) NumOpt,
"TEST_IMG_EDIT_ONE_ANS_CONTAINER",
"TEST_IMG_EDIT_ONE_ANS",
"ANS_STR", // Title / attribution
OptionsDisabled);