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)
"
"
"%s:"
" "
+ " size=\"30\" maxlength=\"%u\" value=\"%s\" />"
" "
" "
"",
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,""
"%s: "
" "
" ",
- 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!