Version 15.191

This commit is contained in:
Antonio Cañas Vargas 2016-04-10 14:09:50 +02:00
parent 1446539c2a
commit 13fd0917e8
5 changed files with 117 additions and 7 deletions

View File

@ -6,7 +6,7 @@
and used to support university teaching.
This file is part of SWAD core.
Copyright (C) 1999-2015 Antonio Cañas Vargas
Copyright (C) 1999-2016 Antonio Cañas Vargas
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General 3 License as
@ -2071,6 +2071,14 @@ a:hover img.CENTRE_PHOTO_SHOW
margin-bottom:10px;
}
/************************************ Forum **********************************/
.FOR_IMG
{
width:480px;
border-radius:4px;
margin:10px 0;
}
/*********************************** Messages ********************************/
.MSG_TO_ONE_RCP
{
@ -2079,6 +2087,12 @@ a:hover img.CENTRE_PHOTO_SHOW
text-align:left;
vertical-align:middle;
}
.MSG_IMG
{
width:480px;
border-radius:4px;
margin:10px 0;
}
.MSG_TXT {color:#404040; font-size:13pt;}
.MSG_TIT {color:#4D88A1; font-size:13pt;}
.MSG_TIT_NEW {color:#4D88A1; font-size:13pt; font-weight:bold;}

View File

@ -133,14 +133,14 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.190.6 (2016-04-09)"
#define Log_PLATFORM_VERSION "SWAD 15.191 (2016-04-10)"
#define CSS_FILE "swad15.190.1.css"
#define JS_FILE "swad15.190.1.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.191: Apr 09, 2016 Form to attach an image to a forum post. Not finished. (? lines)
Version 15.191: Apr 10, 2016 Forms to attach an image to a forum posts and messages. Not finished. (? lines)
Version 15.190.6: Apr 09, 2016 Changes in layout of form to write a new message. (199152 lines)
Version 15.190.5: Apr 09, 2016 Changes in layout of form to write a new forum post. (199156 lines)
Version 15.190.4: Apr 09, 2016 Changes in layout of form to write a new forum post. (199152 lines)

View File

@ -238,6 +238,14 @@ const Act_Action_t For_ActionsDisPstFor[For_NUM_TYPES_FORUM] =
ActDisPstForSWATch,
};
// Forum images will be saved with:
// - maximum width of For_IMAGE_SAVED_MAX_HEIGHT
// - maximum height of For_IMAGE_SAVED_MAX_HEIGHT
// - maintaining the original aspect ratio (aspect ratio recommended: 3:2)
#define For_IMAGE_SAVED_MAX_WIDTH 768
#define For_IMAGE_SAVED_MAX_HEIGHT 512
#define For_IMAGE_SAVED_QUALITY 75 // 1 to 100
/*****************************************************************************/
/***************************** Private prototypes ***************************/
/*****************************************************************************/
@ -3701,6 +3709,9 @@ static void For_WriteFormForumPst (bool IsReply,long ThrCod,const char *Subject)
extern const char *Txt_New_thread;
extern const char *Txt_MSG_Subject;
extern const char *Txt_MSG_Message;
extern const char *Txt_Image;
extern const char *Txt_optional;
extern const char *Txt_Image_title_attribution;
extern const char *Txt_Send_message;
/***** Start frame *****/
@ -3757,6 +3768,29 @@ static void For_WriteFormForumPst (bool IsReply,long ThrCod,const char *Subject)
/***** Help for text editor *****/
Lay_HelpPlainEditor ();
/***** Attached image (optional) *****/
/* Action to perform on image */
Par_PutHiddenParamUnsigned ("ImgAct",(unsigned) Img_ACTION_NEW_IMAGE);
/* Image file */
fprintf (Gbl.F.Out,"<label>"
"<img src=\"%s/photo64x64.gif\""
" alt=\"%s\" title=\"%s (%s)\""
" class=\"ICON20x20\" />"
"</label>"
"<input type=\"file\" name=\"ImgFil\""
" size=\"40\" maxlength=\"100\" value=\"\" />"
"<br />",
Gbl.Prefs.IconsURL,
Txt_Image,Txt_Image,Txt_optional);
/* Image title/attribution */
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"ImgTit\""
" placeholder=\"%s (%s)&hellip;\""
" class=\"FOR_IMG\" maxlength=\"%u\" value=\"\">",
Txt_Image_title_attribution,Txt_optional,
Img_MAX_BYTES_TITLE);
/***** Send button *****/
Lay_PutCreateButton (Txt_Send_message);
@ -3781,6 +3815,7 @@ void For_RecForumPst (void)
unsigned NumUsrsToBeNotifiedByEMail;
struct SocialPublishing SocPub;
char Content[Cns_MAX_BYTES_LONG_TEXT+1];
struct Image Image;
/***** Get order type, degree and course of the forum *****/
For_GetParamsForum ();
@ -3812,6 +3847,16 @@ void For_RecForumPst (void)
Par_GetParAndChangeFormat ("Content",Content,Cns_MAX_BYTES_LONG_TEXT,
Str_TO_RIGOROUS_HTML,false);
/***** Initialize image *****/
Img_ImageConstructor (&Image);
/***** Get attached image (action, file and title) *****/
Img_GetImageFromForm (0,&Image,NULL,
"ImgAct","ImgFil","ImgTit",
For_IMAGE_SAVED_MAX_WIDTH,
For_IMAGE_SAVED_MAX_HEIGHT,
For_IMAGE_SAVED_QUALITY);
/***** Create a new message *****/
if (PstIsAReply)
{
@ -3835,6 +3880,9 @@ void For_RecForumPst (void)
For_UpdateThrFirstAndLastPst (ThrCod,PstCod,PstCod);
}
/***** Free image *****/
Img_ImageDestructor (&Image);
/***** Increment number of forum posts in my user's figures *****/
Prf_IncrementNumForPstUsr (Gbl.Usrs.Me.UsrDat.UsrCod);

View File

@ -60,6 +60,14 @@ extern struct Act_Actions Act_Actions[Act_NUM_ACTIONS];
#define Msg_MAX_LENGTH_MESSAGES_QUERY 4096
#define Msg_MAX_LENGTH_STR_ADDR (32*5000)
// Forum images will be saved with:
// - maximum width of Msg_IMAGE_SAVED_MAX_HEIGHT
// - maximum height of Msg_IMAGE_SAVED_MAX_HEIGHT
// - maintaining the original aspect ratio (aspect ratio recommended: 3:2)
#define Msg_IMAGE_SAVED_MAX_WIDTH 768
#define Msg_IMAGE_SAVED_MAX_HEIGHT 512
#define Msg_IMAGE_SAVED_QUALITY 75 // 1 to 100
/*****************************************************************************/
/******************************** Private types ******************************/
/*****************************************************************************/
@ -275,6 +283,9 @@ static void Msg_PutFormMsgUsrs (const char *Content)
extern const char *Txt_Reply_message;
extern const char *Txt_New_message;
extern const char *Txt_MSG_To;
extern const char *Txt_Image;
extern const char *Txt_optional;
extern const char *Txt_Image_title_attribution;
extern const char *Txt_Send_message;
char YN[1+1];
@ -408,6 +419,29 @@ static void Msg_PutFormMsgUsrs (const char *Content)
/***** Help for text editor and send button *****/
Lay_HelpPlainEditor ();
/***** Attached image (optional) *****/
/* Action to perform on image */
Par_PutHiddenParamUnsigned ("ImgAct",(unsigned) Img_ACTION_NEW_IMAGE);
/* Image file */
fprintf (Gbl.F.Out,"<label>"
"<img src=\"%s/photo64x64.gif\""
" alt=\"%s\" title=\"%s (%s)\""
" class=\"ICON20x20\" />"
"</label>"
"<input type=\"file\" name=\"ImgFil\""
" size=\"40\" maxlength=\"100\" value=\"\" />"
"<br />",
Gbl.Prefs.IconsURL,
Txt_Image,Txt_Image,Txt_optional);
/* Image title/attribution */
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"ImgTit\""
" placeholder=\"%s (%s)&hellip;\""
" class=\"MSG_IMG\" maxlength=\"%u\" value=\"\">",
Txt_Image_title_attribution,Txt_optional,
Img_MAX_BYTES_TITLE);
/***** Send button *****/
Lay_PutCreateButton (Txt_Send_message);
@ -693,6 +727,7 @@ void Msg_RecMsgFromUsr (void)
bool CreateNotif;
bool NotifyByEmail;
char Content[Cns_MAX_BYTES_LONG_TEXT+1];
struct Image Image;
bool Error = false;
/***** Get data from form *****/
@ -755,6 +790,16 @@ void Msg_RecMsgFromUsr (void)
/***** Initialize structure with user's data *****/
Usr_UsrDataConstructor (&UsrDstData);
/***** Initialize image *****/
Img_ImageConstructor (&Image);
/***** Get attached image (action, file and title) *****/
Img_GetImageFromForm (0,&Image,NULL,
"ImgAct","ImgFil","ImgTit",
Msg_IMAGE_SAVED_MAX_WIDTH,
Msg_IMAGE_SAVED_MAX_HEIGHT,
Msg_IMAGE_SAVED_QUALITY);
/***** Loop over the list Gbl.Usrs.Select.All, that holds the list of the
recipients, creating a received message for each recipient *****/
Str_ChangeFormat (Str_FROM_FORM,Str_TO_RIGOROUS_HTML,
@ -827,6 +872,9 @@ void Msg_RecMsgFromUsr (void)
}
}
/***** Free image *****/
Img_ImageDestructor (&Image);
/***** Free memory used for user's data *****/
Usr_UsrDataDestructor (&UsrDstData);

View File

@ -51,11 +51,11 @@
/***************************** Private constants *****************************/
/*****************************************************************************/
#define Soc_WIDTH_TIMELINE "560px"
#define Soc_MAX_SHARERS_FAVERS_SHOWN 7 // Maximum number of users shown who have share/fav a social note
#define Soc_WIDTH_TIMELINE "560px"
#define Soc_MAX_SHARERS_FAVERS_SHOWN 7 // Maximum number of users shown who have share/fav a social note
#define Soc_MAX_BYTES_SUMMARY 1000
#define Soc_MAX_CHARS_IN_POST 1000
#define Soc_MAX_BYTES_SUMMARY 1000
#define Soc_MAX_CHARS_IN_POST 1000
// Number of recent publishings got and shown the first time, before refreshing
#define Soc_MAX_NEW_PUBS_TO_GET_AND_SHOW 10000 // Unlimited