Version 16.154.3

This commit is contained in:
Antonio Cañas Vargas 2017-03-08 22:23:52 +01:00
parent a00c376f12
commit 72817bd1a1
6 changed files with 42 additions and 35 deletions

View File

@ -447,9 +447,11 @@ static void Asg_WriteAssignmentFolder (struct Assignment *Asg)
if (Asg->SendWork == Asg_SEND_WORK) if (Asg->SendWork == Asg_SEND_WORK)
{ {
/***** Folder icon *****/ /***** Folder icon *****/
if (Gbl.Usrs.Me.LoggedRole == Rol_STUDENT && if (!Asg->Hidden && // It's visible (not hidden)
Asg->Open && Asg->Open && // It's open (inside dates)
Asg->IBelongToCrsOrGrps) // I can send files to this assignment folder 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 */ /* Form to create a new file or folder */
Act_FormStart (ActFrmCreAsgUsr); 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]) */ /* Get the title of the assignment (row[6]) */
Str_Copy (Asg->Title,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]) */ /* Get the folder for the assignment files (row[7]) */
Str_Copy (Asg->Folder,row[7], Str_Copy (Asg->Folder,row[7],
Asg_MAX_BYTES_FOLDER); Brw_MAX_BYTES_FOLDER);
Asg->SendWork = (Asg->Folder[0] != '\0'); Asg->SendWork = (Asg->Folder[0] != '\0');
/* Can I do this assignment? */ /* Can I do this assignment? */
@ -1148,14 +1150,14 @@ void Asg_RequestCreatOrEditAsg (void)
"<td class=\"LEFT_MIDDLE\">" "<td class=\"LEFT_MIDDLE\">"
"<label class=\"DAT\">%s:" "<label class=\"DAT\">%s:"
"<input type=\"text\" name=\"Folder\"" "<input type=\"text\" name=\"Folder\""
" size=\"%u\" maxlength=\"%u\" value=\"%s\" />" " size=\"30\" maxlength=\"%u\" value=\"%s\" />"
"</label>" "</label>"
"</td>" "</td>"
"</tr>", "</tr>",
The_ClassForm[Gbl.Prefs.Theme], The_ClassForm[Gbl.Prefs.Theme],
Txt_Upload_files_QUESTION, Txt_Upload_files_QUESTION,
Txt_Folder, Txt_Folder,
Asg_MAX_CHARS_FOLDER,Asg_MAX_CHARS_FOLDER,Asg.Folder); Brw_MAX_CHARS_FOLDER,Asg.Folder);
/***** Assignment text *****/ /***** Assignment text *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
@ -1288,7 +1290,7 @@ void Asg_RecFormAssignment (void)
Par_GetParToText ("Title",NewAsg.Title,Asg_MAX_BYTES_ASSIGNMENT_TITLE); Par_GetParToText ("Title",NewAsg.Title,Asg_MAX_BYTES_ASSIGNMENT_TITLE);
/***** Get folder name where to send works of the assignment *****/ /***** 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 : NewAsg.SendWork = (NewAsg.Folder[0]) ? Asg_SEND_WORK :
Asg_DO_NOT_SEND_WORK; Asg_DO_NOT_SEND_WORK;

View File

@ -28,6 +28,7 @@
/*****************************************************************************/ /*****************************************************************************/
#include "swad_date.h" #include "swad_date.h"
#include "swad_file_browser.h"
#include "swad_notification.h" #include "swad_notification.h"
#include "swad_user.h" #include "swad_user.h"
@ -38,9 +39,6 @@
#define Asg_MAX_CHARS_ASSIGNMENT_TITLE (128 - 1) // 127 #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_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 #define Asg_NUM_TYPES_SEND_WORK 2
typedef enum typedef enum
{ {
@ -57,7 +55,7 @@ struct Assignment
bool Open; bool Open;
char Title[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1]; char Title[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1];
Asg_SendWork_t SendWork; 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 bool IBelongToCrsOrGrps; // I can do this assignment
// (it is associated to no groups // (it is associated to no groups
// or, if associated to groups, // or, if associated to groups,

View File

@ -204,13 +204,14 @@
/****************************** Public constants *****************************/ /****************************** 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 CSS_FILE "swad16.147.css"
#define JS_FILE "swad16.144.js" #define JS_FILE "swad16.144.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // 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 // 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) Version 16.154.2: Mar 08, 2017 Adjusting size of database fields. (216466 lines)
2 changes necessary in database: 2 changes necessary in database:
ALTER TABLE assignments CHANGE COLUMN Title Title VARCHAR(2047) NOT NULL; ALTER TABLE assignments CHANGE COLUMN Title Title VARCHAR(2047) NOT NULL;

View File

@ -289,7 +289,7 @@ mysql> DESCRIBE assignments;
"StartTime DATETIME NOT NULL," "StartTime DATETIME NOT NULL,"
"EndTime DATETIME NOT NULL," "EndTime DATETIME NOT NULL,"
"Title VARCHAR(2047) NOT NULL," // Asg_MAX_BYTES_ASSIGNMENT_TITLE "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 "Txt TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
"UNIQUE INDEX(AsgCod)," "UNIQUE INDEX(AsgCod),"
"INDEX(CrsCod,Hidden))"); "INDEX(CrsCod,Hidden))");

View File

@ -1565,7 +1565,7 @@ static bool Brw_PasteTreeIntoFolder (unsigned Level,
const char PathDstInTree[PATH_MAX + 1], const char PathDstInTree[PATH_MAX + 1],
struct Brw_NumObjects *Pasted, struct Brw_NumObjects *Pasted,
long *FirstFilCod); 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_PutFormToUploadFilesUsingDropzone (const char *FileNameToShow);
static void Brw_PutFormToUploadOneFileClassic (const char *FileNameToShow); static void Brw_PutFormToUploadOneFileClassic (const char *FileNameToShow);
static void Brw_PutFormToPasteAFileOrFolder (const char *FileNameToShow); static void Brw_PutFormToPasteAFileOrFolder (const char *FileNameToShow);
@ -2500,7 +2500,7 @@ static void Brw_GetParamsPathInTreeAndFileName (void)
if (Gbl.FileBrowser.Level == 1) if (Gbl.FileBrowser.Level == 1)
// We are in this case: assignments/assignment-folder // We are in this case: assignments/assignment-folder
Str_Copy (Gbl.FileBrowser.Asg.Folder,Gbl.FileBrowser.FilFolLnkName, Str_Copy (Gbl.FileBrowser.Asg.Folder,Gbl.FileBrowser.FilFolLnkName,
Asg_MAX_BYTES_FOLDER); Brw_MAX_BYTES_FOLDER);
else else
{ {
// We are in this case: assignments/assignment-folder/rest-of-path // We are in this case: assignments/assignment-folder/rest-of-path
@ -2510,7 +2510,7 @@ static void Brw_GetParamsPathInTreeAndFileName (void)
if (*Ptr == '/') if (*Ptr == '/')
Ptr++; // Skip '/' Ptr++; // Skip '/'
for (i = 0; for (i = 0;
i < Asg_MAX_BYTES_FOLDER && *Ptr && *Ptr != '/'; i < Brw_MAX_BYTES_FOLDER && *Ptr && *Ptr != '/';
i++, Ptr++) i++, Ptr++)
Gbl.FileBrowser.Asg.Folder[i] = *Ptr; // Copy assignment folder Gbl.FileBrowser.Asg.Folder[i] = *Ptr; // Copy assignment folder
Gbl.FileBrowser.Asg.Folder[i] = '\0'; 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 if (Level == 1) // Main folder of the assignment
{ {
Str_Copy (Gbl.FileBrowser.Asg.Folder,FileName, Str_Copy (Gbl.FileBrowser.Asg.Folder,FileName,
Asg_MAX_BYTES_FOLDER); Brw_MAX_BYTES_FOLDER);
Asg_GetDataOfAssignmentByFolder (&Gbl.FileBrowser.Asg); Asg_GetDataOfAssignmentByFolder (&Gbl.FileBrowser.Asg);
// The data of this assignment remains in 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), // 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? if (Gbl.FileBrowser.ICanEditFileOrFolder) // Can I rename this folder?
{ {
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"NewFolderName\"" fprintf (Gbl.F.Out,"<input type=\"text\" name=\"NewFolderName\""
" maxlength=\"30\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
" class=\"%s %s\"" " class=\"%s %s\""
" onchange=\"document.getElementById('%s').submit();\" />", " onchange=\"document.getElementById('%s').submit();\" />",
FileName,Gbl.FileBrowser.InputStyle, Brw_MAX_CHARS_FOLDER,FileName,
Gbl.FileBrowser.InputStyle,
Gbl.FileBrowser.Clipboard.IsThisFile ? "LIGHT_GREEN" : Gbl.FileBrowser.Clipboard.IsThisFile ? "LIGHT_GREEN" :
Gbl.ColorRows[Gbl.RowEvenOdd], Gbl.ColorRows[Gbl.RowEvenOdd],
Gbl.Form.Id); Gbl.Form.Id);
@ -7904,7 +7905,7 @@ void Brw_ShowFormFileBrowser (void)
/************* Put form to create a new folder in a file browser *************/ /************* 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 *The_ClassForm[The_NUM_THEMES];
extern const char *Txt_Create_folder; extern const char *Txt_Create_folder;
@ -7928,10 +7929,11 @@ static void Brw_PutFormToCreateAFolder (const char *FileNameToShow)
fprintf (Gbl.F.Out,"<label class=\"%s\">" fprintf (Gbl.F.Out,"<label class=\"%s\">"
"%s: " "%s: "
"<input type=\"text\" name=\"NewFolderName\"" "<input type=\"text\" name=\"NewFolderName\""
" size=\"30\" maxlength=\"30\" value=\"\"" " size=\"30\" maxlength=\"%u\" value=\"\""
" required=\"required\" />" " required=\"required\" />"
"</label>", "</label>",
The_ClassForm[Gbl.Prefs.Theme],Txt_Folder); The_ClassForm[Gbl.Prefs.Theme],Txt_Folder,
Brw_MAX_CHARS_FOLDER);
/* Button to send and end frame *****/ /* Button to send and end frame *****/
Lay_EndRoundFrameWithButton (Lay_CREATE_BUTTON,Txt_Create_folder); Lay_EndRoundFrameWithButton (Lay_CREATE_BUTTON,Txt_Create_folder);
@ -8128,11 +8130,12 @@ static void Brw_PutFormToCreateALink (const char *FileNameToShow)
"<td class=\"LEFT_MIDDLE\">" "<td class=\"LEFT_MIDDLE\">"
"<input type=\"text\"" "<input type=\"text\""
" id=\"NewLinkName\" name=\"NewLinkName\"" " id=\"NewLinkName\" name=\"NewLinkName\""
" size=\"30\" maxlength=\"100\" value=\"\" />" " size=\"30\" maxlength=\"%u\" value=\"\" />"
"</td>" "</td>"
"</tr>" "</tr>"
"</table>", "</table>",
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 *****/ /***** Send button and end frame *****/
Lay_EndRoundFrameWithButton (Lay_CREATE_BUTTON,Txt_Create_link); Lay_EndRoundFrameWithButton (Lay_CREATE_BUTTON,Txt_Create_link);

View File

@ -33,9 +33,12 @@
#include "swad_notification.h" #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 #define Brw_NUM_TYPES_FILE_BROWSER 27
// The following types are stored in several database tables as numeric fields, // The following types are stored in several database tables as numeric fields,
// so don't change numbers! // so don't change numbers!