Version 16.68.4

This commit is contained in:
Antonio Cañas Vargas 2016-11-22 13:15:12 +01:00
parent 43a0c1267a
commit 9c490f279c
4 changed files with 59 additions and 45 deletions

View File

@ -172,13 +172,14 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.68.3 (2016-11-22)"
#define Log_PLATFORM_VERSION "SWAD 16.68.4 (2016-11-22)"
#define CSS_FILE "swad16.68.css"
#define JS_FILE "swad16.46.1.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.68.4: Nov 22, 2016 Code refactoring in file browser. (207447 lines)
Version 16.68.3: Nov 22, 2016 Change in layout of contextual links in file browsers. (207436 lines)
Version 16.68.2: Nov 22, 2016 Code refactoring related to file browser and contextual checkbox. (207438 lines)
Version 16.68.1: Nov 22, 2016 Code refactoring related to notifications and contextual checkbox. (207438 lines)

View File

@ -1450,6 +1450,7 @@ static bool Brw_CheckIfQuotaExceded (void);
static void Brw_ShowFileBrowserNormal (void);
static void Brw_ShowFileBrowsersAsgWrkCrs (void);
static void Brw_PutLinkZIPAsgWrk (void);
static void Brw_ShowFileBrowsersAsgWrkUsr (void);
static void Brw_FormToChangeCrsGrpZone (void);
@ -3126,50 +3127,12 @@ static void Brw_ShowFileBrowsersAsgWrkCrs (void)
extern const char *Txt_Assignments_and_other_works;
extern const char *Txt_You_must_select_one_ore_more_users;
const char *Ptr;
struct UsrData UsrDat;
/***** Check the number of users whose works will be shown *****/
if (Usr_CountNumUsrsInListOfSelectedUsrs ()) // If some users are selected...
{
if (Gbl.FileBrowser.ZIP.CreateZIP)
{
/***** Create zip file
with the assignments and works
of the selected users *****/
/* Create temporary directory
for the compression of assignments and works */
ZIP_CreateTmpDirForCompression ();
/* Initialize structure with user's data */
Usr_UsrDataConstructor (&UsrDat);
/* Create temporary directory for each selected user
inside the directory used for compression */
Ptr = Gbl.Usrs.Select.All;
while (*Ptr)
{
Par_GetNextStrUntilSeparParamMult (&Ptr,UsrDat.EncryptedUsrCod,
Cry_LENGTH_ENCRYPTED_STR_SHA256_BASE64);
Usr_GetUsrCodFromEncryptedUsrCod (&UsrDat);
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // Get user's data from database
if (Usr_CheckIfUsrBelongsToCrs (UsrDat.UsrCod,
Gbl.CurrentCrs.Crs.CrsCod,
false))
ZIP_CreateDirCompressionUsr (&UsrDat);
}
/* Free memory used for user's data */
Usr_UsrDataDestructor (&UsrDat);
/* Create the zip file and put a link to download it */
ZIP_CreateZIPAsgWrk ();
}
else
/***** Button to create a zip file
with all the works of the selected users *****/
ZIP_PutButtonToCreateZIPAsgWrk ();
/***** Put link to download / create zip file *****/
Brw_PutLinkZIPAsgWrk ();
/***** Write top before showing file browser *****/
Brw_WriteTopBeforeShowingFileBrowser ();
@ -3226,6 +3189,23 @@ static void Brw_ShowFileBrowsersAsgWrkCrs (void)
Usr_FreeListsSelectedUsrsCods ();
}
/*****************************************************************************/
/******** Put link to download / create zip file in assigments / works *******/
/*****************************************************************************/
static void Brw_PutLinkZIPAsgWrk (void)
{
if (Gbl.FileBrowser.ZIP.CreateZIP)
{
/* Create the zip file and put a link to download it */
ZIP_CreateZIPAsgWrk ();
}
else
/***** Button to create a zip file
with all the works of the selected users *****/
ZIP_PutButtonToCreateZIPAsgWrk ();
}
/*****************************************************************************/
/************ Show file browsers with works files of one user ****************/
/*****************************************************************************/

View File

@ -104,6 +104,9 @@ extern struct Globals Gbl;
static void ZIP_PutButtonToCreateZIPAsgWrkParams (void);
static void ZIP_CreateTmpDirForCompression (void);
static void ZIP_CreateDirCompressionUsr (struct UsrData *UsrDat);
static void ZIP_CompressFolderIntoZIP (void);
static unsigned long long ZIP_CloneDir (const char *Path,const char *PathClone,const char *PathInTree);
static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL,
@ -153,6 +156,8 @@ bool ZIP_GetCreateZIPFromForm (void)
void ZIP_CreateZIPAsgWrk (void)
{
extern const char *Txt_works_ZIP_FILE_NAME;
struct UsrData UsrDat;
const char *Ptr;
char StrZip[100+PATH_MAX*2+1];
char Path[PATH_MAX+1];
int Result;
@ -162,6 +167,36 @@ void ZIP_CreateZIPAsgWrk (void)
char URLWithSpaces[PATH_MAX+1];
char URL[PATH_MAX+1];
/***** Create zip file
with the assignments and works
of the selected users *****/
/* Create temporary directory
for the compression of assignments and works */
ZIP_CreateTmpDirForCompression ();
/* Initialize structure with user's data */
Usr_UsrDataConstructor (&UsrDat);
/* Create temporary directory for each selected user
inside the directory used for compression */
Ptr = Gbl.Usrs.Select.All;
while (*Ptr)
{
Par_GetNextStrUntilSeparParamMult (&Ptr,UsrDat.EncryptedUsrCod,
Cry_LENGTH_ENCRYPTED_STR_SHA256_BASE64);
Usr_GetUsrCodFromEncryptedUsrCod (&UsrDat);
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // Get user's data from database
if (Usr_CheckIfUsrBelongsToCrs (UsrDat.UsrCod,
Gbl.CurrentCrs.Crs.CrsCod,
false))
ZIP_CreateDirCompressionUsr (&UsrDat);
}
/* Free memory used for user's data */
Usr_UsrDataDestructor (&UsrDat);
/***** Create a temporary public directory
used to download the zip file *****/
Brw_CreateDirDownloadTmp ();
@ -220,7 +255,7 @@ void ZIP_CreateZIPAsgWrk (void)
/********* Create temporary directory to put the works to compress ***********/
/*****************************************************************************/
void ZIP_CreateTmpDirForCompression (void)
static void ZIP_CreateTmpDirForCompression (void)
{
char PathZipPriv[PATH_MAX+1];
char PathDirTmp[PATH_MAX+1];
@ -247,7 +282,7 @@ void ZIP_CreateTmpDirForCompression (void)
/**************** in the temporary directory of compression ******************/
/*****************************************************************************/
void ZIP_CreateDirCompressionUsr (struct UsrData *UsrDat)
static void ZIP_CreateDirCompressionUsr (struct UsrData *UsrDat)
{
char FullNameAndUsrID[(Usr_MAX_BYTES_NAME+1)*3+
ID_MAX_LENGTH_USR_ID+1+

View File

@ -46,8 +46,6 @@
void ZIP_PutButtonToCreateZIPAsgWrk (void);
bool ZIP_GetCreateZIPFromForm (void);
void ZIP_CreateZIPAsgWrk (void);
void ZIP_CreateTmpDirForCompression (void);
void ZIP_CreateDirCompressionUsr (struct UsrData *UsrDat);
void ZIP_PutButtonToDownloadZIPOfAFolder (const char *PathInTree,const char *FileName);
void ZIP_CompressFileTree (void);