mirror of https://github.com/acanas/swad-core.git
Version18.79.1
This commit is contained in:
parent
331ede1998
commit
9cb7fc6930
|
@ -439,7 +439,6 @@ void Ale_ShowAlertAndButton2 (Act_Action_t NextAction,const char *Anchor,const c
|
||||||
if (TxtButton[0])
|
if (TxtButton[0])
|
||||||
{
|
{
|
||||||
/* Start form */
|
/* Start form */
|
||||||
Frm_StartFormAnchor (NextAction,Anchor);
|
|
||||||
Frm_StartFormAnchorOnSubmit (NextAction,Anchor,OnSubmit);
|
Frm_StartFormAnchorOnSubmit (NextAction,Anchor,OnSubmit);
|
||||||
if (FuncParams)
|
if (FuncParams)
|
||||||
FuncParams ();
|
FuncParams ();
|
||||||
|
|
|
@ -457,24 +457,12 @@ En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 18.79 (2019-03-17)"
|
#define Log_PLATFORM_VERSION "SWAD 18.79.1 (2019-03-17)"
|
||||||
#define CSS_FILE "swad18.77.css"
|
#define CSS_FILE "swad18.77.css"
|
||||||
#define JS_FILE "swad18.77.js"
|
#define JS_FILE "swad18.77.js"
|
||||||
/*
|
/*
|
||||||
TODO: Cookies de terceros
|
|
||||||
Incrustar vídeos de YouTube hace que se guarden cookies de terceros,
|
|
||||||
lo cual implica tener que poner el maldito aviso.
|
|
||||||
Sólo se me ocurre que el usuario que quiera ver vídeos de YouTube
|
|
||||||
tendría que aceptar las cookies de terceros, que por defecto estarían bloqueadas.
|
|
||||||
Es decir, por defecto en vez de mostrarse un vídeo de YouTube
|
|
||||||
se mostraría un aviso indicando que si se desea ver el vídeo
|
|
||||||
hay que consentir las cookies de terceros.
|
|
||||||
Si el usuario acepta, a partir de ese momento se le mostrarían los vídeos.
|
|
||||||
Ese bloqueo o aceptación sería una opción en Perfil > Ajustes
|
|
||||||
que el usuario podría cambiar en cualquier momento.
|
|
||||||
|
|
||||||
TODO: Crear la función para ver Fig_COOKIES
|
TODO: Crear la función para ver Fig_COOKIES
|
||||||
Version 18.79.1: Mar 17, 2019 YouTube videos are not shown if user doesn't accept third party cookies. (? lines)
|
Version 18.79.1: Mar 17, 2019 YouTube videos are not shown if user doesn't accept third party cookies. (240541 lines)
|
||||||
Version 18.79: Mar 17, 2019 New module swad_cookies for user's preference about cookies. (240494 lines)
|
Version 18.79: Mar 17, 2019 New module swad_cookies for user's preference about cookies. (240494 lines)
|
||||||
2 changes necessary in database:
|
2 changes necessary in database:
|
||||||
ALTER TABLE usr_data ADD COLUMN ThirdPartyCookies ENUM('N','Y') NOT NULL DEFAULT 'N' AFTER SideCols,ADD INDEX (ThirdPartyCookies);
|
ALTER TABLE usr_data ADD COLUMN ThirdPartyCookies ENUM('N','Y') NOT NULL DEFAULT 'N' AFTER SideCols,ADD INDEX (ThirdPartyCookies);
|
||||||
|
|
75
swad_media.c
75
swad_media.c
|
@ -37,6 +37,7 @@
|
||||||
#include <unistd.h> // For unlink, lstat
|
#include <unistd.h> // For unlink, lstat
|
||||||
|
|
||||||
#include "swad_config.h"
|
#include "swad_config.h"
|
||||||
|
#include "swad_cookie.h"
|
||||||
#include "swad_global.h"
|
#include "swad_global.h"
|
||||||
#include "swad_file.h"
|
#include "swad_file.h"
|
||||||
#include "swad_file_browser.h"
|
#include "swad_file_browser.h"
|
||||||
|
@ -150,8 +151,7 @@ static void Med_ShowGIF (struct Media *Media,
|
||||||
static void Med_ShowVideo (struct Media *Media,
|
static void Med_ShowVideo (struct Media *Media,
|
||||||
const char PathMedPriv[PATH_MAX + 1],
|
const char PathMedPriv[PATH_MAX + 1],
|
||||||
const char *ClassMedia);
|
const char *ClassMedia);
|
||||||
static void Med_ShowYoutube (struct Media *Media,
|
static void Med_ShowYoutube (struct Media *Media,const char *ClassMedia);
|
||||||
const char *ClassMedia);
|
|
||||||
|
|
||||||
static Med_Type_t Med_GetTypeFromExtAndMIME (const char *Extension,
|
static Med_Type_t Med_GetTypeFromExtAndMIME (const char *Extension,
|
||||||
const char *MIMEType);
|
const char *MIMEType);
|
||||||
|
@ -1229,10 +1229,7 @@ void Med_ShowMedia (struct Media *Media,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/***** Start media container *****/
|
/***** Start media container *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"%s",ClassContainer);
|
fprintf (Gbl.F.Out,"<div class=\"%s\">",ClassContainer);
|
||||||
if (Media->Type == Med_YOUTUBE)
|
|
||||||
fprintf (Gbl.F.Out," MED_VIDEO_CONT");
|
|
||||||
fprintf (Gbl.F.Out,"\">");
|
|
||||||
|
|
||||||
if (Media->Type == Med_YOUTUBE)
|
if (Media->Type == Med_YOUTUBE)
|
||||||
/***** Show media *****/
|
/***** Show media *****/
|
||||||
|
@ -1493,32 +1490,54 @@ static void Med_ShowVideo (struct Media *Media,
|
||||||
/*************************** Show an embed media *****************************/
|
/*************************** Show an embed media *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Med_ShowYoutube (struct Media *Media,
|
static void Med_ShowYoutube (struct Media *Media,const char *ClassMedia)
|
||||||
const char *ClassMedia)
|
|
||||||
{
|
{
|
||||||
|
extern const char *Txt_To_watch_YouTube_videos_you_have_to_accept_third_party_cookies_in_your_personal_settings;
|
||||||
|
extern const char *Txt_Settings;
|
||||||
|
|
||||||
/***** Check if embed URL exists *****/
|
/***** Check if embed URL exists *****/
|
||||||
if (Media->URL[0]) // Embed URL
|
if (Media->URL[0]) // Embed URL
|
||||||
{
|
{
|
||||||
/***** Show linked external media *****/
|
if (Gbl.Usrs.Me.UsrDat.Prefs.AcceptThirdPartyCookies)
|
||||||
// Example of code give by YouTube:
|
{
|
||||||
// <iframe width="560" height="315"
|
/***** Show linked external media *****/
|
||||||
// src="https://www.youtube.com/embed/xu9IbeF9CBw"
|
// Example of code give by YouTube:
|
||||||
// frameborder="0"
|
// <iframe width="560" height="315"
|
||||||
// allow="accelerometer; autoplay; encrypted-media;
|
// src="https://www.youtube.com/embed/xu9IbeF9CBw"
|
||||||
// gyroscope; picture-in-picture" allowfullscreen>
|
// frameborder="0"
|
||||||
// </iframe>
|
// allow="accelerometer; autoplay; encrypted-media;
|
||||||
fprintf (Gbl.F.Out,"<iframe src=\"https://www.youtube.com/embed/%s\""
|
// gyroscope; picture-in-picture" allowfullscreen>
|
||||||
" frameborder=\"0\""
|
// </iframe>
|
||||||
" allow=\"accelerometer; autoplay; encrypted-media;"
|
fprintf (Gbl.F.Out,"<div class=\"MED_VIDEO_CONT\">"
|
||||||
" gyroscope; picture-in-picture\""
|
"<iframe src=\"https://www.youtube.com/embed/%s\""
|
||||||
" allowfullscreen=\"allowfullscreen\""
|
" frameborder=\"0\""
|
||||||
" class=\"%s\"",
|
" allow=\"accelerometer; autoplay; encrypted-media;"
|
||||||
Media->Name,ClassMedia);
|
" gyroscope; picture-in-picture\""
|
||||||
if (Media->Title)
|
" allowfullscreen=\"allowfullscreen\""
|
||||||
if (Media->Title[0])
|
" class=\"%s\"",
|
||||||
fprintf (Gbl.F.Out," title=\"%s\"",Media->Title);
|
Media->Name,ClassMedia);
|
||||||
fprintf (Gbl.F.Out,">"
|
if (Media->Title)
|
||||||
"</iframe>");
|
if (Media->Title[0])
|
||||||
|
fprintf (Gbl.F.Out," title=\"%s\"",Media->Title);
|
||||||
|
fprintf (Gbl.F.Out,">"
|
||||||
|
"</iframe>"
|
||||||
|
"</div>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/***** Alert to inform about third party cookies *****/
|
||||||
|
/* Start alert */
|
||||||
|
Ale_ShowAlertAndButton1 (Ale_INFO,Txt_To_watch_YouTube_videos_you_have_to_accept_third_party_cookies_in_your_personal_settings);
|
||||||
|
|
||||||
|
/* Put form to change cookies preferences */
|
||||||
|
if (!Gbl.Form.Inside)
|
||||||
|
Lay_PutContextualLinkIconText (ActReqEdiPrf,Coo_COOKIES_ID,NULL,
|
||||||
|
"cog.svg",
|
||||||
|
Txt_Settings);
|
||||||
|
|
||||||
|
/* End alert */
|
||||||
|
Ale_ShowAlertAndButton2 (ActUnk,NULL,NULL,NULL,Btn_NO_BUTTON,NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -371,7 +371,7 @@ void Ntf_ShowMyNotifications (void)
|
||||||
Txt_Mark_all_NOTIFICATIONS_as_read);
|
Txt_Mark_all_NOTIFICATIONS_as_read);
|
||||||
|
|
||||||
/* Put form to change notification preferences */
|
/* Put form to change notification preferences */
|
||||||
Lay_PutContextualLinkIconText (ActReqEdiPrf,NULL,NULL,
|
Lay_PutContextualLinkIconText (ActReqEdiPrf,Ntf_NOTIFICATIONS_ID,NULL,
|
||||||
"cog.svg",
|
"cog.svg",
|
||||||
Txt_Settings);
|
Txt_Settings);
|
||||||
|
|
||||||
|
@ -1924,6 +1924,9 @@ void Ntf_PutFormChangeNotifSentByEMail (void)
|
||||||
extern const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS];
|
extern const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS];
|
||||||
Ntf_NotifyEvent_t NotifyEvent;
|
Ntf_NotifyEvent_t NotifyEvent;
|
||||||
|
|
||||||
|
/***** Start section with preferences on privacy *****/
|
||||||
|
Lay_StartSection (Ntf_NOTIFICATIONS_ID);
|
||||||
|
|
||||||
/***** Start box *****/
|
/***** Start box *****/
|
||||||
Box_StartBox (NULL,Txt_Notifications,Ntf_PutIconsNotif,
|
Box_StartBox (NULL,Txt_Notifications,Ntf_PutIconsNotif,
|
||||||
Hlp_PROFILE_Preferences_notifications,Box_NOT_CLOSABLE);
|
Hlp_PROFILE_Preferences_notifications,Box_NOT_CLOSABLE);
|
||||||
|
@ -1988,6 +1991,9 @@ void Ntf_PutFormChangeNotifSentByEMail (void)
|
||||||
|
|
||||||
/***** End box *****/
|
/***** End box *****/
|
||||||
Box_EndBox ();
|
Box_EndBox ();
|
||||||
|
|
||||||
|
/***** End section with preferences about notifications *****/
|
||||||
|
Lay_EndSection ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -41,6 +41,8 @@
|
||||||
#define Ntf_MAX_CHARS_SUMMARY (256 - 1) // 255
|
#define Ntf_MAX_CHARS_SUMMARY (256 - 1) // 255
|
||||||
#define Ntf_MAX_BYTES_SUMMARY ((Ntf_MAX_CHARS_SUMMARY + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 4095
|
#define Ntf_MAX_BYTES_SUMMARY ((Ntf_MAX_CHARS_SUMMARY + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 4095
|
||||||
|
|
||||||
|
#define Ntf_NOTIFICATIONS_ID "notif"
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************** Public types *******************************/
|
/******************************** Public types *******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
39
swad_text.c
39
swad_text.c
|
@ -49865,6 +49865,45 @@ const char *Txt_To_use_chat_you_must_have_installed_the_software_X_and_add_Y_ =
|
||||||
" à lista de sites permitidos no painel de controle Java.";
|
" à lista de sites permitidos no painel de controle Java.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_To_watch_YouTube_videos_you_have_to_accept_third_party_cookies_in_your_personal_settings =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Per veure vídeos de YouTube"
|
||||||
|
" ha d'acceptar les cookies de tercers"
|
||||||
|
" en les seves paràmetres personals.";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Um YouTube-Videos anzusehen,"
|
||||||
|
" müssen Sie in Ihren persönlichen Einstellungen Cookies"
|
||||||
|
" von Drittanbietern akzeptieren.";
|
||||||
|
#elif L==3 // en
|
||||||
|
"To watch YouTube videos"
|
||||||
|
" you have to accept third party cookies"
|
||||||
|
" in your personal settings.";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Para ver vídeos de YouTube"
|
||||||
|
" tiene que aceptar las cookies de terceros"
|
||||||
|
" en sus ajustes personales.";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Pour regarder des vidéos YouTube,"
|
||||||
|
" vous devez accepter les cookies de tiers"
|
||||||
|
" dans vos réglages personnels.";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Para ver vídeos de YouTube"
|
||||||
|
" tiene que aceptar las cookies de terceros"
|
||||||
|
" en sus ajustes personales.";
|
||||||
|
#elif L==7 // it
|
||||||
|
"Per guardare i video di YouTube"
|
||||||
|
" devi accettare i cookie di terze parti"
|
||||||
|
" nelle tue impostazioni personali.";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Aby oglądać filmy z YouTube,"
|
||||||
|
" musisz zaakceptować pliki cookie innych firm"
|
||||||
|
" w swoich ustawieniach osobistych.";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Para assistir a vídeos do YouTube,"
|
||||||
|
" você precisa aceitar cookies de terceiros"
|
||||||
|
" nas suas configurações pessoais.";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Today =
|
const char *Txt_Today =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Avui";
|
"Avui";
|
||||||
|
|
Loading…
Reference in New Issue