diff --git a/css/swad20.1.1.css b/css/swad20.8.css similarity index 99% rename from css/swad20.1.1.css rename to css/swad20.8.css index 36ab1d507..e8ebd640e 100644 --- a/css/swad20.1.1.css +++ b/css/swad20.8.css @@ -2374,7 +2374,8 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;} .LST_EDIT_REC_HID {width:250px; color:#89BE87; font-weight:bold; font-size:11pt; height:20px; padding:0; margin:-1px; border-width:1px; border-style:solid; border-color:#ECE9D8;} .LST_EDIT_ROWS {width:30px; color:#202020; font-weight:bold; font-size:11pt; height:20px; padding:0; margin:-1px; border-width:1px; border-style:solid; border-color:#ECE9D8;} -.LICENSE {max-width:260px;} +.PUBLIC_FILE {max-width:400px;} +.LICENSE {max-width:400px;} /************** Paragraph (margin on top and bottom of a div) ****************/ .PAR diff --git a/swad_changelog.h b/swad_changelog.h index e51529e3a..1483498e3 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -555,8 +555,8 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 20.7.4 (2020-12-01)" -#define CSS_FILE "swad20.1.1.css" +#define Log_PLATFORM_VERSION "SWAD 20.8 (2020-12-15)" +#define CSS_FILE "swad20.8.css" #define JS_FILE "swad20.6.2.js" /* TODO: Juan Miguel Boyero Corral: Este verano ha habido varias personas que han solicitado incluir la funcionalidad del apartado de Actividades en SWADroid. Si lo ves viable podríamos estudiarlo. @@ -602,6 +602,7 @@ Juan Miguel. TODO: Fix bug: un profesor editor no puede ver las carpetas de TFG (proyectos) de otros. Debería poder. TODO: DNI de un estudiante sale erróneamente como ******* en lugar de mostrarse al ver los accesos de un estudiante a la asignatura. + Version 20.8: Dec 15, 2020 Fixed bug in file browser. Reported by Javier Fernández Baldomero. (304711 lines) Version 20.7.4: Dec 01, 2020 Fixed bug in pagination of forums of a thread. Reported by Javier Fernández Baldomero. (304705 lines) Version 20.7.3: Nov 26, 2020 Fixed bugs in pagination when editing assignments. (304706 lines) Version 20.7.2: Nov 25, 2020 Changes in edition of matches. (304690 lines) diff --git a/swad_file_browser.c b/swad_file_browser.c index d60f6d434..a03f0a8cd 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -1418,7 +1418,7 @@ static bool Brw_GetIfFolderHasPublicFiles (const char Path[PATH_MAX + 1]); static void Brw_ChangeFileOrFolderHiddenInDB (const char Path[PATH_MAX + 1],bool IsHidden); -static void Brw_ChangeFilePublicInDB (long PublisherUsrCod,const char *Path, +static void Brw_ChangeFilePublicInDB (struct FileMetadata *FileMetadata, bool IsPublic,Brw_License_t License); static long Brw_GetZoneUsrCodForFiles (void); @@ -9548,7 +9548,10 @@ void Brw_ShowFileMetadata (void) } Frm_StartForm (Brw_ActRecDatFile[Gbl.FileBrowser.Type]); - Brw_PutImplicitParamsFileBrowser (&Gbl.FileBrowser.FilFolLnk); + Brw_PutParamsFileBrowser (NULL, // Not used + NULL, // Not used + Brw_IS_UNKNOWN, // Not used + FileMetadata.FilCod); } /***** Begin box and table *****/ @@ -9649,7 +9652,7 @@ void Brw_ShowFileMetadata (void) if (ICanChangePublic) // I can change file to public { HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE, - "id=\"PublicFile\" name=\"PublicFile\""); + "id=\"PublicFile\" name=\"PublicFile\" class=\"PUBLIC_FILE\""); HTM_OPTION (HTM_Type_STRING,"N", !FileMetadata.IsPublic,false, "%s",Txt_Private_available_to_certain_users_identified); @@ -10205,6 +10208,7 @@ void Brw_ChgFileMetadata (void) { extern const char *Txt_The_properties_of_file_X_have_been_saved; struct FileMetadata FileMetadata; + bool Found; bool IAmTheOwner; bool PublicFileBeforeEdition; bool PublicFileAfterEdition; @@ -10214,106 +10218,103 @@ void Brw_ChgFileMetadata (void) /***** Get parameters related to file browser *****/ Brw_GetParAndInitFileBrowser (); - /***** Get file metadata from database *****/ - Brw_GetFileMetadataByPath (&FileMetadata); - Brw_GetFileTypeSizeAndDate (&FileMetadata); + /***** Get file metadata *****/ + FileMetadata.FilCod = Brw_GetParamFilCod (); + Brw_GetFileMetadataByCod (&FileMetadata); + Found = Brw_GetFileTypeSizeAndDate (&FileMetadata); - /***** Check if I can change file metadata *****/ - IAmTheOwner = Brw_CheckIfIAmOwnerOfFile (FileMetadata.PublisherUsrCod); - if (Brw_CheckIfICanEditFileMetadata (IAmTheOwner)) + if (Found) { - /* Check if the file was public before the edition */ - PublicFileBeforeEdition = FileMetadata.IsPublic; + /***** Check if I can change file metadata *****/ + IAmTheOwner = Brw_CheckIfIAmOwnerOfFile (FileMetadata.PublisherUsrCod); + if (Brw_CheckIfICanEditFileMetadata (IAmTheOwner)) + { + /* Check if the file was public before the edition */ + PublicFileBeforeEdition = FileMetadata.IsPublic; - /***** Get the new file privacy and license from form *****/ - switch (Gbl.FileBrowser.Type) - { - case Brw_ADMI_DOC_INS: - case Brw_ADMI_SHR_INS: - case Brw_ADMI_DOC_CTR: - case Brw_ADMI_SHR_CTR: - case Brw_ADMI_DOC_DEG: - case Brw_ADMI_SHR_DEG: - case Brw_ADMI_DOC_CRS: - case Brw_ADMI_SHR_CRS: - PublicFileAfterEdition = Brw_GetParamPublicFile (); - License = Brw_GetParLicense (); - break; - case Brw_ADMI_DOC_GRP: - case Brw_ADMI_TCH_CRS: - case Brw_ADMI_TCH_GRP: - case Brw_ADMI_SHR_GRP: - case Brw_ADMI_ASG_USR: - case Brw_ADMI_ASG_CRS: - case Brw_ADMI_WRK_USR: - case Brw_ADMI_WRK_CRS: - case Brw_ADMI_DOC_PRJ: - case Brw_ADMI_ASS_PRJ: - case Brw_ADMI_BRF_USR: - PublicFileAfterEdition = false; // Files in these zones can not be public - License = Brw_GetParLicense (); - break; - default: - PublicFileAfterEdition = false; // Files in other zones can not be public - License = Brw_LICENSE_DEFAULT; - break; - } - - /***** Change file metadata *****/ - if (FileMetadata.FilCod > 0) // Entry exists in database - Brw_ChangeFilePublicInDB (Gbl.Usrs.Me.UsrDat.UsrCod, - Gbl.FileBrowser.FilFolLnk.Full, - PublicFileAfterEdition,License); - else // No entry in database - FileMetadata.FilCod = Brw_AddPathToDB (Gbl.Usrs.Me.UsrDat.UsrCod,FileMetadata.FilFolLnk.Type, - Gbl.FileBrowser.FilFolLnk.Full, - PublicFileAfterEdition,License); - - /***** Remove the affected clipboards *****/ - Brw_RemoveAffectedClipboards (Gbl.FileBrowser.Type, - Gbl.Usrs.Me.UsrDat.UsrCod, - Gbl.Usrs.Other.UsrDat.UsrCod); - - /***** Insert file into public social activity *****/ - if (!PublicFileBeforeEdition && - PublicFileAfterEdition) // Only if file has changed from private to public + /***** Get the new file privacy and license from form *****/ switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOC_INS: - TL_StoreAndPublishNote (TL_NOTE_INS_DOC_PUB_FILE,FileMetadata.FilCod,&SocPub); - break; case Brw_ADMI_SHR_INS: - TL_StoreAndPublishNote (TL_NOTE_INS_SHA_PUB_FILE,FileMetadata.FilCod,&SocPub); - break; case Brw_ADMI_DOC_CTR: - TL_StoreAndPublishNote (TL_NOTE_CTR_DOC_PUB_FILE,FileMetadata.FilCod,&SocPub); - break; case Brw_ADMI_SHR_CTR: - TL_StoreAndPublishNote (TL_NOTE_CTR_SHA_PUB_FILE,FileMetadata.FilCod,&SocPub); - break; case Brw_ADMI_DOC_DEG: - TL_StoreAndPublishNote (TL_NOTE_DEG_DOC_PUB_FILE,FileMetadata.FilCod,&SocPub); - break; case Brw_ADMI_SHR_DEG: - TL_StoreAndPublishNote (TL_NOTE_DEG_SHA_PUB_FILE,FileMetadata.FilCod,&SocPub); - break; case Brw_ADMI_DOC_CRS: - TL_StoreAndPublishNote (TL_NOTE_CRS_DOC_PUB_FILE,FileMetadata.FilCod,&SocPub); - break; case Brw_ADMI_SHR_CRS: - TL_StoreAndPublishNote (TL_NOTE_CRS_SHA_PUB_FILE,FileMetadata.FilCod,&SocPub); + PublicFileAfterEdition = Brw_GetParamPublicFile (); + License = Brw_GetParLicense (); + break; + case Brw_ADMI_DOC_GRP: + case Brw_ADMI_TCH_CRS: + case Brw_ADMI_TCH_GRP: + case Brw_ADMI_SHR_GRP: + case Brw_ADMI_ASG_USR: + case Brw_ADMI_ASG_CRS: + case Brw_ADMI_WRK_USR: + case Brw_ADMI_WRK_CRS: + case Brw_ADMI_DOC_PRJ: + case Brw_ADMI_ASS_PRJ: + case Brw_ADMI_BRF_USR: + PublicFileAfterEdition = false; // Files in these zones can not be public + License = Brw_GetParLicense (); break; default: + PublicFileAfterEdition = false; // Files in other zones can not be public + License = Brw_LICENSE_DEFAULT; break; } - /***** Write sucess message *****/ - Ale_ShowAlert (Ale_SUCCESS,Txt_The_properties_of_file_X_have_been_saved, - Gbl.FileBrowser.FilFolLnk.Name); + /***** Change file metadata *****/ + Brw_ChangeFilePublicInDB (&FileMetadata,PublicFileAfterEdition,License); + + /***** Remove the affected clipboards *****/ + Brw_RemoveAffectedClipboards (Gbl.FileBrowser.Type, + Gbl.Usrs.Me.UsrDat.UsrCod, + Gbl.Usrs.Other.UsrDat.UsrCod); + + /***** Insert file into public social activity *****/ + if (!PublicFileBeforeEdition && + PublicFileAfterEdition) // Only if file has changed from private to public + switch (Gbl.FileBrowser.Type) + { + case Brw_ADMI_DOC_INS: + TL_StoreAndPublishNote (TL_NOTE_INS_DOC_PUB_FILE,FileMetadata.FilCod,&SocPub); + break; + case Brw_ADMI_SHR_INS: + TL_StoreAndPublishNote (TL_NOTE_INS_SHA_PUB_FILE,FileMetadata.FilCod,&SocPub); + break; + case Brw_ADMI_DOC_CTR: + TL_StoreAndPublishNote (TL_NOTE_CTR_DOC_PUB_FILE,FileMetadata.FilCod,&SocPub); + break; + case Brw_ADMI_SHR_CTR: + TL_StoreAndPublishNote (TL_NOTE_CTR_SHA_PUB_FILE,FileMetadata.FilCod,&SocPub); + break; + case Brw_ADMI_DOC_DEG: + TL_StoreAndPublishNote (TL_NOTE_DEG_DOC_PUB_FILE,FileMetadata.FilCod,&SocPub); + break; + case Brw_ADMI_SHR_DEG: + TL_StoreAndPublishNote (TL_NOTE_DEG_SHA_PUB_FILE,FileMetadata.FilCod,&SocPub); + break; + case Brw_ADMI_DOC_CRS: + TL_StoreAndPublishNote (TL_NOTE_CRS_DOC_PUB_FILE,FileMetadata.FilCod,&SocPub); + break; + case Brw_ADMI_SHR_CRS: + TL_StoreAndPublishNote (TL_NOTE_CRS_SHA_PUB_FILE,FileMetadata.FilCod,&SocPub); + break; + default: + break; + } + + /***** Write sucess message *****/ + Ale_ShowAlert (Ale_SUCCESS,Txt_The_properties_of_file_X_have_been_saved, + Gbl.FileBrowser.FilFolLnk.Name); + } + else + /***** Write error message and exit *****/ + Lay_NoPermissionExit (); } - else - /***** Write error message and exit *****/ - Lay_NoPermissionExit (); /***** Show again the file browser *****/ Brw_ShowAgainFileBrowserOrWorks (); @@ -10979,24 +10980,28 @@ static void Brw_ChangeFileOrFolderHiddenInDB (const char Path[PATH_MAX + 1],bool /******* Change publisher, public and license of file in the database ********/ /*****************************************************************************/ -static void Brw_ChangeFilePublicInDB (long PublisherUsrCod,const char *Path, +static void Brw_ChangeFilePublicInDB (struct FileMetadata *FileMetadata, bool IsPublic,Brw_License_t License) { - long Cod = Brw_GetCodForFiles (); + long Cod = Brw_GetCodForFiles (); long ZoneUsrCod = Brw_GetZoneUsrCodForFiles (); + /***** Trivial check *****/ + if (FileMetadata->FilCod <= 0) + return; + /***** Change publisher, public and license of file in database *****/ DB_QueryUPDATE ("can not change metadata of a file in database", - "UPDATE files SET PublisherUsrCod=%ld,Public='%c',License=%u" + "UPDATE files SET Public='%c',License=%u" " WHERE FileBrowser=%u AND Cod=%ld AND ZoneUsrCod=%ld" - " AND Path='%s'", - PublisherUsrCod, + " AND FilCod=%ld AND Path='%s'", IsPublic ? 'Y' : 'N', (unsigned) License, (unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type], Cod,ZoneUsrCod, - Path); + FileMetadata->FilCod, + FileMetadata->FilFolLnk.Full); } /*****************************************************************************/