Version18.120.1

This commit is contained in:
Antonio Cañas Vargas 2019-04-25 15:31:42 +02:00
parent c5c50eed37
commit 30ea0bec54
5 changed files with 110 additions and 114 deletions

View File

@ -448,10 +448,11 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 18.120 (2019-04-25)" #define Log_PLATFORM_VERSION "SWAD 18.120.1 (2019-04-25)"
#define CSS_FILE "swad18.112.1.css" #define CSS_FILE "swad18.112.1.css"
#define JS_FILE "swad18.116.5.js" #define JS_FILE "swad18.116.5.js"
/* /*
Version 18.120.1: Apr 25, 2019 Code refactoring related to file browser. (242461 lines)
Version 18.120: Apr 25, 2019 Code refactoring related to file browser. (242466 lines) Version 18.120: Apr 25, 2019 Code refactoring related to file browser. (242466 lines)
Version 18.119: Apr 25, 2019 Code refactoring related to selected users. (242536 lines) Version 18.119: Apr 25, 2019 Code refactoring related to selected users. (242536 lines)
Version 18.118.5: Apr 23, 2019 Code refactoring in file browser. (242497 lines) Version 18.118.5: Apr 23, 2019 Code refactoring in file browser. (242497 lines)

View File

@ -5497,7 +5497,7 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,const char *RowId,
Brw_GetFileTypeSizeAndDate (&FileMetadata); Brw_GetFileTypeSizeAndDate (&FileMetadata);
if (FileMetadata.FilCod <= 0) // No entry for this file in database table of files if (FileMetadata.FilCod <= 0) // No entry for this file in database table of files
/* Add entry to the table of files/folders */ /* Add entry to the table of files/folders */
FileMetadata.FilCod = Brw_AddPathToDB (-1L,FileMetadata.FileType, FileMetadata.FilCod = Brw_AddPathToDB (-1L,FileMetadata.FilFolLnk.Type,
Gbl.FileBrowser.FilFolLnk.Full,false,Brw_LICENSE_DEFAULT); Gbl.FileBrowser.FilFolLnk.Full,false,Brw_LICENSE_DEFAULT);
/***** Is this row public or private? *****/ /***** Is this row public or private? *****/
@ -5569,7 +5569,7 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,const char *RowId,
Level != 0) // Never copy root folder Level != 0) // Never copy root folder
// If path in the clipboard is equal to complete path in tree... // If path in the clipboard is equal to complete path in tree...
// ...or is the start of complete path in tree... // ...or is the start of complete path in tree...
if (Str_Path1BeginsByPath2 (Gbl.FileBrowser.FilFolLnk.Full,Gbl.FileBrowser.Clipboard.Path)) if (Str_Path1BeginsByPath2 (Gbl.FileBrowser.FilFolLnk.Full,Gbl.FileBrowser.Clipboard.FilFolLnk.Full))
Gbl.FileBrowser.Clipboard.IsThisFile = true; Gbl.FileBrowser.Clipboard.IsThisFile = true;
/* Check if I can modify (remove, rename, etc.) this file or folder */ /* Check if I can modify (remove, rename, etc.) this file or folder */
@ -5696,7 +5696,7 @@ void Brw_SetFullPathInTree (void)
/*****************************************************************************/ /*****************************************************************************/
/******* Check if the clipboard can be pasted into the current folder ********/ /******* Check if the clipboard can be pasted into the current folder ********/
/*****************************************************************************/ /*****************************************************************************/
// Return true if Gbl.FileBrowser.Clipboard.Path can be pasted into Gbl.FileBrowser.FilFolLnk.Full // Return true if Gbl.FileBrowser.Clipboard.FilFolLnk.Full can be pasted into Gbl.FileBrowser.FilFolLnk.Full
static bool Brw_CheckIfCanPasteIn (unsigned Level) static bool Brw_CheckIfCanPasteIn (unsigned Level)
{ {
@ -5711,7 +5711,7 @@ static bool Brw_CheckIfCanPasteIn (unsigned Level)
return false; return false;
/***** Do not paste a link in marks... *****/ /***** Do not paste a link in marks... *****/
if (Gbl.FileBrowser.Clipboard.FileType == Brw_IS_LINK && if (Gbl.FileBrowser.Clipboard.FilFolLnk.Type == Brw_IS_LINK &&
(Gbl.FileBrowser.Type == Brw_ADMI_MRK_CRS || (Gbl.FileBrowser.Type == Brw_ADMI_MRK_CRS ||
Gbl.FileBrowser.Type == Brw_ADMI_MRK_GRP)) Gbl.FileBrowser.Type == Brw_ADMI_MRK_GRP))
return false; return false;
@ -5727,10 +5727,10 @@ static bool Brw_CheckIfCanPasteIn (unsigned Level)
snprintf (PathDstWithFile,sizeof (PathDstWithFile), snprintf (PathDstWithFile,sizeof (PathDstWithFile),
"%s/%s", "%s/%s",
Gbl.FileBrowser.FilFolLnk.Full, Gbl.FileBrowser.FilFolLnk.Full,
Gbl.FileBrowser.Clipboard.FileName); Gbl.FileBrowser.Clipboard.FilFolLnk.Name);
return !Str_Path1BeginsByPath2 (PathDstWithFile, return !Str_Path1BeginsByPath2 (PathDstWithFile,
Gbl.FileBrowser.Clipboard.Path); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
} }
return true; // I can paste return true; // I can paste
@ -6154,7 +6154,7 @@ static void Brw_PutIconFileWithLinkToViewMetadata (unsigned Size,
Frm_LinkFormSubmit (Txt_View_data,Gbl.FileBrowser.TxtStyle,NULL); Frm_LinkFormSubmit (Txt_View_data,Gbl.FileBrowser.TxtStyle,NULL);
/***** Icon depending on the file extension *****/ /***** Icon depending on the file extension *****/
Brw_PutIconFile (Size,FileMetadata->FileType,FileMetadata->FilFolLnkName); Brw_PutIconFile (Size,FileMetadata->FilFolLnk.Type,FileMetadata->FilFolLnk.Name);
/***** End link and form *****/ /***** End link and form *****/
fprintf (Gbl.F.Out,"</a>"); fprintf (Gbl.F.Out,"</a>");
@ -6571,7 +6571,7 @@ void Brw_RemFileFromTree (void)
{ {
/* Name of the file/link to be shown */ /* Name of the file/link to be shown */
Brw_GetFileNameToShow (Str_FileIs (Gbl.FileBrowser.FilFolLnk.Name,"url") ? Brw_IS_LINK : Brw_GetFileNameToShow (Str_FileIs (Gbl.FileBrowser.FilFolLnk.Name,"url") ? Brw_IS_LINK :
Brw_IS_FILE, Brw_IS_FILE,
Gbl.FileBrowser.FilFolLnk.Name,FileNameToShow); Gbl.FileBrowser.FilFolLnk.Name,FileNameToShow);
/* Remove file/link from disk and database */ /* Remove file/link from disk and database */
@ -7014,13 +7014,13 @@ static void Brw_WriteCurrentClipboard (void)
// Not the root folder // Not the root folder
Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Clipboard.FileBrowser, Brw_GetFileNameToShowDependingOnLevel (Gbl.FileBrowser.Clipboard.FileBrowser,
Gbl.FileBrowser.Clipboard.Level, Gbl.FileBrowser.Clipboard.Level,
Gbl.FileBrowser.Clipboard.FileType, Gbl.FileBrowser.Clipboard.FilFolLnk.Type,
Gbl.FileBrowser.Clipboard.FileName, Gbl.FileBrowser.Clipboard.FilFolLnk.Name,
FileNameToShow); FileNameToShow);
Ale_ShowAlert (Ale_CLIPBOARD,"%s: %s, %s <strong>%s</strong>.", Ale_ShowAlert (Ale_CLIPBOARD,"%s: %s, %s <strong>%s</strong>.",
Txt_Copy_source,TxtClipboardZone, Txt_Copy_source,TxtClipboardZone,
TxtFileType[Gbl.FileBrowser.Clipboard.FileType], TxtFileType[Gbl.FileBrowser.Clipboard.FilFolLnk.Type],
FileNameToShow); FileNameToShow);
} }
else else
@ -7040,7 +7040,6 @@ static bool Brw_GetMyClipboard (void)
{ {
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
char PathUntilFileName[PATH_MAX + 1];
unsigned NumRows; unsigned NumRows;
unsigned UnsignedNum; unsigned UnsignedNum;
@ -7048,9 +7047,9 @@ static bool Brw_GetMyClipboard (void)
Gbl.FileBrowser.Clipboard.FileBrowser = Brw_UNKNOWN; Gbl.FileBrowser.Clipboard.FileBrowser = Brw_UNKNOWN;
Gbl.FileBrowser.Clipboard.Cod = -1L; Gbl.FileBrowser.Clipboard.Cod = -1L;
Gbl.FileBrowser.Clipboard.WorksUsrCod = -1L; Gbl.FileBrowser.Clipboard.WorksUsrCod = -1L;
Gbl.FileBrowser.Clipboard.FileType = Brw_IS_UNKNOWN; Gbl.FileBrowser.Clipboard.FilFolLnk.Type = Brw_IS_UNKNOWN;
Gbl.FileBrowser.Clipboard.Path[0] = '\0'; Gbl.FileBrowser.Clipboard.FilFolLnk.Full[0] = '\0';
Gbl.FileBrowser.Clipboard.FileName[0] = '\0'; Gbl.FileBrowser.Clipboard.FilFolLnk.Name[0] = '\0';
Gbl.FileBrowser.Clipboard.Level = 0; Gbl.FileBrowser.Clipboard.Level = 0;
/***** Get my current clipboard from database *****/ /***** Get my current clipboard from database *****/
@ -7078,21 +7077,21 @@ static bool Brw_GetMyClipboard (void)
Gbl.FileBrowser.Clipboard.WorksUsrCod = Str_ConvertStrCodToLongCod (row[2]); Gbl.FileBrowser.Clipboard.WorksUsrCod = Str_ConvertStrCodToLongCod (row[2]);
/* Get file type (row[3]) */ /* Get file type (row[3]) */
Gbl.FileBrowser.Clipboard.FileType = Brw_IS_UNKNOWN; // default Gbl.FileBrowser.Clipboard.FilFolLnk.Type = Brw_IS_UNKNOWN; // default
if (sscanf (row[3],"%u",&UnsignedNum) == 1) if (sscanf (row[3],"%u",&UnsignedNum) == 1)
if (UnsignedNum < Brw_NUM_FILE_TYPES) if (UnsignedNum < Brw_NUM_FILE_TYPES)
Gbl.FileBrowser.Clipboard.FileType = (Brw_FileType_t) UnsignedNum; Gbl.FileBrowser.Clipboard.FilFolLnk.Type = (Brw_FileType_t) UnsignedNum;
/* Get file path (row[4]) */ /* Get file path (row[4]) */
Str_Copy (Gbl.FileBrowser.Clipboard.Path,row[4], Str_Copy (Gbl.FileBrowser.Clipboard.FilFolLnk.Full,row[4],
PATH_MAX); PATH_MAX);
Str_SplitFullPathIntoPathAndFileName (Gbl.FileBrowser.Clipboard.Path, Str_SplitFullPathIntoPathAndFileName (Gbl.FileBrowser.Clipboard.FilFolLnk.Full,
PathUntilFileName, Gbl.FileBrowser.Clipboard.FilFolLnk.Path,
Gbl.FileBrowser.Clipboard.FileName); Gbl.FileBrowser.Clipboard.FilFolLnk.Name);
/* Set clipboard level /* Set clipboard level
(number of slashes in full path, including file or folder) */ (number of slashes in full path, including file or folder) */
Gbl.FileBrowser.Clipboard.Level = Brw_NumLevelsInPath (Gbl.FileBrowser.Clipboard.Path); Gbl.FileBrowser.Clipboard.Level = Brw_NumLevelsInPath (Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
} }
} }
@ -7791,7 +7790,7 @@ void Brw_PasteIntoFileBrowser (void)
// Possible degree: Gbl.FileBrowser.Clipboard.DegCod // Possible degree: Gbl.FileBrowser.Clipboard.DegCod
// Possible course: Gbl.FileBrowser.Clipboard.CrsCod // Possible course: Gbl.FileBrowser.Clipboard.CrsCod
// Possible student in works: Gbl.FileBrowser.Clipboard.WorksUsrCod // Possible student in works: Gbl.FileBrowser.Clipboard.WorksUsrCod
// Path (file or folder): Gbl.FileBrowser.Clipboard.Path // Path (file or folder): Gbl.FileBrowser.Clipboard.FilFolLnk.Full
// Destination: // Destination:
// Type of file browser: Gbl.FileBrowser.Type // Type of file browser: Gbl.FileBrowser.Type
// Possible institution: Gbl.Hierarchy.Ins.InsCod // Possible institution: Gbl.Hierarchy.Ins.InsCod
@ -7840,7 +7839,7 @@ static void Brw_PasteClipboard (void)
Cfg_PATH_INS_PRIVATE, Cfg_PATH_INS_PRIVATE,
(unsigned) (Ins.InsCod % 100), (unsigned) (Ins.InsCod % 100),
(unsigned) Ins.InsCod, (unsigned) Ins.InsCod,
Gbl.FileBrowser.Clipboard.Path); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_ShowErrorAndExit ("The copy source does not exist."); Lay_ShowErrorAndExit ("The copy source does not exist.");
break; break;
@ -7853,7 +7852,7 @@ static void Brw_PasteClipboard (void)
Cfg_PATH_CTR_PRIVATE, Cfg_PATH_CTR_PRIVATE,
(unsigned) (Ctr.CtrCod % 100), (unsigned) (Ctr.CtrCod % 100),
(unsigned) Ctr.CtrCod, (unsigned) Ctr.CtrCod,
Gbl.FileBrowser.Clipboard.Path); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_ShowErrorAndExit ("The copy source does not exist."); Lay_ShowErrorAndExit ("The copy source does not exist.");
break; break;
@ -7866,7 +7865,7 @@ static void Brw_PasteClipboard (void)
Cfg_PATH_DEG_PRIVATE, Cfg_PATH_DEG_PRIVATE,
(unsigned) (Deg.DegCod % 100), (unsigned) (Deg.DegCod % 100),
(unsigned) Deg.DegCod, (unsigned) Deg.DegCod,
Gbl.FileBrowser.Clipboard.Path); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_ShowErrorAndExit ("The copy source does not exist."); Lay_ShowErrorAndExit ("The copy source does not exist.");
break; break;
@ -7879,7 +7878,7 @@ static void Brw_PasteClipboard (void)
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%ld/%s", "%s/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod, Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,
Gbl.FileBrowser.Clipboard.Path); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_ShowErrorAndExit ("The copy source does not exist."); Lay_ShowErrorAndExit ("The copy source does not exist.");
break; break;
@ -7895,7 +7894,7 @@ static void Brw_PasteClipboard (void)
"%s/%ld/%s/%ld/%s", "%s/%ld/%s/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_GRP, Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_GRP,
GrpDat.GrpCod, GrpDat.GrpCod,
Gbl.FileBrowser.Clipboard.Path); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_ShowErrorAndExit ("The copy source does not exist."); Lay_ShowErrorAndExit ("The copy source does not exist.");
break; break;
@ -7912,7 +7911,7 @@ static void Brw_PasteClipboard (void)
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_USR, Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_USR,
(unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100), (unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100),
Gbl.FileBrowser.Clipboard.WorksUsrCod, Gbl.FileBrowser.Clipboard.WorksUsrCod,
Gbl.FileBrowser.Clipboard.Path); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
Usr_UsrDataDestructor (&UsrDat); Usr_UsrDataDestructor (&UsrDat);
} }
else else
@ -7927,7 +7926,7 @@ static void Brw_PasteClipboard (void)
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_USR, Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_USR,
(unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100), (unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100),
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.FileBrowser.Clipboard.Path); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_ShowErrorAndExit ("The copy source does not exist."); Lay_ShowErrorAndExit ("The copy source does not exist.");
break; break;
@ -7941,7 +7940,7 @@ static void Brw_PasteClipboard (void)
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_PRJ, Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_PRJ,
(unsigned) (PrjCod % 100), (unsigned) (PrjCod % 100),
PrjCod, PrjCod,
Gbl.FileBrowser.Clipboard.Path); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_ShowErrorAndExit ("The copy source does not exist."); Lay_ShowErrorAndExit ("The copy source does not exist.");
break; break;
@ -7949,7 +7948,7 @@ static void Brw_PasteClipboard (void)
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%s", "%s/%s",
Gbl.Usrs.Me.PathDir, Gbl.Usrs.Me.PathDir,
Gbl.FileBrowser.Clipboard.Path); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
break; break;
default: default:
Lay_ShowErrorAndExit ("Wrong file browser."); Lay_ShowErrorAndExit ("Wrong file browser.");
@ -8940,7 +8939,7 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType)
Gbl.FileBrowser.Level, Gbl.FileBrowser.Level,
Brw_IS_FOLDER, Brw_IS_FOLDER,
Gbl.FileBrowser.FilFolLnk.Name, Gbl.FileBrowser.FilFolLnk.Name,
FileNameToShow); FileNameToShow); // Folder name
Ale_CreateAlert (Ale_SUCCESS,NULL, Ale_CreateAlert (Ale_SUCCESS,NULL,
Txt_The_file_X_has_been_placed_inside_the_folder_Y, Txt_The_file_X_has_been_placed_inside_the_folder_Y,
Gbl.FileBrowser.NewFilFolLnkName, Gbl.FileBrowser.NewFilFolLnkName,
@ -9125,7 +9124,7 @@ void Brw_RecLinkFileBrowser (void)
Gbl.FileBrowser.Level, Gbl.FileBrowser.Level,
Brw_IS_FOLDER, Brw_IS_FOLDER,
Gbl.FileBrowser.FilFolLnk.Name, Gbl.FileBrowser.FilFolLnk.Name,
FileNameToShow); FileNameToShow); // Folder name
Ale_ShowAlert (Ale_SUCCESS,Txt_The_link_X_has_been_placed_inside_the_folder_Y, Ale_ShowAlert (Ale_SUCCESS,Txt_The_link_X_has_been_placed_inside_the_folder_Y,
FileName,FileNameToShow); FileName,FileNameToShow);
@ -9340,8 +9339,8 @@ bool Brw_CheckIfFileOrFolderIsHidden (struct FileMetadata *FileMetadata)
FileMetadata->FileBrowser, FileMetadata->FileBrowser,
FileMetadata->Cod, FileMetadata->Cod,
FileMetadata->ZoneUsrCod, FileMetadata->ZoneUsrCod,
FileMetadata->FullPathInTree, FileMetadata->FilFolLnk.Full,
FileMetadata->FullPathInTree) != 0); FileMetadata->FilFolLnk.Full) != 0);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -9396,8 +9395,8 @@ void Brw_ShowFileMetadata (void)
{ {
if (FileMetadata.FilCod <= 0) // No entry for this file in database table of files if (FileMetadata.FilCod <= 0) // No entry for this file in database table of files
/* Add entry to the table of files/folders */ /* Add entry to the table of files/folders */
FileMetadata.FilCod = Brw_AddPathToDB (-1L,FileMetadata.FileType, FileMetadata.FilCod = Brw_AddPathToDB (-1L,FileMetadata.FilFolLnk.Type,
FileMetadata.FullPathInTree, FileMetadata.FilFolLnk.Full,
false,Brw_LICENSE_DEFAULT); false,Brw_LICENSE_DEFAULT);
/***** Check if I can view this file. /***** Check if I can view this file.
@ -9429,8 +9428,8 @@ void Brw_ShowFileMetadata (void)
if (ICanView) if (ICanView)
{ {
if (FileMetadata.FileType == Brw_IS_FILE || if (FileMetadata.FilFolLnk.Type == Brw_IS_FILE ||
FileMetadata.FileType == Brw_IS_LINK) FileMetadata.FilFolLnk.Type == Brw_IS_LINK)
{ {
/***** Update number of views *****/ /***** Update number of views *****/
Brw_GetAndUpdateFileViews (&FileMetadata); Brw_GetAndUpdateFileViews (&FileMetadata);
@ -9452,8 +9451,8 @@ void Brw_ShowFileMetadata (void)
Gbl.FileBrowser.Type == Brw_SHOW_MRK_GRP) Gbl.FileBrowser.Type == Brw_SHOW_MRK_GRP)
URL[0] = '\0'; URL[0] = '\0';
else else
Brw_GetLinkToDownloadFile (FileMetadata.PathInTreeUntilFilFolLnk, Brw_GetLinkToDownloadFile (FileMetadata.FilFolLnk.Path,
FileMetadata.FilFolLnkName, FileMetadata.FilFolLnk.Name,
URL); URL);
/***** Can I edit the properties of the file? *****/ /***** Can I edit the properties of the file? *****/
@ -9461,8 +9460,8 @@ void Brw_ShowFileMetadata (void)
ICanEdit = Brw_CheckIfICanEditFileMetadata (IAmTheOwner); ICanEdit = Brw_CheckIfICanEditFileMetadata (IAmTheOwner);
/***** Name of the file/link to be shown *****/ /***** Name of the file/link to be shown *****/
Brw_GetFileNameToShow (FileMetadata.FileType, Brw_GetFileNameToShow (FileMetadata.FilFolLnk.Type,
FileMetadata.FilFolLnkName, FileMetadata.FilFolLnk.Name,
FileNameToShow); FileNameToShow);
/***** Start form to update the metadata of a file *****/ /***** Start form to update the metadata of a file *****/
@ -9786,7 +9785,7 @@ void Brw_DownloadFile (void)
{ {
if (FileMetadata.FilCod <= 0) // No entry for this file in database table of files if (FileMetadata.FilCod <= 0) // No entry for this file in database table of files
/* Add entry to the table of files/folders */ /* Add entry to the table of files/folders */
FileMetadata.FilCod = Brw_AddPathToDB (-1L,FileMetadata.FileType, FileMetadata.FilCod = Brw_AddPathToDB (-1L,FileMetadata.FilFolLnk.Type,
Gbl.FileBrowser.FilFolLnk.Full, Gbl.FileBrowser.FilFolLnk.Full,
false,Brw_LICENSE_DEFAULT); false,Brw_LICENSE_DEFAULT);
@ -9819,8 +9818,8 @@ void Brw_DownloadFile (void)
if (ICanView) if (ICanView)
{ {
if (FileMetadata.FileType == Brw_IS_FILE || if (FileMetadata.FilFolLnk.Type == Brw_IS_FILE ||
FileMetadata.FileType == Brw_IS_LINK) FileMetadata.FilFolLnk.Type == Brw_IS_LINK)
{ {
/***** Update number of views *****/ /***** Update number of views *****/
Brw_GetAndUpdateFileViews (&FileMetadata); Brw_GetAndUpdateFileViews (&FileMetadata);
@ -10003,16 +10002,16 @@ static void Brw_WriteBigLinkToDownloadFile (const char *URL,
/* Form to see marks */ /* Form to see marks */
Frm_StartForm (Gbl.FileBrowser.Type == Brw_SHOW_MRK_CRS ? ActSeeMyMrkCrs : Frm_StartForm (Gbl.FileBrowser.Type == Brw_SHOW_MRK_CRS ? ActSeeMyMrkCrs :
ActSeeMyMrkGrp); ActSeeMyMrkGrp);
Str_Copy (Gbl.FileBrowser.FilFolLnk.Path,FileMetadata->PathInTreeUntilFilFolLnk, Str_Copy (Gbl.FileBrowser.FilFolLnk.Path,FileMetadata->FilFolLnk.Path,
PATH_MAX); PATH_MAX);
Str_Copy (Gbl.FileBrowser.FilFolLnk.Name,FileMetadata->FilFolLnkName, Str_Copy (Gbl.FileBrowser.FilFolLnk.Name,FileMetadata->FilFolLnk.Name,
NAME_MAX); NAME_MAX);
Gbl.FileBrowser.FilFolLnk.Type = FileMetadata->FileType; Gbl.FileBrowser.FilFolLnk.Type = FileMetadata->FilFolLnk.Type;
Brw_PutImplicitParamsFileBrowser (); Brw_PutImplicitParamsFileBrowser ();
/* Link begin */ /* Link begin */
Frm_LinkFormSubmit (Txt_Check_marks_in_the_file,"FILENAME_TXT",NULL); Frm_LinkFormSubmit (Txt_Check_marks_in_the_file,"FILENAME_TXT",NULL);
Brw_PutIconFile (32,FileMetadata->FileType,FileMetadata->FilFolLnkName); Brw_PutIconFile (32,FileMetadata->FilFolLnk.Type,FileMetadata->FilFolLnk.Name);
/* Name of the file of marks, link end and form end */ /* Name of the file of marks, link end and form end */
fprintf (Gbl.F.Out,"&nbsp;%s&nbsp;" fprintf (Gbl.F.Out,"&nbsp;%s&nbsp;"
@ -10026,14 +10025,14 @@ static void Brw_WriteBigLinkToDownloadFile (const char *URL,
} }
else else
{ {
Title = (FileMetadata->FileType == Brw_IS_LINK) ? URL : // If it's a link, show full URL in title Title = (FileMetadata->FilFolLnk.Type == Brw_IS_LINK) ? URL : // If it's a link, show full URL in title
Txt_Download; Txt_Download;
/* Put anchor and filename */ /* Put anchor and filename */
fprintf (Gbl.F.Out,"<a href=\"%s\" class=\"FILENAME_TXT\"" fprintf (Gbl.F.Out,"<a href=\"%s\" class=\"FILENAME_TXT\""
" title=\"%s\" target=\"_blank\">", " title=\"%s\" target=\"_blank\">",
URL,Title); URL,Title);
Brw_PutIconFile (32,FileMetadata->FileType,FileMetadata->FilFolLnkName); Brw_PutIconFile (32,FileMetadata->FilFolLnk.Type,FileMetadata->FilFolLnk.Name);
fprintf (Gbl.F.Out,"&nbsp;%s&nbsp;" fprintf (Gbl.F.Out,"&nbsp;%s&nbsp;"
"<img src=\"%s/download.svg\"" "<img src=\"%s/download.svg\""
" alt=\"%s\" title=\"%s\"" " alt=\"%s\" title=\"%s\""
@ -10062,11 +10061,11 @@ static void Brw_WriteSmallLinkToDownloadFile (const char *URL,
/* Form to see marks */ /* Form to see marks */
Frm_StartForm (Gbl.FileBrowser.Type == Brw_SHOW_MRK_CRS ? ActSeeMyMrkCrs : Frm_StartForm (Gbl.FileBrowser.Type == Brw_SHOW_MRK_CRS ? ActSeeMyMrkCrs :
ActSeeMyMrkGrp); ActSeeMyMrkGrp);
Str_Copy (Gbl.FileBrowser.FilFolLnk.Path,FileMetadata->PathInTreeUntilFilFolLnk, Str_Copy (Gbl.FileBrowser.FilFolLnk.Path,FileMetadata->FilFolLnk.Path,
PATH_MAX); PATH_MAX);
Str_Copy (Gbl.FileBrowser.FilFolLnk.Name,FileMetadata->FilFolLnkName, Str_Copy (Gbl.FileBrowser.FilFolLnk.Name,FileMetadata->FilFolLnk.Name,
NAME_MAX); NAME_MAX);
Gbl.FileBrowser.FilFolLnk.Type = FileMetadata->FileType; Gbl.FileBrowser.FilFolLnk.Type = FileMetadata->FilFolLnk.Type;
Brw_PutImplicitParamsFileBrowser (); Brw_PutImplicitParamsFileBrowser ();
/* Link begin */ /* Link begin */
@ -10197,7 +10196,7 @@ void Brw_ChgFileMetadata (void)
Gbl.FileBrowser.FilFolLnk.Full, Gbl.FileBrowser.FilFolLnk.Full,
PublicFileAfterEdition,License); PublicFileAfterEdition,License);
else // No entry in database else // No entry in database
FileMetadata.FilCod = Brw_AddPathToDB (Gbl.Usrs.Me.UsrDat.UsrCod,FileMetadata.FileType, FileMetadata.FilCod = Brw_AddPathToDB (Gbl.Usrs.Me.UsrDat.UsrCod,FileMetadata.FilFolLnk.Type,
Gbl.FileBrowser.FilFolLnk.Full, Gbl.FileBrowser.FilFolLnk.Full,
PublicFileAfterEdition,License); PublicFileAfterEdition,License);
@ -10360,17 +10359,17 @@ void Brw_GetFileMetadataByPath (struct FileMetadata *FileMetadata)
FileMetadata->PublisherUsrCod = Str_ConvertStrCodToLongCod (row[4]); FileMetadata->PublisherUsrCod = Str_ConvertStrCodToLongCod (row[4]);
/* Get file type (row[5]) */ /* Get file type (row[5]) */
FileMetadata->FileType = Brw_IS_UNKNOWN; // default FileMetadata->FilFolLnk.Type = Brw_IS_UNKNOWN; // default
if (sscanf (row[5],"%u",&UnsignedNum) == 1) if (sscanf (row[5],"%u",&UnsignedNum) == 1)
if (UnsignedNum < Brw_NUM_FILE_TYPES) if (UnsignedNum < Brw_NUM_FILE_TYPES)
FileMetadata->FileType = (Brw_FileType_t) UnsignedNum; FileMetadata->FilFolLnk.Type = (Brw_FileType_t) UnsignedNum;
/* Get path (row[6]) */ /* Get path (row[6]) */
Str_Copy (FileMetadata->FullPathInTree,row[6], Str_Copy (FileMetadata->FilFolLnk.Full,row[6],
PATH_MAX); PATH_MAX);
Str_SplitFullPathIntoPathAndFileName (FileMetadata->FullPathInTree, Str_SplitFullPathIntoPathAndFileName (FileMetadata->FilFolLnk.Full,
FileMetadata->PathInTreeUntilFilFolLnk, FileMetadata->FilFolLnk.Path,
FileMetadata->FilFolLnkName); FileMetadata->FilFolLnk.Name);
/* File is hidden? (row[7]) */ /* File is hidden? (row[7]) */
switch (Gbl.FileBrowser.Type) switch (Gbl.FileBrowser.Type)
@ -10425,10 +10424,10 @@ void Brw_GetFileMetadataByPath (struct FileMetadata *FileMetadata)
FileMetadata->Cod = -1L; FileMetadata->Cod = -1L;
FileMetadata->ZoneUsrCod = -1L; FileMetadata->ZoneUsrCod = -1L;
FileMetadata->PublisherUsrCod = -1L; FileMetadata->PublisherUsrCod = -1L;
FileMetadata->FileType = Brw_IS_UNKNOWN; FileMetadata->FilFolLnk.Type = Brw_IS_UNKNOWN;
FileMetadata->FullPathInTree[0] = '\0'; FileMetadata->FilFolLnk.Full[0] = '\0';
FileMetadata->PathInTreeUntilFilFolLnk[0] = '\0'; FileMetadata->FilFolLnk.Path[0] = '\0';
FileMetadata->FilFolLnkName[0] = '\0'; FileMetadata->FilFolLnk.Name[0] = '\0';
FileMetadata->IsHidden = false; FileMetadata->IsHidden = false;
FileMetadata->IsPublic = false; FileMetadata->IsPublic = false;
FileMetadata->License = Brw_LICENSE_DEFAULT; FileMetadata->License = Brw_LICENSE_DEFAULT;
@ -10489,17 +10488,17 @@ void Brw_GetFileMetadataByCod (struct FileMetadata *FileMetadata)
FileMetadata->PublisherUsrCod = Str_ConvertStrCodToLongCod (row[4]); FileMetadata->PublisherUsrCod = Str_ConvertStrCodToLongCod (row[4]);
/* Get file type (row[5]) */ /* Get file type (row[5]) */
FileMetadata->FileType = Brw_IS_UNKNOWN; // default FileMetadata->FilFolLnk.Type = Brw_IS_UNKNOWN; // default
if (sscanf (row[5],"%u",&UnsignedNum) == 1) if (sscanf (row[5],"%u",&UnsignedNum) == 1)
if (UnsignedNum < Brw_NUM_FILE_TYPES) if (UnsignedNum < Brw_NUM_FILE_TYPES)
FileMetadata->FileType = (Brw_FileType_t) UnsignedNum; FileMetadata->FilFolLnk.Type = (Brw_FileType_t) UnsignedNum;
/* Get path (row[6]) */ /* Get path (row[6]) */
Str_Copy (FileMetadata->FullPathInTree,row[6], Str_Copy (FileMetadata->FilFolLnk.Full,row[6],
PATH_MAX); PATH_MAX);
Str_SplitFullPathIntoPathAndFileName (FileMetadata->FullPathInTree, Str_SplitFullPathIntoPathAndFileName (FileMetadata->FilFolLnk.Full,
FileMetadata->PathInTreeUntilFilFolLnk, FileMetadata->FilFolLnk.Path,
FileMetadata->FilFolLnkName); FileMetadata->FilFolLnk.Name);
/* Is a hidden file? (row[7]) */ /* Is a hidden file? (row[7]) */
switch (Gbl.FileBrowser.Type) switch (Gbl.FileBrowser.Type)
@ -10554,10 +10553,10 @@ void Brw_GetFileMetadataByCod (struct FileMetadata *FileMetadata)
FileMetadata->Cod = -1L; FileMetadata->Cod = -1L;
FileMetadata->ZoneUsrCod = -1L; FileMetadata->ZoneUsrCod = -1L;
FileMetadata->PublisherUsrCod = -1L; FileMetadata->PublisherUsrCod = -1L;
FileMetadata->FileType = Brw_IS_UNKNOWN; FileMetadata->FilFolLnk.Type = Brw_IS_UNKNOWN;
FileMetadata->FullPathInTree[0] = '\0'; FileMetadata->FilFolLnk.Full[0] = '\0';
FileMetadata->PathInTreeUntilFilFolLnk[0] = '\0'; FileMetadata->FilFolLnk.Path[0] = '\0';
FileMetadata->FilFolLnkName[0] = '\0'; FileMetadata->FilFolLnk.Name[0] = '\0';
FileMetadata->IsHidden = false; FileMetadata->IsHidden = false;
FileMetadata->IsPublic = false; FileMetadata->IsPublic = false;
FileMetadata->License = Brw_LICENSE_DEFAULT; FileMetadata->License = Brw_LICENSE_DEFAULT;
@ -10588,11 +10587,11 @@ bool Brw_GetFileTypeSizeAndDate (struct FileMetadata *FileMetadata)
snprintf (Path,sizeof (Path), snprintf (Path,sizeof (Path),
"%s/%s", "%s/%s",
Gbl.FileBrowser.Priv.PathAboveRootFolder, Gbl.FileBrowser.Priv.PathAboveRootFolder,
FileMetadata->FullPathInTree); FileMetadata->FilFolLnk.Full);
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
{ {
// Error on lstat // Error on lstat
FileMetadata->FileType = Brw_IS_UNKNOWN; FileMetadata->FilFolLnk.Type = Brw_IS_UNKNOWN;
FileMetadata->Size = (off_t) 0; FileMetadata->Size = (off_t) 0;
FileMetadata->Time = (time_t) 0; FileMetadata->Time = (time_t) 0;
return false; return false;
@ -10600,12 +10599,12 @@ bool Brw_GetFileTypeSizeAndDate (struct FileMetadata *FileMetadata)
else else
{ {
if (S_ISDIR (FileStatus.st_mode)) if (S_ISDIR (FileStatus.st_mode))
FileMetadata->FileType = Brw_IS_FOLDER; FileMetadata->FilFolLnk.Type = Brw_IS_FOLDER;
else if (S_ISREG (FileStatus.st_mode)) else if (S_ISREG (FileStatus.st_mode))
FileMetadata->FileType = Str_FileIs (FileMetadata->FullPathInTree,"url") ? Brw_IS_LINK : FileMetadata->FilFolLnk.Type = Str_FileIs (FileMetadata->FilFolLnk.Full,"url") ? Brw_IS_LINK :
Brw_IS_FILE; Brw_IS_FILE;
else else
FileMetadata->FileType = Brw_IS_UNKNOWN; FileMetadata->FilFolLnk.Type = Brw_IS_UNKNOWN;
FileMetadata->Size = FileStatus.st_size; FileMetadata->Size = FileStatus.st_size;
FileMetadata->Time = FileStatus.st_mtime; FileMetadata->Time = FileStatus.st_mtime;
return true; return true;
@ -11714,7 +11713,7 @@ void Brw_GetSummaryAndContentOfFile (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
Brw_GetFileMetadataByCod (&FileMetadata); Brw_GetFileMetadataByCod (&FileMetadata);
/***** Copy file name into summary string *****/ /***** Copy file name into summary string *****/
Str_Copy (SummaryStr,FileMetadata.FilFolLnkName, Str_Copy (SummaryStr,FileMetadata.FilFolLnk.Name,
Ntf_MAX_BYTES_SUMMARY); Ntf_MAX_BYTES_SUMMARY);
/***** Copy some file metadata into content string *****/ /***** Copy some file metadata into content string *****/
@ -11735,8 +11734,8 @@ void Brw_GetSummaryAndContentOfFile (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
if (asprintf (ContentStr,"%s: %s<br />" // File name if (asprintf (ContentStr,"%s: %s<br />" // File name
"%s: %s<br />" // File path "%s: %s<br />" // File path
"%s: %s", // Publisher "%s: %s", // Publisher
Txt_Filename,FileMetadata.FilFolLnkName, Txt_Filename,FileMetadata.FilFolLnk.Name,
Txt_Folder,FileMetadata.PathInTreeUntilFilFolLnk, // TODO: Fix bug: do not write internal name (for example "comun") Txt_Folder,FileMetadata.FilFolLnk.Path, // TODO: Fix bug: do not write internal name (for example "comun")
Txt_Uploaded_by, Txt_Uploaded_by,
FileHasPublisher ? PublisherUsrDat.FullName : FileHasPublisher ? PublisherUsrDat.FullName :
Txt_ROLES_SINGUL_Abc[Rol_UNK][Usr_SEX_UNKNOWN]) < 0) Txt_ROLES_SINGUL_Abc[Rol_UNK][Usr_SEX_UNKNOWN]) < 0)
@ -12041,8 +12040,8 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
BgColor,Title); BgColor,Title);
/***** Get the name of the file to show *****/ /***** Get the name of the file to show *****/
Brw_GetFileNameToShow (FileMetadata.FileType, Brw_GetFileNameToShow (FileMetadata.FilFolLnk.Type,
FileMetadata.FilFolLnkName, FileMetadata.FilFolLnk.Name,
FileNameToShow); FileNameToShow);
/***** Write file name using path (row[1]) *****/ /***** Write file name using path (row[1]) *****/
@ -12078,7 +12077,7 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
Frm_StartForm (Action); Frm_StartForm (Action);
/* Parameters to go to file / folder */ /* Parameters to go to file / folder */
if (FileMetadata.FileType == Brw_IS_FOLDER) if (FileMetadata.FilFolLnk.Type == Brw_IS_FOLDER)
Brw_PutImplicitParamsFileBrowser (); Brw_PutImplicitParamsFileBrowser ();
else else
Brw_PutParamsFileBrowser (NULL, // Not used Brw_PutParamsFileBrowser (NULL, // Not used
@ -12088,7 +12087,7 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
/* File or folder icon */ /* File or folder icon */
Frm_LinkFormSubmit (FileNameToShow,"DAT_N",NULL); Frm_LinkFormSubmit (FileNameToShow,"DAT_N",NULL);
if (FileMetadata.FileType == Brw_IS_FOLDER) if (FileMetadata.FilFolLnk.Type == Brw_IS_FOLDER)
/* Icon with folder */ /* Icon with folder */
fprintf (Gbl.F.Out,"<img src=\"%s/folder-yellow.png\"" fprintf (Gbl.F.Out,"<img src=\"%s/folder-yellow.png\""
" alt=\"%s\" title=\"%s\"" " alt=\"%s\" title=\"%s\""
@ -12097,7 +12096,7 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
Txt_Folder,Txt_Folder); Txt_Folder,Txt_Folder);
else else
/* Icon with file type or link */ /* Icon with file type or link */
Brw_PutIconFile (16,FileMetadata.FileType,FileMetadata.FilFolLnkName); Brw_PutIconFile (16,FileMetadata.FilFolLnk.Type,FileMetadata.FilFolLnk.Name);
fprintf (Gbl.F.Out,"&nbsp;%s" fprintf (Gbl.F.Out,"&nbsp;%s"
"</a>", "</a>",
FileNameToShow); FileNameToShow);

View File

@ -113,6 +113,14 @@ typedef enum
Brw_ICON_EDIT = 2 Brw_ICON_EDIT = 2
} Brw_IconViewEdit_t; } Brw_IconViewEdit_t;
struct FilFolLnk
{
char Full[PATH_MAX + 1]; // Full path = Path/Name
char Path[PATH_MAX + 1]; // Path in tree, without ending '/', until file, folder or link name
char Name[NAME_MAX + 1]; // File, folder or link name
Brw_FileType_t Type;
};
struct FileMetadata struct FileMetadata
{ {
long FilCod; long FilCod;
@ -120,14 +128,10 @@ struct FileMetadata
long Cod; // Code of institution, centre, degree, course or group long Cod; // Code of institution, centre, degree, course or group
long ZoneUsrCod; long ZoneUsrCod;
long PublisherUsrCod; long PublisherUsrCod;
char FullPathInTree[PATH_MAX + 1]; struct FilFolLnk FilFolLnk;
// FullPathInTree is splitted as PathInTreeUntilFilFolLnk/FilFolLnkName
char PathInTreeUntilFilFolLnk[PATH_MAX + 1]; // Path in tree, without ending '/', until file, folder or link name
char FilFolLnkName[NAME_MAX + 1]; // File, folder or link name
bool IsHidden; bool IsHidden;
bool IsPublic; bool IsPublic;
Brw_License_t License; Brw_License_t License;
Brw_FileType_t FileType;
off_t Size; off_t Size;
time_t Time; time_t Time;
unsigned NumMyViews; unsigned NumMyViews;

View File

@ -509,13 +509,7 @@ struct Globals
char PathRootFolder[PATH_MAX + 1]; char PathRootFolder[PATH_MAX + 1];
} Priv; } Priv;
char NewFilFolLnkName[NAME_MAX + 1]; char NewFilFolLnkName[NAME_MAX + 1];
struct struct FilFolLnk FilFolLnk;
{
char Full[PATH_MAX + 1]; // Full path in tree, including filename
char Path[PATH_MAX + 1]; // Path in tree above filename
char Name[NAME_MAX + 1]; // Filename
Brw_FileType_t Type;
} FilFolLnk;
unsigned Level; unsigned Level;
bool ICanEditFileOrFolder; // Can I modify (remove, rename, create inside, etc.) a file or folder? bool ICanEditFileOrFolder; // Can I modify (remove, rename, create inside, etc.) a file or folder?
Brw_IconViewEdit_t IconViewEdit; Brw_IconViewEdit_t IconViewEdit;
@ -524,10 +518,8 @@ struct Globals
Brw_FileBrowser_t FileBrowser; // Type of the file browser Brw_FileBrowser_t FileBrowser; // Type of the file browser
long Cod; // Code of the institution/centre/degree/course/group related to the file browser with the clipboard long Cod; // Code of the institution/centre/degree/course/group related to the file browser with the clipboard
long WorksUsrCod; // User code of the user related to the works file browser with the clipboard long WorksUsrCod; // User code of the user related to the works file browser with the clipboard
char Path[PATH_MAX + 1]; // Complete path in the file browser
char FileName[NAME_MAX + 1]; // File name, last part of complete path in the file browser
unsigned Level; unsigned Level;
Brw_FileType_t FileType; // Folder, file or link struct FilFolLnk FilFolLnk;
bool IsThisTree; // When showing a file browser, is it that corresponding to the clipboard? bool IsThisTree; // When showing a file browser, is it that corresponding to the clipboard?
bool IsThisFile; // When showing a row of a file browser, are we in the path of the clipboard? bool IsThisFile; // When showing a row of a file browser, are we in the path of the clipboard?
} Clipboard; } Clipboard;

View File

@ -4570,7 +4570,7 @@ static bool Svc_WriteRowFileBrowser (unsigned Level,Brw_FileType_t FileType,cons
if (FileMetadata.FilCod <= 0) // No entry for this file in database table of files if (FileMetadata.FilCod <= 0) // No entry for this file in database table of files
/* Add entry to the table of files/folders */ /* Add entry to the table of files/folders */
FileMetadata.FilCod = Brw_AddPathToDB (-1L,FileMetadata.FileType, FileMetadata.FilCod = Brw_AddPathToDB (-1L,FileMetadata.FilFolLnk.Type,
Gbl.FileBrowser.FilFolLnk.Full,false,Brw_LICENSE_DEFAULT); Gbl.FileBrowser.FilFolLnk.Full,false,Brw_LICENSE_DEFAULT);
Gbl.Usrs.Other.UsrDat.UsrCod = FileMetadata.PublisherUsrCod; Gbl.Usrs.Other.UsrDat.UsrCod = FileMetadata.PublisherUsrCod;
@ -4726,9 +4726,9 @@ int swad__getFile (struct soap *soap,
/***** Set paths *****/ /***** Set paths *****/
Hie_InitHierarchy (); Hie_InitHierarchy ();
Brw_InitializeFileBrowser (); Brw_InitializeFileBrowser ();
Str_Copy (Gbl.FileBrowser.FilFolLnk.Path,FileMetadata.PathInTreeUntilFilFolLnk, Str_Copy (Gbl.FileBrowser.FilFolLnk.Path,FileMetadata.FilFolLnk.Path,
PATH_MAX); PATH_MAX);
Str_Copy (Gbl.FileBrowser.FilFolLnk.Name,FileMetadata.FilFolLnkName, Str_Copy (Gbl.FileBrowser.FilFolLnk.Name,FileMetadata.FilFolLnk.Name,
NAME_MAX); NAME_MAX);
Brw_SetFullPathInTree (); Brw_SetFullPathInTree ();
@ -4739,12 +4739,12 @@ int swad__getFile (struct soap *soap,
Brw_GetAndUpdateFileViews (&FileMetadata); Brw_GetAndUpdateFileViews (&FileMetadata);
/***** Create and get link to download the file *****/ /***** Create and get link to download the file *****/
Brw_GetLinkToDownloadFile (FileMetadata.PathInTreeUntilFilFolLnk, Brw_GetLinkToDownloadFile (FileMetadata.FilFolLnk.Path,
FileMetadata.FilFolLnkName, FileMetadata.FilFolLnk.Name,
URL); URL);
/***** Copy data into output structure *****/ /***** Copy data into output structure *****/
Str_Copy (getFileOut->fileName,FileMetadata.FilFolLnkName, Str_Copy (getFileOut->fileName,FileMetadata.FilFolLnk.Name,
NAME_MAX); NAME_MAX);
Str_Copy (getFileOut->URL,URL, Str_Copy (getFileOut->URL,URL,
@ -4804,7 +4804,7 @@ int swad__getMarks (struct soap *soap,
FileMetadata.FilCod = (long) fileCode; FileMetadata.FilCod = (long) fileCode;
Brw_GetFileMetadataByCod (&FileMetadata); Brw_GetFileMetadataByCod (&FileMetadata);
if (FileMetadata.FileType != Brw_IS_FILE || if (FileMetadata.FilFolLnk.Type != Brw_IS_FILE ||
FileMetadata.IsHidden || FileMetadata.IsHidden ||
(FileMetadata.FileBrowser != Brw_ADMI_MRK_CRS && (FileMetadata.FileBrowser != Brw_ADMI_MRK_CRS &&
FileMetadata.FileBrowser != Brw_ADMI_MRK_GRP)) FileMetadata.FileBrowser != Brw_ADMI_MRK_GRP))