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)
{
/***** 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)
"<td class=\"LEFT_MIDDLE\">"
"<label class=\"DAT\">%s:"
"<input type=\"text\" name=\"Folder\""
" size=\"%u\" maxlength=\"%u\" value=\"%s\" />"
" size=\"30\" maxlength=\"%u\" value=\"%s\" />"
"</label>"
"</td>"
"</tr>",
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,"<tr>"
@ -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;

View File

@ -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,

View File

@ -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;

View File

@ -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))");

View File

@ -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,"<input type=\"text\" name=\"NewFolderName\""
" maxlength=\"30\" value=\"%s\""
" maxlength=\"%u\" value=\"%s\""
" class=\"%s %s\""
" onchange=\"document.getElementById('%s').submit();\" />",
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,"<label class=\"%s\">"
"%s: "
"<input type=\"text\" name=\"NewFolderName\""
" size=\"30\" maxlength=\"30\" value=\"\""
" size=\"30\" maxlength=\"%u\" value=\"\""
" required=\"required\" />"
"</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 *****/
Lay_EndRoundFrameWithButton (Lay_CREATE_BUTTON,Txt_Create_folder);
@ -8128,11 +8130,12 @@ static void Brw_PutFormToCreateALink (const char *FileNameToShow)
"<td class=\"LEFT_MIDDLE\">"
"<input type=\"text\""
" id=\"NewLinkName\" name=\"NewLinkName\""
" size=\"30\" maxlength=\"100\" value=\"\" />"
" size=\"30\" maxlength=\"%u\" value=\"\" />"
"</td>"
"</tr>"
"</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 *****/
Lay_EndRoundFrameWithButton (Lay_CREATE_BUTTON,Txt_Create_link);

View File

@ -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!