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

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!