mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-15 21:24:07 +02:00
Version 14.60
This commit is contained in:
parent
d8be8a2bd9
commit
af750fb581
|
@ -10358,7 +10358,9 @@ UPDATE usr_last SET WhatToSearch=WhatToSearch+1 WHERE WhatToSearch>=7;
|
||||||
|
|
||||||
----- 2014-10-05, swad14.1.2
|
----- 2014-10-05, swad14.1.2
|
||||||
|
|
||||||
ALTER TABLE debug ADD COLUMN DbgCod INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (DbgCod);
|
ALTER TABLE debug ADD COLUMN DbgCod INT NOT NULL AUTO_INCREMENT FIRST
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
----- 2014-10-07, swad14.4
|
----- 2014-10-07, swad14.4
|
||||||
|
|
||||||
|
@ -10454,4 +10456,10 @@ ALTER TABLE IP_prefs ADD COLUMN Menu TINYINT NOT NULL DEFAULT 0 AFTER IconSet;
|
||||||
ALTER TABLE usr_data DROP COLUMN WWW,DROP COLUMN Twitter,DROP COLUMN Skype;
|
ALTER TABLE usr_data DROP COLUMN WWW,DROP COLUMN Twitter,DROP COLUMN Skype;
|
||||||
|
|
||||||
|
|
||||||
SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,ShortName,FullName,FirstYear,LastYear,OptYear,WWW FROM degrees;
|
SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,ShortName,FullName,FirstYear,LastYear,OptYear,WWW FROM degrees;
|
||||||
|
|
||||||
|
----- 2015-01-20, swad14.59.4
|
||||||
|
|
||||||
|
ALTER TABLE clipboard ADD COLUMN InsCod INT NOT NULL DEFAULT -1 AFTER FileBrowser, ADD INDEX (InsCod);
|
||||||
|
ALTER TABLE clipboard ADD COLUMN CtrCod INT NOT NULL DEFAULT -1 AFTER InsCod, ADD INDEX (CtrCod);
|
||||||
|
ALTER TABLE clipboard ADD COLUMN DegCod INT NOT NULL DEFAULT -1 AFTER CtrCod, ADD INDEX (DegCod);
|
|
@ -1423,8 +1423,15 @@ void Ctr_RemoveCentre (void)
|
||||||
Lay_ShowAlert (Lay_WARNING,Txt_To_remove_a_centre_you_must_first_remove_all_degrees_and_teachers_in_the_centre);
|
Lay_ShowAlert (Lay_WARNING,Txt_To_remove_a_centre_you_must_first_remove_all_degrees_and_teachers_in_the_centre);
|
||||||
else // Centre has no teachers ==> remove it
|
else // Centre has no teachers ==> remove it
|
||||||
{
|
{
|
||||||
|
/***** Remove information related to files in centre *****/
|
||||||
|
/* Remove clipboards related to the centre */
|
||||||
|
sprintf (Query,"DELETE FROM clipboard WHERE CtrCod='%ld'",
|
||||||
|
Ctr.CtrCod);
|
||||||
|
DB_QueryDELETE (Query,"can not remove clipboards in a centre");
|
||||||
|
|
||||||
/***** Remove centre *****/
|
/***** Remove centre *****/
|
||||||
sprintf (Query,"DELETE FROM centres WHERE CtrCod='%ld'",Ctr.CtrCod);
|
sprintf (Query,"DELETE FROM centres WHERE CtrCod='%ld'",
|
||||||
|
Ctr.CtrCod);
|
||||||
DB_QueryDELETE (Query,"can not remove a centre");
|
DB_QueryDELETE (Query,"can not remove a centre");
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
|
|
|
@ -39,11 +39,18 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 14.59.3 (2015/01/20)"
|
#define Log_PLATFORM_VERSION "SWAD 14.60 (2015/01/20)"
|
||||||
|
|
||||||
// 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 | tail -1
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h | tail -1
|
||||||
/*
|
/*
|
||||||
|
TODO: adapt tables files and file_view !!!!!
|
||||||
|
Version 14.60: Jan 20, 2015 See/admin documents of degree, centre and institution (not finished). (175079 lines)
|
||||||
|
3 changes necessary in database:
|
||||||
|
ALTER TABLE clipboard ADD COLUMN InsCod INT NOT NULL DEFAULT -1 AFTER FileBrowser, ADD INDEX (InsCod);
|
||||||
|
ALTER TABLE clipboard ADD COLUMN CtrCod INT NOT NULL DEFAULT -1 AFTER InsCod, ADD INDEX (CtrCod);
|
||||||
|
ALTER TABLE clipboard ADD COLUMN DegCod INT NOT NULL DEFAULT -1 AFTER CtrCod, ADD INDEX (DegCod);
|
||||||
|
|
||||||
Version 14.59.3: Jan 20, 2015 See/admin documents of degree, centre and institution (not finished). (174862 lines)
|
Version 14.59.3: Jan 20, 2015 See/admin documents of degree, centre and institution (not finished). (174862 lines)
|
||||||
Version 14.59.2: Jan 19, 2015 See/admin documents of degree, centre and institution (not finished). (174864 lines)
|
Version 14.59.2: Jan 19, 2015 See/admin documents of degree, centre and institution (not finished). (174864 lines)
|
||||||
Version 14.59.1: Jan 19, 2015 See/admin documents of degree, centre and institution (not finished). (174711 lines)
|
Version 14.59.1: Jan 19, 2015 See/admin documents of degree, centre and institution (not finished). (174711 lines)
|
||||||
|
|
|
@ -435,6 +435,9 @@ mysql> DESCRIBE clipboard;
|
||||||
+-------------+------------+------+-----+-------------------+-----------------------------+
|
+-------------+------------+------+-----+-------------------+-----------------------------+
|
||||||
| UsrCod | int(11) | NO | PRI | NULL | |
|
| UsrCod | int(11) | NO | PRI | NULL | |
|
||||||
| FileBrowser | tinyint(4) | NO | MUL | NULL | |
|
| FileBrowser | tinyint(4) | NO | MUL | NULL | |
|
||||||
|
| InsCod | int(11) | NO | MUL | -1 | |
|
||||||
|
| CtrCod | int(11) | NO | MUL | -1 | |
|
||||||
|
| DegCod | int(11) | NO | MUL | -1 | |
|
||||||
| CrsCod | int(11) | NO | MUL | -1 | |
|
| CrsCod | int(11) | NO | MUL | -1 | |
|
||||||
| GrpCod | int(11) | NO | | NULL | |
|
| GrpCod | int(11) | NO | | NULL | |
|
||||||
| WorksUsrCod | int(11) | NO | | NULL | |
|
| WorksUsrCod | int(11) | NO | | NULL | |
|
||||||
|
@ -442,18 +445,21 @@ mysql> DESCRIBE clipboard;
|
||||||
| Path | text | NO | | NULL | |
|
| Path | text | NO | | NULL | |
|
||||||
| CopyTime | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
|
| CopyTime | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
|
||||||
+-------------+------------+------+-----+-------------------+-----------------------------+
|
+-------------+------------+------+-----+-------------------+-----------------------------+
|
||||||
8 rows in set (0.00 sec)
|
11 rows in set (0.00 sec)
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS clipboard ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS clipboard ("
|
||||||
"UsrCod INT NOT NULL,"
|
"UsrCod INT NOT NULL,"
|
||||||
"FileBrowser TINYINT NOT NULL,"
|
"FileBrowser TINYINT NOT NULL,"
|
||||||
|
"InsCod INT NOT NULL DEFAULT -1,"
|
||||||
|
"CtrCod INT NOT NULL DEFAULT -1,"
|
||||||
|
"DegCod INT NOT NULL DEFAULT -1,"
|
||||||
"CrsCod INT NOT NULL DEFAULT -1,"
|
"CrsCod INT NOT NULL DEFAULT -1,"
|
||||||
"GrpCod INT NOT NULL,"
|
"GrpCod INT NOT NULL,"
|
||||||
"WorksUsrCod INT NOT NULL,"
|
"WorksUsrCod INT NOT NULL,"
|
||||||
"FileType TINYINT NOT NULL DEFAULT 0,"
|
"FileType TINYINT NOT NULL DEFAULT 0,"
|
||||||
"Path TEXT COLLATE latin1_bin NOT NULL,"
|
"Path TEXT COLLATE latin1_bin NOT NULL,"
|
||||||
"CopyTime TIMESTAMP,"
|
"CopyTime TIMESTAMP,"
|
||||||
"UNIQUE INDEX(UsrCod),INDEX(FileBrowser),INDEX(CrsCod))");
|
"UNIQUE INDEX(UsrCod),INDEX(FileBrowser),INDEX(InsCod),INDEX(CtrCod),INDEX(DegCod),INDEX(CrsCod))");
|
||||||
|
|
||||||
/***** Table connected *****/
|
/***** Table connected *****/
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -3182,12 +3182,20 @@ static void Deg_RemoveDegreeCompletely (long DegCod)
|
||||||
For_FORUM_DEGREE_USRS,For_FORUM_DEGREE_TCHS,DegCod);
|
For_FORUM_DEGREE_USRS,For_FORUM_DEGREE_TCHS,DegCod);
|
||||||
DB_QueryDELETE (Query,"can not remove threads in forums of a degree");
|
DB_QueryDELETE (Query,"can not remove threads in forums of a degree");
|
||||||
|
|
||||||
|
/***** Remove information related to files in degree *****/
|
||||||
|
/* Remove clipboards related to the degree */
|
||||||
|
sprintf (Query,"DELETE FROM clipboard WHERE DegCod='%ld'",
|
||||||
|
DegCod);
|
||||||
|
DB_QueryDELETE (Query,"can not remove clipboards in a degree");
|
||||||
|
|
||||||
/***** Remove administrators of this degree *****/
|
/***** Remove administrators of this degree *****/
|
||||||
sprintf (Query,"DELETE FROM deg_admin WHERE DegCod='%ld'",DegCod);
|
sprintf (Query,"DELETE FROM deg_admin WHERE DegCod='%ld'",
|
||||||
|
DegCod);
|
||||||
DB_QueryDELETE (Query,"can not remove administrators of a degree");
|
DB_QueryDELETE (Query,"can not remove administrators of a degree");
|
||||||
|
|
||||||
/***** Remove the degree *****/
|
/***** Remove the degree *****/
|
||||||
sprintf (Query,"DELETE FROM degrees WHERE DegCod='%ld'",DegCod);
|
sprintf (Query,"DELETE FROM degrees WHERE DegCod='%ld'",
|
||||||
|
DegCod);
|
||||||
DB_QueryDELETE (Query,"can not remove a degree");
|
DB_QueryDELETE (Query,"can not remove a degree");
|
||||||
|
|
||||||
/***** Delete all the degrees in sta_degrees table not present in degrees table *****/
|
/***** Delete all the degrees in sta_degrees table not present in degrees table *****/
|
||||||
|
|
|
@ -3221,7 +3221,7 @@ static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,struct Course *
|
||||||
/***** Remove fields of this user in its course record *****/
|
/***** Remove fields of this user in its course record *****/
|
||||||
Rec_RemoveFieldsCrsRecordInCrs (UsrDat->UsrCod,Crs,QuietOrVerbose);
|
Rec_RemoveFieldsCrsRecordInCrs (UsrDat->UsrCod,Crs,QuietOrVerbose);
|
||||||
|
|
||||||
/***** Remove user's clipboard in course *****/
|
/***** Remove user's clipboard *****/
|
||||||
Brw_RemoveUsrClipboardInCrs (UsrDat->UsrCod,Crs->CrsCod);
|
Brw_RemoveUsrClipboardInCrs (UsrDat->UsrCod,Crs->CrsCod);
|
||||||
|
|
||||||
/***** Remove user's expanded folders in course *****/
|
/***** Remove user's expanded folders in course *****/
|
||||||
|
|
|
@ -2054,42 +2054,42 @@ static void Brw_SetPathFileBrowser (void)
|
||||||
case Brw_FILE_BRW_SEE_DOCUMENTS_INS:
|
case Brw_FILE_BRW_SEE_DOCUMENTS_INS:
|
||||||
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
|
||||||
sprintf (Path,"%s/%s",
|
sprintf (Path,"%s/%s",
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_INS);
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS);
|
||||||
Fil_CreateDirIfNotExists (Path);
|
Fil_CreateDirIfNotExists (Path);
|
||||||
sprintf (Path,"%s/%s/%02u",
|
sprintf (Path,"%s/%s/%02u",
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_INS,
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS,
|
||||||
(unsigned) (Gbl.CurrentIns.Ins.InsCod % 100));
|
(unsigned) (Gbl.CurrentIns.Ins.InsCod % 100));
|
||||||
Fil_CreateDirIfNotExists (Path);
|
Fil_CreateDirIfNotExists (Path);
|
||||||
sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%u",
|
sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%u",
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_INS,
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS,
|
||||||
(unsigned) (Gbl.CurrentIns.Ins.InsCod % 100),
|
(unsigned) (Gbl.CurrentIns.Ins.InsCod % 100),
|
||||||
(unsigned) Gbl.CurrentIns.Ins.InsCod);
|
(unsigned) Gbl.CurrentIns.Ins.InsCod);
|
||||||
break;
|
break;
|
||||||
case Brw_FILE_BRW_SEE_DOCUMENTS_CTR:
|
case Brw_FILE_BRW_SEE_DOCUMENTS_CTR:
|
||||||
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
|
||||||
sprintf (Path,"%s/%s",
|
sprintf (Path,"%s/%s",
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR);
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR);
|
||||||
Fil_CreateDirIfNotExists (Path);
|
Fil_CreateDirIfNotExists (Path);
|
||||||
sprintf (Path,"%s/%s/%02u",
|
sprintf (Path,"%s/%s/%02u",
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR,
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR,
|
||||||
(unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100));
|
(unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100));
|
||||||
Fil_CreateDirIfNotExists (Path);
|
Fil_CreateDirIfNotExists (Path);
|
||||||
sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%u",
|
sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%u",
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR,
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR,
|
||||||
(unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100),
|
(unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100),
|
||||||
(unsigned) Gbl.CurrentCtr.Ctr.CtrCod);
|
(unsigned) Gbl.CurrentCtr.Ctr.CtrCod);
|
||||||
break;
|
break;
|
||||||
case Brw_FILE_BRW_SEE_DOCUMENTS_DEG:
|
case Brw_FILE_BRW_SEE_DOCUMENTS_DEG:
|
||||||
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
|
||||||
sprintf (Path,"%s/%s",
|
sprintf (Path,"%s/%s",
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_DEG);
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG);
|
||||||
Fil_CreateDirIfNotExists (Path);
|
Fil_CreateDirIfNotExists (Path);
|
||||||
sprintf (Path,"%s/%s/%02u",
|
sprintf (Path,"%s/%s/%02u",
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_DEG,
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG,
|
||||||
(unsigned) (Gbl.CurrentDeg.Deg.DegCod % 100));
|
(unsigned) (Gbl.CurrentDeg.Deg.DegCod % 100));
|
||||||
Fil_CreateDirIfNotExists (Path);
|
Fil_CreateDirIfNotExists (Path);
|
||||||
sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%u",
|
sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%u",
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_DEG,
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG,
|
||||||
(unsigned) (Gbl.CurrentDeg.Deg.DegCod % 100),
|
(unsigned) (Gbl.CurrentDeg.Deg.DegCod % 100),
|
||||||
(unsigned) Gbl.CurrentDeg.Deg.DegCod);
|
(unsigned) Gbl.CurrentDeg.Deg.DegCod);
|
||||||
break;
|
break;
|
||||||
|
@ -3951,9 +3951,15 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,
|
||||||
bool IsRecent = false;
|
bool IsRecent = false;
|
||||||
struct FileMetadata FileMetadata;
|
struct FileMetadata FileMetadata;
|
||||||
char FileNameToShow[NAME_MAX+1];
|
char FileNameToShow[NAME_MAX+1];
|
||||||
bool SeeDocsZone = Gbl.FileBrowser.Type == Brw_FILE_BRW_SEE_DOCUMENTS_CRS ||
|
bool SeeDocsZone = Gbl.FileBrowser.Type == Brw_FILE_BRW_SEE_DOCUMENTS_INS ||
|
||||||
|
Gbl.FileBrowser.Type == Brw_FILE_BRW_SEE_DOCUMENTS_CTR ||
|
||||||
|
Gbl.FileBrowser.Type == Brw_FILE_BRW_SEE_DOCUMENTS_DEG ||
|
||||||
|
Gbl.FileBrowser.Type == Brw_FILE_BRW_SEE_DOCUMENTS_CRS ||
|
||||||
Gbl.FileBrowser.Type == Brw_FILE_BRW_SEE_DOCUMENTS_GRP;
|
Gbl.FileBrowser.Type == Brw_FILE_BRW_SEE_DOCUMENTS_GRP;
|
||||||
bool AdminDocsZone = Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS ||
|
bool AdminDocsZone = Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_DOCUMENTS_INS ||
|
||||||
|
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR ||
|
||||||
|
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG ||
|
||||||
|
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS ||
|
||||||
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP;
|
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP;
|
||||||
bool CommonZone = Gbl.FileBrowser.Type == Brw_FILE_BRW_COMMON_CRS ||
|
bool CommonZone = Gbl.FileBrowser.Type == Brw_FILE_BRW_COMMON_CRS ||
|
||||||
Gbl.FileBrowser.Type == Brw_FILE_BRW_COMMON_GRP;
|
Gbl.FileBrowser.Type == Brw_FILE_BRW_COMMON_GRP;
|
||||||
|
@ -5479,6 +5485,9 @@ static void Brw_WriteCurrentClipboard (void)
|
||||||
extern const char *Txt_works_zone;
|
extern const char *Txt_works_zone;
|
||||||
extern const char *Txt_marks_management_zone;
|
extern const char *Txt_marks_management_zone;
|
||||||
extern const char *Txt_private_storage_zone;
|
extern const char *Txt_private_storage_zone;
|
||||||
|
extern const char *Txt_institution;
|
||||||
|
extern const char *Txt_centre;
|
||||||
|
extern const char *Txt_degree;
|
||||||
extern const char *Txt_course;
|
extern const char *Txt_course;
|
||||||
extern const char *Txt_group;
|
extern const char *Txt_group;
|
||||||
extern const char *Txt_user[Usr_NUM_SEXS];
|
extern const char *Txt_user[Usr_NUM_SEXS];
|
||||||
|
@ -5487,6 +5496,9 @@ static void Brw_WriteCurrentClipboard (void)
|
||||||
extern const char *Txt_file;
|
extern const char *Txt_file;
|
||||||
extern const char *Txt_folder;
|
extern const char *Txt_folder;
|
||||||
extern const char *Txt_link;
|
extern const char *Txt_link;
|
||||||
|
struct Institution Ins;
|
||||||
|
struct Centre Ctr;
|
||||||
|
struct Degree Deg;
|
||||||
struct Course Crs;
|
struct Course Crs;
|
||||||
struct GroupData GrpDat;
|
struct GroupData GrpDat;
|
||||||
struct UsrData UsrDat;
|
struct UsrData UsrDat;
|
||||||
|
@ -5496,8 +5508,26 @@ static void Brw_WriteCurrentClipboard (void)
|
||||||
|
|
||||||
if (Gbl.FileBrowser.Clipboard.FileBrowser != Brw_FILE_BRW_BRIEFCASE_USR)
|
if (Gbl.FileBrowser.Clipboard.FileBrowser != Brw_FILE_BRW_BRIEFCASE_USR)
|
||||||
{
|
{
|
||||||
Crs.CrsCod = Gbl.FileBrowser.Clipboard.CrsCod;
|
if (Gbl.FileBrowser.Clipboard.CrsCod > 0)
|
||||||
Crs_GetDataOfCourseByCod (&Crs);
|
{
|
||||||
|
Crs.CrsCod = Gbl.FileBrowser.Clipboard.CrsCod;
|
||||||
|
Crs_GetDataOfCourseByCod (&Crs);
|
||||||
|
}
|
||||||
|
else if (Gbl.FileBrowser.Clipboard.DegCod > 0)
|
||||||
|
{
|
||||||
|
Deg.DegCod = Gbl.FileBrowser.Clipboard.DegCod;
|
||||||
|
Deg_GetDataOfDegreeByCod (&Deg);
|
||||||
|
}
|
||||||
|
else if (Gbl.FileBrowser.Clipboard.CtrCod > 0)
|
||||||
|
{
|
||||||
|
Ctr.CtrCod = Gbl.FileBrowser.Clipboard.CtrCod;
|
||||||
|
Ctr_GetDataOfCentreByCod (&Ctr);
|
||||||
|
}
|
||||||
|
else if (Gbl.FileBrowser.Clipboard.InsCod > 0)
|
||||||
|
{
|
||||||
|
Ins.InsCod = Gbl.FileBrowser.Clipboard.InsCod;
|
||||||
|
Ins_GetDataOfInstitutionByCod (&Ins,false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<div class=\"DAT\" style=\"text-align:center;\">"
|
fprintf (Gbl.F.Out,"<div class=\"DAT\" style=\"text-align:center;\">"
|
||||||
|
@ -5505,6 +5535,21 @@ static void Brw_WriteCurrentClipboard (void)
|
||||||
Txt_Copy_source);
|
Txt_Copy_source);
|
||||||
switch (Gbl.FileBrowser.Clipboard.FileBrowser)
|
switch (Gbl.FileBrowser.Clipboard.FileBrowser)
|
||||||
{
|
{
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
|
||||||
|
fprintf (Gbl.F.Out,"%s, %s <strong>%s</strong>",
|
||||||
|
Txt_documents_management_zone,
|
||||||
|
Txt_institution,Ins.ShortName);
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
|
||||||
|
fprintf (Gbl.F.Out,"%s, %s <strong>%s</strong>",
|
||||||
|
Txt_documents_management_zone,
|
||||||
|
Txt_centre,Ctr.ShortName);
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
|
||||||
|
fprintf (Gbl.F.Out,"%s, %s <strong>%s</strong>",
|
||||||
|
Txt_documents_management_zone,
|
||||||
|
Txt_degree,Deg.ShortName);
|
||||||
|
break;
|
||||||
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
||||||
fprintf (Gbl.F.Out,"%s, %s <strong>%s</strong>",
|
fprintf (Gbl.F.Out,"%s, %s <strong>%s</strong>",
|
||||||
Txt_documents_management_zone,
|
Txt_documents_management_zone,
|
||||||
|
@ -5635,7 +5680,7 @@ static bool Brw_GetMyClipboard (void)
|
||||||
unsigned UnsignedNum;
|
unsigned UnsignedNum;
|
||||||
|
|
||||||
/***** Get my current clipboard from database *****/
|
/***** Get my current clipboard from database *****/
|
||||||
sprintf (Query,"SELECT FileBrowser,CrsCod,GrpCod,WorksUsrCod,FileType,Path"
|
sprintf (Query,"SELECT FileBrowser,InsCod,CtrCod,DegCod,CrsCod,GrpCod,WorksUsrCod,FileType,Path"
|
||||||
" FROM clipboard WHERE UsrCod='%ld'",
|
" FROM clipboard WHERE UsrCod='%ld'",
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get source of copy from clipboard");
|
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get source of copy from clipboard");
|
||||||
|
@ -5645,6 +5690,9 @@ static bool Brw_GetMyClipboard (void)
|
||||||
{
|
{
|
||||||
/***** Clear clipboard data *****/
|
/***** Clear clipboard data *****/
|
||||||
Gbl.FileBrowser.Clipboard.FileBrowser = Brw_FILE_BRW_UNKNOWN;
|
Gbl.FileBrowser.Clipboard.FileBrowser = Brw_FILE_BRW_UNKNOWN;
|
||||||
|
Gbl.FileBrowser.Clipboard.InsCod = -1L;
|
||||||
|
Gbl.FileBrowser.Clipboard.CtrCod = -1L;
|
||||||
|
Gbl.FileBrowser.Clipboard.DegCod = -1L;
|
||||||
Gbl.FileBrowser.Clipboard.CrsCod = -1L;
|
Gbl.FileBrowser.Clipboard.CrsCod = -1L;
|
||||||
Gbl.FileBrowser.Clipboard.GrpCod = -1L;
|
Gbl.FileBrowser.Clipboard.GrpCod = -1L;
|
||||||
Gbl.FileBrowser.Clipboard.WorksUsrCod = -1L;
|
Gbl.FileBrowser.Clipboard.WorksUsrCod = -1L;
|
||||||
|
@ -5662,24 +5710,33 @@ static bool Brw_GetMyClipboard (void)
|
||||||
{
|
{
|
||||||
Gbl.FileBrowser.Clipboard.FileBrowser = (Brw_FileBrowser_t) UnsignedNum;
|
Gbl.FileBrowser.Clipboard.FileBrowser = (Brw_FileBrowser_t) UnsignedNum;
|
||||||
|
|
||||||
/* Get course code (row[1]) */
|
/* Get institution code (row[1]) */
|
||||||
Gbl.FileBrowser.Clipboard.CrsCod = Str_ConvertStrCodToLongCod (row[1]);
|
Gbl.FileBrowser.Clipboard.InsCod = Str_ConvertStrCodToLongCod (row[1]);
|
||||||
|
|
||||||
/* Get group code (row[2]) */
|
/* Get centre code (row[2]) */
|
||||||
if (sscanf (row[2],"%ld",&Gbl.FileBrowser.Clipboard.GrpCod) != 1)
|
Gbl.FileBrowser.Clipboard.CtrCod = Str_ConvertStrCodToLongCod (row[2]);
|
||||||
|
|
||||||
|
/* Get degree code (row[3]) */
|
||||||
|
Gbl.FileBrowser.Clipboard.DegCod = Str_ConvertStrCodToLongCod (row[3]);
|
||||||
|
|
||||||
|
/* Get course code (row[4]) */
|
||||||
|
Gbl.FileBrowser.Clipboard.CrsCod = Str_ConvertStrCodToLongCod (row[4]);
|
||||||
|
|
||||||
|
/* Get group code (row[5]) */
|
||||||
|
if (sscanf (row[5],"%ld",&Gbl.FileBrowser.Clipboard.GrpCod) != 1)
|
||||||
Gbl.FileBrowser.Clipboard.GrpCod = -1L;
|
Gbl.FileBrowser.Clipboard.GrpCod = -1L;
|
||||||
|
|
||||||
/* Get works user's code (row[3]) */
|
/* Get works user's code (row[6]) */
|
||||||
Gbl.FileBrowser.Clipboard.WorksUsrCod = Str_ConvertStrCodToLongCod (row[3]);
|
Gbl.FileBrowser.Clipboard.WorksUsrCod = Str_ConvertStrCodToLongCod (row[6]);
|
||||||
|
|
||||||
/* Get file type (row[4]) */
|
/* Get file type (row[7]) */
|
||||||
Gbl.FileBrowser.Clipboard.FileType = Brw_IS_UNKNOWN; // default
|
Gbl.FileBrowser.Clipboard.FileType = Brw_IS_UNKNOWN; // default
|
||||||
if (sscanf (row[4],"%u",&UnsignedNum) == 1)
|
if (sscanf (row[7],"%u",&UnsignedNum) == 1)
|
||||||
if (UnsignedNum < Brw_NUM_FILE_TYPES)
|
if (UnsignedNum < Brw_NUM_FILE_TYPES)
|
||||||
Gbl.FileBrowser.Clipboard.FileType = (Brw_FileType_t) UnsignedNum;
|
Gbl.FileBrowser.Clipboard.FileType = (Brw_FileType_t) UnsignedNum;
|
||||||
|
|
||||||
/* Get file path (row[5]) */
|
/* Get file path (row[8]) */
|
||||||
strcpy (Gbl.FileBrowser.Clipboard.Path,row[5]);
|
strcpy (Gbl.FileBrowser.Clipboard.Path,row[8]);
|
||||||
Str_SplitFullPathIntoPathAndFileName (Gbl.FileBrowser.Clipboard.Path,
|
Str_SplitFullPathIntoPathAndFileName (Gbl.FileBrowser.Clipboard.Path,
|
||||||
PathUntilFileName,
|
PathUntilFileName,
|
||||||
Gbl.FileBrowser.Clipboard.FileName);
|
Gbl.FileBrowser.Clipboard.FileName);
|
||||||
|
@ -5687,6 +5744,9 @@ static bool Brw_GetMyClipboard (void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Gbl.FileBrowser.Clipboard.FileBrowser = Brw_FILE_BRW_UNKNOWN;
|
Gbl.FileBrowser.Clipboard.FileBrowser = Brw_FILE_BRW_UNKNOWN;
|
||||||
|
Gbl.FileBrowser.Clipboard.InsCod = -1L;
|
||||||
|
Gbl.FileBrowser.Clipboard.CtrCod = -1L;
|
||||||
|
Gbl.FileBrowser.Clipboard.DegCod = -1L;
|
||||||
Gbl.FileBrowser.Clipboard.CrsCod = -1L;
|
Gbl.FileBrowser.Clipboard.CrsCod = -1L;
|
||||||
Gbl.FileBrowser.Clipboard.GrpCod = -1L;
|
Gbl.FileBrowser.Clipboard.GrpCod = -1L;
|
||||||
Gbl.FileBrowser.Clipboard.WorksUsrCod = -1L;
|
Gbl.FileBrowser.Clipboard.WorksUsrCod = -1L;
|
||||||
|
@ -5717,6 +5777,18 @@ static bool Brw_CheckIfClipboardIsInThisTree (void)
|
||||||
{
|
{
|
||||||
switch (Gbl.FileBrowser.Type)
|
switch (Gbl.FileBrowser.Type)
|
||||||
{
|
{
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
|
||||||
|
if (Gbl.FileBrowser.Clipboard.InsCod == Gbl.CurrentIns.Ins.InsCod)
|
||||||
|
IsThisTree = true; // I am in the institution of the clipboard
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
|
||||||
|
if (Gbl.FileBrowser.Clipboard.CtrCod == Gbl.CurrentCtr.Ctr.CtrCod)
|
||||||
|
IsThisTree = true; // I am in the centre of the clipboard
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
|
||||||
|
if (Gbl.FileBrowser.Clipboard.DegCod == Gbl.CurrentDeg.Deg.DegCod)
|
||||||
|
IsThisTree = true; // I am in the degree of the clipboard
|
||||||
|
break;
|
||||||
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
||||||
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
|
||||||
case Brw_FILE_BRW_COMMON_CRS:
|
case Brw_FILE_BRW_COMMON_CRS:
|
||||||
|
@ -5728,7 +5800,7 @@ static bool Brw_CheckIfClipboardIsInThisTree (void)
|
||||||
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
|
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
|
||||||
case Brw_FILE_BRW_WORKS_CRS:
|
case Brw_FILE_BRW_WORKS_CRS:
|
||||||
if (Gbl.FileBrowser.Clipboard.CrsCod == Gbl.CurrentCrs.Crs.CrsCod)
|
if (Gbl.FileBrowser.Clipboard.CrsCod == Gbl.CurrentCrs.Crs.CrsCod)
|
||||||
IsThisTree = true; // We are in the course of the clipboard
|
IsThisTree = true; // I am in the course of the clipboard
|
||||||
break;
|
break;
|
||||||
case Brw_FILE_BRW_BRIEFCASE_USR:
|
case Brw_FILE_BRW_BRIEFCASE_USR:
|
||||||
IsThisTree = true;
|
IsThisTree = true;
|
||||||
|
@ -5763,21 +5835,51 @@ static bool Brw_CheckIfClipboardIsInThisTree (void)
|
||||||
static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path)
|
static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path)
|
||||||
{
|
{
|
||||||
char Query[512+PATH_MAX];
|
char Query[512+PATH_MAX];
|
||||||
|
long InsCod = -1L;
|
||||||
|
long CtrCod = -1L;
|
||||||
|
long DegCod = -1L;
|
||||||
|
long CrsCod = -1L;
|
||||||
|
long GrpCod = -1L;
|
||||||
|
long WorksUsrCod = -1L;
|
||||||
|
|
||||||
|
switch (Gbl.FileBrowser.Type)
|
||||||
|
{
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
|
||||||
|
InsCod = Gbl.CurrentIns.Ins.InsCod;
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
|
||||||
|
CtrCod = Gbl.CurrentCtr.Ctr.CtrCod;
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
|
||||||
|
DegCod = Gbl.CurrentDeg.Deg.DegCod;
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
|
||||||
|
case Brw_FILE_BRW_WORKS_CRS:
|
||||||
|
WorksUsrCod = Gbl.Usrs.Other.UsrDat.UsrCod;
|
||||||
|
/* no break */
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
||||||
|
case Brw_FILE_BRW_COMMON_CRS:
|
||||||
|
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
|
||||||
|
CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
|
||||||
|
case Brw_FILE_BRW_COMMON_GRP:
|
||||||
|
case Brw_FILE_BRW_ADMIN_MARKS_GRP:
|
||||||
|
CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
|
||||||
|
GrpCod = Gbl.CurrentCrs.Grps.GrpCod;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/***** Add path to clipboards *****/
|
/***** Add path to clipboards *****/
|
||||||
sprintf (Query,"INSERT INTO clipboard (UsrCod,FileBrowser,CrsCod,GrpCod,WorksUsrCod,FileType,Path)"
|
sprintf (Query,"INSERT INTO clipboard (UsrCod,FileBrowser,InsCod,CtrCod,DegCod,"
|
||||||
" VALUES ('%ld','%u','%ld','%ld','%ld','%u','%s')",
|
"CrsCod,GrpCod,WorksUsrCod,FileType,Path)"
|
||||||
|
" VALUES ('%ld','%u','%ld','%ld','%ld',"
|
||||||
|
"'%ld','%ld','%ld','%u','%s')",
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||||
(unsigned) Gbl.FileBrowser.Type,
|
(unsigned) Gbl.FileBrowser.Type,
|
||||||
(Gbl.FileBrowser.Type == Brw_FILE_BRW_BRIEFCASE_USR) ? -1L :
|
InsCod,CtrCod,DegCod,CrsCod,GrpCod,WorksUsrCod,
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
|
||||||
(Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP ||
|
|
||||||
Gbl.FileBrowser.Type == Brw_FILE_BRW_COMMON_GRP ||
|
|
||||||
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_MARKS_GRP) ? Gbl.CurrentCrs.Grps.GrpCod :
|
|
||||||
-1L,
|
|
||||||
(Gbl.FileBrowser.Type == Brw_FILE_BRW_ASSIGNMENTS_CRS ||
|
|
||||||
Gbl.FileBrowser.Type == Brw_FILE_BRW_WORKS_CRS) ? Gbl.Usrs.Other.UsrDat.UsrCod :
|
|
||||||
-1L,
|
|
||||||
(unsigned) FileType,
|
(unsigned) FileType,
|
||||||
Path);
|
Path);
|
||||||
DB_QueryINSERT (Query,"can not add source of copy to clipboard");
|
DB_QueryINSERT (Query,"can not add source of copy to clipboard");
|
||||||
|
@ -5790,21 +5892,50 @@ static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path)
|
||||||
static void Brw_UpdatePathInClipboard (Brw_FileType_t FileType,const char *Path)
|
static void Brw_UpdatePathInClipboard (Brw_FileType_t FileType,const char *Path)
|
||||||
{
|
{
|
||||||
char Query[512+PATH_MAX];
|
char Query[512+PATH_MAX];
|
||||||
|
long InsCod = -1L;
|
||||||
|
long CtrCod = -1L;
|
||||||
|
long DegCod = -1L;
|
||||||
|
long CrsCod = -1L;
|
||||||
|
long GrpCod = -1L;
|
||||||
|
long WorksUsrCod = -1L;
|
||||||
|
|
||||||
|
switch (Gbl.FileBrowser.Type)
|
||||||
|
{
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
|
||||||
|
InsCod = Gbl.CurrentIns.Ins.InsCod;
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
|
||||||
|
CtrCod = Gbl.CurrentCtr.Ctr.CtrCod;
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
|
||||||
|
DegCod = Gbl.CurrentDeg.Deg.DegCod;
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
|
||||||
|
case Brw_FILE_BRW_WORKS_CRS:
|
||||||
|
WorksUsrCod = Gbl.Usrs.Other.UsrDat.UsrCod;
|
||||||
|
/* no break */
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
||||||
|
case Brw_FILE_BRW_COMMON_CRS:
|
||||||
|
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
|
||||||
|
CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
|
||||||
|
case Brw_FILE_BRW_COMMON_GRP:
|
||||||
|
case Brw_FILE_BRW_ADMIN_MARKS_GRP:
|
||||||
|
CrsCod = Gbl.CurrentCrs.Crs.CrsCod;
|
||||||
|
GrpCod = Gbl.CurrentCrs.Grps.GrpCod;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/***** Update path in my clipboard *****/
|
/***** Update path in my clipboard *****/
|
||||||
sprintf (Query,"UPDATE clipboard"
|
sprintf (Query,"UPDATE clipboard"
|
||||||
" SET FileBrowser='%u',CrsCod='%ld',GrpCod='%ld',WorksUsrCod='%ld',FileType='%u',Path='%s'"
|
" SET FileBrowser='%u',InsCod='%ld',CtrCod='%ld',DegCod='%ld',"
|
||||||
|
"CrsCod='%ld',GrpCod='%ld',WorksUsrCod='%ld',FileType='%u',Path='%s'"
|
||||||
" WHERE UsrCod='%ld'",
|
" WHERE UsrCod='%ld'",
|
||||||
(unsigned) Gbl.FileBrowser.Type,
|
(unsigned) Gbl.FileBrowser.Type,
|
||||||
(Gbl.FileBrowser.Type == Brw_FILE_BRW_BRIEFCASE_USR) ? -1L :
|
InsCod,CtrCod,DegCod,CrsCod,GrpCod,WorksUsrCod,
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
|
||||||
(Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP ||
|
|
||||||
Gbl.FileBrowser.Type == Brw_FILE_BRW_COMMON_GRP ||
|
|
||||||
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_MARKS_GRP) ? Gbl.CurrentCrs.Grps.GrpCod :
|
|
||||||
-1L,
|
|
||||||
(Gbl.FileBrowser.Type == Brw_FILE_BRW_ASSIGNMENTS_CRS ||
|
|
||||||
Gbl.FileBrowser.Type == Brw_FILE_BRW_WORKS_CRS) ? Gbl.Usrs.Other.UsrDat.UsrCod :
|
|
||||||
-1L,
|
|
||||||
(unsigned) FileType,
|
(unsigned) FileType,
|
||||||
Path,
|
Path,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
|
@ -6116,6 +6247,21 @@ static void Brw_RemoveAffectedClipboards (Brw_FileBrowser_t FileBrowser,long MyU
|
||||||
from a course or from a user *****/
|
from a course or from a user *****/
|
||||||
switch (FileBrowser)
|
switch (FileBrowser)
|
||||||
{
|
{
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
|
||||||
|
sprintf (Query,"DELETE FROM clipboard"
|
||||||
|
" WHERE FileBrowser='%u' AND InsCod='%ld'",
|
||||||
|
(unsigned) FileBrowser,Gbl.CurrentIns.Ins.InsCod);
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
|
||||||
|
sprintf (Query,"DELETE FROM clipboard"
|
||||||
|
" WHERE FileBrowser='%u' AND CtrCod='%ld'",
|
||||||
|
(unsigned) FileBrowser,Gbl.CurrentCtr.Ctr.CtrCod);
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
|
||||||
|
sprintf (Query,"DELETE FROM clipboard"
|
||||||
|
" WHERE FileBrowser='%u' AND DegCod='%ld'",
|
||||||
|
(unsigned) FileBrowser,Gbl.CurrentDeg.Deg.DegCod);
|
||||||
|
break;
|
||||||
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
||||||
case Brw_FILE_BRW_COMMON_CRS:
|
case Brw_FILE_BRW_COMMON_CRS:
|
||||||
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
|
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
|
||||||
|
@ -6321,11 +6467,17 @@ void Brw_PasteIntoFileBrowser (void)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// Source:
|
// Source:
|
||||||
// Type of file browser: Gbl.FileBrowser.Clipboard.FileBrowser
|
// Type of file browser: Gbl.FileBrowser.Clipboard.FileBrowser
|
||||||
|
// Possible institution: Gbl.FileBrowser.Clipboard.InsCod
|
||||||
|
// Possible centre: Gbl.FileBrowser.Clipboard.CtrCod
|
||||||
|
// Possible degree: Gbl.FileBrowser.Clipboard.DegCod
|
||||||
// Possible course: Gbl.FileBrowser.Clipboard.CrsCod
|
// Possible course: Gbl.FileBrowser.Clipboard.CrsCod
|
||||||
// Possible student in works: Gbl.FileBrowser.Clipboard.WorksUsrCod
|
// Possible student in works: Gbl.FileBrowser.Clipboard.WorksUsrCod
|
||||||
// Path (file or folder): Gbl.FileBrowser.Clipboard.Path
|
// Path (file or folder): Gbl.FileBrowser.Clipboard.Path
|
||||||
// Destination:
|
// Destination:
|
||||||
// Type of file browser: Gbl.FileBrowser.Type
|
// Type of file browser: Gbl.FileBrowser.Type
|
||||||
|
// Possible institution: Gbl.CurrentIns.Ins.InsCod
|
||||||
|
// Possible centre: Gbl.CurrentCtr.Ctr.CtrCod
|
||||||
|
// Possible degree: Gbl.CurrentDeg.Deg.DegCod
|
||||||
// Possible course: Gbl.CurrentCrs.Crs.CrsCod
|
// Possible course: Gbl.CurrentCrs.Crs.CrsCod
|
||||||
// Possible student in works: Gbl.Usrs.Other.UsrDat.UsrCod
|
// Possible student in works: Gbl.Usrs.Other.UsrDat.UsrCod
|
||||||
// Path (should be a folder): Gbl.FileBrowser.Priv.FullPathInTree
|
// Path (should be a folder): Gbl.FileBrowser.Priv.FullPathInTree
|
||||||
|
@ -6338,8 +6490,11 @@ static void Brw_PasteClipboard (void)
|
||||||
extern const char *Txt_Folders_copied;
|
extern const char *Txt_Folders_copied;
|
||||||
extern const char *Txt_Links_copied;
|
extern const char *Txt_Links_copied;
|
||||||
extern const char *Txt_You_can_not_paste_file_or_folder_here;
|
extern const char *Txt_You_can_not_paste_file_or_folder_here;
|
||||||
|
struct Institution Ins;
|
||||||
|
struct Centre Ctr;
|
||||||
|
struct Degree Deg;
|
||||||
struct Course Crs;
|
struct Course Crs;
|
||||||
char PathCrsOrg[PATH_MAX+1];
|
char PathAboveRootFolderOrg[PATH_MAX+1];
|
||||||
char PathOrg[PATH_MAX+1];
|
char PathOrg[PATH_MAX+1];
|
||||||
unsigned NumFilesPasted = 0;
|
unsigned NumFilesPasted = 0;
|
||||||
unsigned NumFoldsPasted = 0;
|
unsigned NumFoldsPasted = 0;
|
||||||
|
@ -6354,6 +6509,36 @@ static void Brw_PasteClipboard (void)
|
||||||
/***** Construct the relative path of the origin file or folder *****/
|
/***** Construct the relative path of the origin file or folder *****/
|
||||||
switch (Gbl.FileBrowser.Clipboard.FileBrowser)
|
switch (Gbl.FileBrowser.Clipboard.FileBrowser)
|
||||||
{
|
{
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
|
||||||
|
Ins.InsCod = Gbl.FileBrowser.Clipboard.InsCod;
|
||||||
|
if (Ins_GetDataOfInstitutionByCod (&Ins,false))
|
||||||
|
sprintf (PathAboveRootFolderOrg,"%s/%s/%02u/%u",
|
||||||
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS,
|
||||||
|
(unsigned) (Ins.InsCod % 100),
|
||||||
|
(unsigned) Ins.InsCod);
|
||||||
|
else
|
||||||
|
Lay_ShowErrorAndExit ("The institution of copy source does not exist.");
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
|
||||||
|
Ctr.CtrCod = Gbl.FileBrowser.Clipboard.CtrCod;
|
||||||
|
if (Ctr_GetDataOfCentreByCod (&Ctr))
|
||||||
|
sprintf (PathAboveRootFolderOrg,"%s/%s/%02u/%u",
|
||||||
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR,
|
||||||
|
(unsigned) (Ctr.CtrCod % 100),
|
||||||
|
(unsigned) Ctr.CtrCod);
|
||||||
|
else
|
||||||
|
Lay_ShowErrorAndExit ("The centre of copy source does not exist.");
|
||||||
|
break;
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
|
||||||
|
Deg.DegCod = Gbl.FileBrowser.Clipboard.DegCod;
|
||||||
|
if (Deg_GetDataOfDegreeByCod (&Deg))
|
||||||
|
sprintf (PathAboveRootFolderOrg,"%s/%s/%02u/%u",
|
||||||
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG,
|
||||||
|
(unsigned) (Deg.DegCod % 100),
|
||||||
|
(unsigned) Deg.DegCod);
|
||||||
|
else
|
||||||
|
Lay_ShowErrorAndExit ("The degree of copy source does not exist.");
|
||||||
|
break;
|
||||||
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
||||||
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
|
||||||
case Brw_FILE_BRW_COMMON_CRS:
|
case Brw_FILE_BRW_COMMON_CRS:
|
||||||
|
@ -6366,7 +6551,7 @@ static void Brw_PasteClipboard (void)
|
||||||
case Brw_FILE_BRW_WORKS_CRS:
|
case Brw_FILE_BRW_WORKS_CRS:
|
||||||
Crs.CrsCod = Gbl.FileBrowser.Clipboard.CrsCod;
|
Crs.CrsCod = Gbl.FileBrowser.Clipboard.CrsCod;
|
||||||
if (Crs_GetDataOfCourseByCod (&Crs))
|
if (Crs_GetDataOfCourseByCod (&Crs))
|
||||||
sprintf (PathCrsOrg,"%s/%s/%ld",
|
sprintf (PathAboveRootFolderOrg,"%s/%s/%ld",
|
||||||
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod);
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Crs.CrsCod);
|
||||||
else
|
else
|
||||||
Lay_ShowErrorAndExit ("The course of copy source does not exist.");
|
Lay_ShowErrorAndExit ("The course of copy source does not exist.");
|
||||||
|
@ -6376,25 +6561,28 @@ static void Brw_PasteClipboard (void)
|
||||||
}
|
}
|
||||||
switch (Gbl.FileBrowser.Clipboard.FileBrowser)
|
switch (Gbl.FileBrowser.Clipboard.FileBrowser)
|
||||||
{
|
{
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
|
||||||
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
|
||||||
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS:
|
||||||
case Brw_FILE_BRW_COMMON_CRS:
|
case Brw_FILE_BRW_COMMON_CRS:
|
||||||
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
|
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
|
||||||
sprintf (PathOrg,"%s/%s",
|
sprintf (PathOrg,"%s/%s",
|
||||||
PathCrsOrg,
|
PathAboveRootFolderOrg,
|
||||||
Gbl.FileBrowser.Clipboard.Path);
|
Gbl.FileBrowser.Clipboard.Path);
|
||||||
break;
|
break;
|
||||||
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
|
case Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP:
|
||||||
case Brw_FILE_BRW_COMMON_GRP:
|
case Brw_FILE_BRW_COMMON_GRP:
|
||||||
case Brw_FILE_BRW_ADMIN_MARKS_GRP:
|
case Brw_FILE_BRW_ADMIN_MARKS_GRP:
|
||||||
sprintf (PathOrg,"%s/grp/%ld/%s",
|
sprintf (PathOrg,"%s/grp/%ld/%s",
|
||||||
PathCrsOrg,
|
PathAboveRootFolderOrg,
|
||||||
Gbl.FileBrowser.Clipboard.GrpCod,
|
Gbl.FileBrowser.Clipboard.GrpCod,
|
||||||
Gbl.FileBrowser.Clipboard.Path);
|
Gbl.FileBrowser.Clipboard.Path);
|
||||||
break;
|
break;
|
||||||
case Brw_FILE_BRW_ASSIGNMENTS_USR:
|
case Brw_FILE_BRW_ASSIGNMENTS_USR:
|
||||||
case Brw_FILE_BRW_WORKS_USR:
|
case Brw_FILE_BRW_WORKS_USR:
|
||||||
sprintf (PathOrg,"%s/usr/%02u/%ld/%s",
|
sprintf (PathOrg,"%s/usr/%02u/%ld/%s",
|
||||||
PathCrsOrg,
|
PathAboveRootFolderOrg,
|
||||||
(unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100),
|
(unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100),
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||||
Gbl.FileBrowser.Clipboard.Path);
|
Gbl.FileBrowser.Clipboard.Path);
|
||||||
|
@ -6402,7 +6590,7 @@ static void Brw_PasteClipboard (void)
|
||||||
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
|
case Brw_FILE_BRW_ASSIGNMENTS_CRS:
|
||||||
case Brw_FILE_BRW_WORKS_CRS:
|
case Brw_FILE_BRW_WORKS_CRS:
|
||||||
sprintf (PathOrg,"%s/usr/%02u/%ld/%s",
|
sprintf (PathOrg,"%s/usr/%02u/%ld/%s",
|
||||||
PathCrsOrg,
|
PathAboveRootFolderOrg,
|
||||||
(unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100),
|
(unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100),
|
||||||
Gbl.FileBrowser.Clipboard.WorksUsrCod,
|
Gbl.FileBrowser.Clipboard.WorksUsrCod,
|
||||||
Gbl.FileBrowser.Clipboard.Path);
|
Gbl.FileBrowser.Clipboard.Path);
|
||||||
|
|
|
@ -511,7 +511,10 @@ struct Globals
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
Brw_FileBrowser_t FileBrowser; // Type of the file browser
|
Brw_FileBrowser_t FileBrowser; // Type of the file browser
|
||||||
long CrsCod; // Course code
|
long InsCod; // Code of the institution related to the file browser with the clipboard
|
||||||
|
long CtrCod; // Code of the centre related to the file browser with the clipboard
|
||||||
|
long DegCod; // Code of the degree related to the file browser with the clipboard
|
||||||
|
long CrsCod; // Code of the course related to the file browser with the clipboard
|
||||||
long GrpCod; // Code of the group related to the file browser with the clipboard
|
long GrpCod; // Code of the group related to the file browser with the clipboard
|
||||||
long WorksUsrCod; // User code of the user related to the works file browser with the clipboard
|
long WorksUsrCod; // User code of the user related to the works file browser with the clipboard
|
||||||
char Path[PATH_MAX+1]; // Complete path in the file browser
|
char Path[PATH_MAX+1]; // Complete path in the file browser
|
||||||
|
|
|
@ -1378,8 +1378,15 @@ void Ins_RemoveInstitution (void)
|
||||||
Lay_ShowAlert (Lay_WARNING,Txt_To_remove_an_institution_you_must_first_remove_all_centres_and_users_in_the_institution);
|
Lay_ShowAlert (Lay_WARNING,Txt_To_remove_an_institution_you_must_first_remove_all_centres_and_users_in_the_institution);
|
||||||
else // Institution has no users ==> remove it
|
else // Institution has no users ==> remove it
|
||||||
{
|
{
|
||||||
|
/***** Remove information related to files in institution *****/
|
||||||
|
/* Remove clipboards related to the institution */
|
||||||
|
sprintf (Query,"DELETE FROM clipboard WHERE InsCod='%ld'",
|
||||||
|
Ins.InsCod);
|
||||||
|
DB_QueryDELETE (Query,"can not remove clipboards in an institution");
|
||||||
|
|
||||||
/***** Remove institution *****/
|
/***** Remove institution *****/
|
||||||
sprintf (Query,"DELETE FROM institutions WHERE InsCod='%ld'",Ins.InsCod);
|
sprintf (Query,"DELETE FROM institutions WHERE InsCod='%ld'",
|
||||||
|
Ins.InsCod);
|
||||||
DB_QueryDELETE (Query,"can not remove an institution");
|
DB_QueryDELETE (Query,"can not remove an institution");
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user