From 72817bd1a13dfb3b02cb9975f229b0e3a46f8f33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Wed, 8 Mar 2017 22:23:52 +0100 Subject: [PATCH] Version 16.154.3 --- swad_assignment.c | 18 ++++++++++-------- swad_assignment.h | 6 ++---- swad_changelog.h | 3 ++- swad_database.c | 20 ++++++++++---------- swad_file_browser.c | 25 ++++++++++++++----------- swad_file_browser.h | 5 ++++- 6 files changed, 42 insertions(+), 35 deletions(-) diff --git a/swad_assignment.c b/swad_assignment.c index c61a9d54..4c760342 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -447,9 +447,11 @@ static void Asg_WriteAssignmentFolder (struct Assignment *Asg) if (Asg->SendWork == Asg_SEND_WORK) { /***** Folder icon *****/ - if (Gbl.Usrs.Me.LoggedRole == Rol_STUDENT && - Asg->Open && - Asg->IBelongToCrsOrGrps) // I can send files to this assignment folder + if (!Asg->Hidden && // It's visible (not hidden) + Asg->Open && // It's open (inside dates) + Asg->IBelongToCrsOrGrps && // I belong to course or groups + Gbl.Usrs.Me.LoggedRole == Rol_STUDENT) // I am a student + // I can send files to this assignment folder { /* Form to create a new file or folder */ Act_FormStart (ActFrmCreAsgUsr); @@ -739,11 +741,11 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query) /* Get the title of the assignment (row[6]) */ Str_Copy (Asg->Title,row[6], - Asg_MAX_CHARS_ASSIGNMENT_TITLE); + Asg_MAX_BYTES_ASSIGNMENT_TITLE); /* Get the folder for the assignment files (row[7]) */ Str_Copy (Asg->Folder,row[7], - Asg_MAX_BYTES_FOLDER); + Brw_MAX_BYTES_FOLDER); Asg->SendWork = (Asg->Folder[0] != '\0'); /* Can I do this assignment? */ @@ -1148,14 +1150,14 @@ void Asg_RequestCreatOrEditAsg (void) "" "" "" "", The_ClassForm[Gbl.Prefs.Theme], Txt_Upload_files_QUESTION, Txt_Folder, - Asg_MAX_CHARS_FOLDER,Asg_MAX_CHARS_FOLDER,Asg.Folder); + Brw_MAX_CHARS_FOLDER,Asg.Folder); /***** Assignment text *****/ fprintf (Gbl.F.Out,"" @@ -1288,7 +1290,7 @@ void Asg_RecFormAssignment (void) Par_GetParToText ("Title",NewAsg.Title,Asg_MAX_BYTES_ASSIGNMENT_TITLE); /***** Get folder name where to send works of the assignment *****/ - Par_GetParToText ("Folder",NewAsg.Folder,Asg_MAX_BYTES_FOLDER); + Par_GetParToText ("Folder",NewAsg.Folder,Brw_MAX_BYTES_FOLDER); NewAsg.SendWork = (NewAsg.Folder[0]) ? Asg_SEND_WORK : Asg_DO_NOT_SEND_WORK; diff --git a/swad_assignment.h b/swad_assignment.h index 4e164b31..98dc0f86 100644 --- a/swad_assignment.h +++ b/swad_assignment.h @@ -28,6 +28,7 @@ /*****************************************************************************/ #include "swad_date.h" +#include "swad_file_browser.h" #include "swad_notification.h" #include "swad_user.h" @@ -38,9 +39,6 @@ #define Asg_MAX_CHARS_ASSIGNMENT_TITLE (128 - 1) // 127 #define Asg_MAX_BYTES_ASSIGNMENT_TITLE ((Asg_MAX_CHARS_ASSIGNMENT_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 -#define Asg_MAX_CHARS_FOLDER NAME_MAX // 255 -#define Asg_MAX_BYTES_FOLDER Asg_MAX_CHARS_FOLDER // 255 - #define Asg_NUM_TYPES_SEND_WORK 2 typedef enum { @@ -57,7 +55,7 @@ struct Assignment bool Open; char Title[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1]; Asg_SendWork_t SendWork; - char Folder[Asg_MAX_BYTES_FOLDER + 1]; + char Folder[Brw_MAX_BYTES_FOLDER + 1]; bool IBelongToCrsOrGrps; // I can do this assignment // (it is associated to no groups // or, if associated to groups, diff --git a/swad_changelog.h b/swad_changelog.h index e59459aa..f361fd3f 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -204,13 +204,14 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.154.2 (2017-03-08)" +#define Log_PLATFORM_VERSION "SWAD 16.154.3 (2017-03-08)" #define CSS_FILE "swad16.147.css" #define JS_FILE "swad16.144.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 16.154.3: Mar 08, 2017 Bug fixing related to folders in assignments and file browsers. (216473 lines) Version 16.154.2: Mar 08, 2017 Adjusting size of database fields. (216466 lines) 2 changes necessary in database: ALTER TABLE assignments CHANGE COLUMN Title Title VARCHAR(2047) NOT NULL; diff --git a/swad_database.c b/swad_database.c index d4f606e2..41fdcf82 100644 --- a/swad_database.c +++ b/swad_database.c @@ -289,7 +289,7 @@ mysql> DESCRIBE assignments; "StartTime DATETIME NOT NULL," "EndTime DATETIME NOT NULL," "Title VARCHAR(2047) NOT NULL," // Asg_MAX_BYTES_ASSIGNMENT_TITLE - "Folder VARBINARY(255) NOT NULL," // Asg_MAX_BYTES_FOLDER + "Folder VARBINARY(255) NOT NULL," // Brw_MAX_BYTES_FOLDER "Txt TEXT NOT NULL," // Cns_MAX_BYTES_TEXT "UNIQUE INDEX(AsgCod)," "INDEX(CrsCod,Hidden))"); @@ -313,15 +313,15 @@ mysql> DESCRIBE att_events; 9 rows in set (0.00 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS att_events (" - "AttCod INT NOT NULL AUTO_INCREMENT," - "CrsCod INT NOT NULL DEFAULT -1," - "Hidden ENUM('N','Y') NOT NULL DEFAULT 'N'," - "UsrCod INT NOT NULL," - "StartTime DATETIME NOT NULL," - "EndTime DATETIME NOT NULL," - "CommentTchVisible ENUM('N','Y') NOT NULL DEFAULT 'N'," - "Title VARCHAR(255) NOT NULL," - "Txt TEXT NOT NULL," + "AttCod INT NOT NULL AUTO_INCREMENT," + "CrsCod INT NOT NULL DEFAULT -1," + "Hidden ENUM('N','Y') NOT NULL DEFAULT 'N'," + "UsrCod INT NOT NULL," + "StartTime DATETIME NOT NULL," + "EndTime DATETIME NOT NULL," + "CommentTchVisible ENUM('N','Y') NOT NULL DEFAULT 'N'," + "Title VARCHAR(255) NOT NULL," + "Txt TEXT NOT NULL," "UNIQUE INDEX(AttCod)," "INDEX(CrsCod,Hidden))"); diff --git a/swad_file_browser.c b/swad_file_browser.c index 2e28ee36..096d6ce6 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -1565,7 +1565,7 @@ static bool Brw_PasteTreeIntoFolder (unsigned Level, const char PathDstInTree[PATH_MAX + 1], struct Brw_NumObjects *Pasted, long *FirstFilCod); -static void Brw_PutFormToCreateAFolder (const char *FileNameToShow); +static void Brw_PutFormToCreateAFolder (const char FileNameToShow[NAME_MAX + 1]); static void Brw_PutFormToUploadFilesUsingDropzone (const char *FileNameToShow); static void Brw_PutFormToUploadOneFileClassic (const char *FileNameToShow); static void Brw_PutFormToPasteAFileOrFolder (const char *FileNameToShow); @@ -2500,7 +2500,7 @@ static void Brw_GetParamsPathInTreeAndFileName (void) if (Gbl.FileBrowser.Level == 1) // We are in this case: assignments/assignment-folder Str_Copy (Gbl.FileBrowser.Asg.Folder,Gbl.FileBrowser.FilFolLnkName, - Asg_MAX_BYTES_FOLDER); + Brw_MAX_BYTES_FOLDER); else { // We are in this case: assignments/assignment-folder/rest-of-path @@ -2510,7 +2510,7 @@ static void Brw_GetParamsPathInTreeAndFileName (void) if (*Ptr == '/') Ptr++; // Skip '/' for (i = 0; - i < Asg_MAX_BYTES_FOLDER && *Ptr && *Ptr != '/'; + i < Brw_MAX_BYTES_FOLDER && *Ptr && *Ptr != '/'; i++, Ptr++) Gbl.FileBrowser.Asg.Folder[i] = *Ptr; // Copy assignment folder Gbl.FileBrowser.Asg.Folder[i] = '\0'; @@ -5206,7 +5206,7 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,Brw_ExpandTree_t ExpandTree, if (Level == 1) // Main folder of the assignment { Str_Copy (Gbl.FileBrowser.Asg.Folder,FileName, - Asg_MAX_BYTES_FOLDER); + Brw_MAX_BYTES_FOLDER); Asg_GetDataOfAssignmentByFolder (&Gbl.FileBrowser.Asg); // The data of this assignment remains in Gbl.FileBrowser.Asg // for all subsequent rows with Level > 1 (files or folders inside this folder), @@ -5905,10 +5905,11 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic, if (Gbl.FileBrowser.ICanEditFileOrFolder) // Can I rename this folder? { fprintf (Gbl.F.Out,"", - FileName,Gbl.FileBrowser.InputStyle, + Brw_MAX_CHARS_FOLDER,FileName, + Gbl.FileBrowser.InputStyle, Gbl.FileBrowser.Clipboard.IsThisFile ? "LIGHT_GREEN" : Gbl.ColorRows[Gbl.RowEvenOdd], Gbl.Form.Id); @@ -7904,7 +7905,7 @@ void Brw_ShowFormFileBrowser (void) /************* Put form to create a new folder in a file browser *************/ /*****************************************************************************/ -static void Brw_PutFormToCreateAFolder (const char *FileNameToShow) +static void Brw_PutFormToCreateAFolder (const char FileNameToShow[NAME_MAX + 1]) { extern const char *The_ClassForm[The_NUM_THEMES]; extern const char *Txt_Create_folder; @@ -7928,10 +7929,11 @@ static void Brw_PutFormToCreateAFolder (const char *FileNameToShow) fprintf (Gbl.F.Out,"", - The_ClassForm[Gbl.Prefs.Theme],Txt_Folder); + The_ClassForm[Gbl.Prefs.Theme],Txt_Folder, + Brw_MAX_CHARS_FOLDER); /* Button to send and end frame *****/ Lay_EndRoundFrameWithButton (Lay_CREATE_BUTTON,Txt_Create_folder); @@ -8128,11 +8130,12 @@ static void Brw_PutFormToCreateALink (const char *FileNameToShow) "" "" + " size=\"30\" maxlength=\"%u\" value=\"\" />" "" "" "", - The_ClassForm[Gbl.Prefs.Theme],Txt_Save_as,Txt_optional); + The_ClassForm[Gbl.Prefs.Theme],Txt_Save_as,Txt_optional, + Brw_MAX_CHARS_FOLDER); /***** Send button and end frame *****/ Lay_EndRoundFrameWithButton (Lay_CREATE_BUTTON,Txt_Create_link); diff --git a/swad_file_browser.h b/swad_file_browser.h index 8dbf96d4..38b72d14 100644 --- a/swad_file_browser.h +++ b/swad_file_browser.h @@ -33,9 +33,12 @@ #include "swad_notification.h" /*****************************************************************************/ -/******************************* Public types ********************************/ +/************************ Public types and constants *************************/ /*****************************************************************************/ +#define Brw_MAX_CHARS_FOLDER 30 // 30 +#define Brw_MAX_BYTES_FOLDER NAME_MAX // 255 + #define Brw_NUM_TYPES_FILE_BROWSER 27 // The following types are stored in several database tables as numeric fields, // so don't change numbers!