mirror of https://github.com/acanas/swad-core.git
Version 14.67.1
This commit is contained in:
parent
2296f89ac1
commit
0358f6ca96
|
@ -39,11 +39,12 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 14.67 (2015/01/25)"
|
#define Log_PLATFORM_VERSION "SWAD 14.67.1 (2015/01/25)"
|
||||||
|
|
||||||
// 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
|
||||||
/*
|
/*
|
||||||
|
Version 14.67.1: Jan 25, 2015 Fixed bugs in file browsers. (175395 lines)
|
||||||
Version 14.67: Jan 25, 2015 Changes in files table. (175369 lines)
|
Version 14.67: Jan 25, 2015 Changes in files table. (175369 lines)
|
||||||
16 changes necessary in database:
|
16 changes necessary in database:
|
||||||
ALTER TABLE files ADD COLUMN ZoneUsrCod2 INT NOT NULL DEFAULT -1 AFTER FileBrowser;
|
ALTER TABLE files ADD COLUMN ZoneUsrCod2 INT NOT NULL DEFAULT -1 AFTER FileBrowser;
|
||||||
|
|
|
@ -96,7 +96,7 @@ const char *Brw_Licenses_DB[Brw_NUM_LICENSES] =
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
// Brosers types for database "files" table
|
// Brosers types for database "files" table
|
||||||
static const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER] =
|
const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
Brw_FILE_BRW_UNKNOWN, // Brw_FILE_BRW_UNKNOWN = 0,
|
Brw_FILE_BRW_UNKNOWN, // Brw_FILE_BRW_UNKNOWN = 0,
|
||||||
Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS = 1,
|
Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS, // Brw_FILE_BRW_SEE_DOCUMENTS_CRS = 1,
|
||||||
|
@ -1331,7 +1331,6 @@ static void Brw_ChangeFileOrFolderHiddenInDB (const char *Path,bool IsHidden);
|
||||||
static void Brw_ChangeFilePublicInDB (long PublisherUsrCod,const char *Path,
|
static void Brw_ChangeFilePublicInDB (long PublisherUsrCod,const char *Path,
|
||||||
bool IsPublic,Brw_License_t License);
|
bool IsPublic,Brw_License_t License);
|
||||||
|
|
||||||
static long Brw_GetCodForFiles (void);
|
|
||||||
static long Brw_GetZoneUsrCodForFiles (void);
|
static long Brw_GetZoneUsrCodForFiles (void);
|
||||||
|
|
||||||
static void Brw_RemoveOneFileOrFolderFromDB (const char *Path);
|
static void Brw_RemoveOneFileOrFolderFromDB (const char *Path);
|
||||||
|
@ -6899,6 +6898,8 @@ static bool Brw_PasteTreeIntoFolder (const char *PathOrg,const char *PathDstInTr
|
||||||
char PathDstWithFile[PATH_MAX+1];
|
char PathDstWithFile[PATH_MAX+1];
|
||||||
struct stat FileStatus;
|
struct stat FileStatus;
|
||||||
struct dirent **FileList;
|
struct dirent **FileList;
|
||||||
|
bool AdminMarks;
|
||||||
|
struct MarksProperties Marks;
|
||||||
int NumFileInThisDir;
|
int NumFileInThisDir;
|
||||||
int NumFilesInThisDir;
|
int NumFilesInThisDir;
|
||||||
unsigned NumLevls;
|
unsigned NumLevls;
|
||||||
|
@ -6972,16 +6973,21 @@ static bool Brw_PasteTreeIntoFolder (const char *PathOrg,const char *PathDstInTr
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** If the target file browser is that of marks, only HTML files are allowed *****/
|
/***** If the target file browser is that of marks, only HTML files are allowed *****/
|
||||||
if (Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_MARKS_CRS ||
|
AdminMarks = Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_MARKS_CRS ||
|
||||||
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_MARKS_GRP)
|
Gbl.FileBrowser.Type == Brw_FILE_BRW_ADMIN_MARKS_GRP;
|
||||||
|
if (AdminMarks)
|
||||||
|
{
|
||||||
/* Check extension of the file */
|
/* Check extension of the file */
|
||||||
if (!Str_FileIsHTML (FileNameOrg))
|
if (Str_FileIsHTML (FileNameOrg))
|
||||||
|
Mrk_CheckFileOfMarks (PathOrg,&Marks); // Gbl.Message contains feedback text
|
||||||
|
else
|
||||||
{
|
{
|
||||||
sprintf (Gbl.Message,Txt_The_copy_has_stopped_when_trying_to_paste_the_file_X_because_you_can_not_paste_a_file_here_of_a_type_other_than_HTML,
|
sprintf (Gbl.Message,Txt_The_copy_has_stopped_when_trying_to_paste_the_file_X_because_you_can_not_paste_a_file_here_of_a_type_other_than_HTML,
|
||||||
FileNameToShow);
|
FileNameToShow);
|
||||||
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/***** Update and check the quota before copying the file *****/
|
/***** Update and check the quota before copying the file *****/
|
||||||
Gbl.FileBrowser.Size.NumFiles++;
|
Gbl.FileBrowser.Size.NumFiles++;
|
||||||
|
@ -7004,6 +7010,10 @@ static bool Brw_PasteTreeIntoFolder (const char *PathOrg,const char *PathDstInTr
|
||||||
if (*FirstFilCod <= 0)
|
if (*FirstFilCod <= 0)
|
||||||
*FirstFilCod = FilCod;
|
*FirstFilCod = FilCod;
|
||||||
|
|
||||||
|
/* Add a new entry of marks into database */
|
||||||
|
if (AdminMarks)
|
||||||
|
Mrk_AddMarksToDB (FilCod,&Marks);
|
||||||
|
|
||||||
if (FileType == Brw_IS_FILE)
|
if (FileType == Brw_IS_FILE)
|
||||||
(*NumFilesPasted)++;
|
(*NumFilesPasted)++;
|
||||||
else // FileType == Brw_IS_LINK
|
else // FileType == Brw_IS_LINK
|
||||||
|
@ -9262,7 +9272,7 @@ void Brw_GetFileMetadataByCod (struct FileMetadata *FileMetadata)
|
||||||
|
|
||||||
/***** Get metadata of a file from database *****/
|
/***** Get metadata of a file from database *****/
|
||||||
sprintf (Query,"SELECT FilCod,FileBrowser,Cod,ZoneUsrCod,"
|
sprintf (Query,"SELECT FilCod,FileBrowser,Cod,ZoneUsrCod,"
|
||||||
",PublisherUsrCod,FileType,Path,Hidden,Public,License"
|
"PublisherUsrCod,FileType,Path,Hidden,Public,License"
|
||||||
" FROM files"
|
" FROM files"
|
||||||
" WHERE FilCod='%ld'",
|
" WHERE FilCod='%ld'",
|
||||||
FileMetadata->FilCod);
|
FileMetadata->FilCod);
|
||||||
|
@ -9655,7 +9665,7 @@ static void Brw_ChangeFilePublicInDB (long PublisherUsrCod,const char *Path,
|
||||||
/**** Get code of institution, degree, course, group for expanded folders ****/
|
/**** Get code of institution, degree, course, group for expanded folders ****/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static long Brw_GetCodForFiles (void)
|
long Brw_GetCodForFiles (void)
|
||||||
{
|
{
|
||||||
switch (Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type])
|
switch (Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type])
|
||||||
{
|
{
|
||||||
|
@ -9705,24 +9715,25 @@ static long Brw_GetZoneUsrCodForFiles (void)
|
||||||
/******** Get code of user in assignment / works for expanded folders ********/
|
/******** Get code of user in assignment / works for expanded folders ********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Brw_GetCrsGrpFromFileMetadata (struct FileMetadata *FileMetadata,long *CrsCod,long *GrpCod)
|
void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
|
||||||
|
long *CrsCod,long *GrpCod)
|
||||||
{
|
{
|
||||||
struct GroupData GrpDat;
|
struct GroupData GrpDat;
|
||||||
|
|
||||||
switch (FileMetadata->FileBrowser)
|
switch (FileBrowser)
|
||||||
{
|
{
|
||||||
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_ASSIGNMENTS_USR:
|
case Brw_FILE_BRW_ASSIGNMENTS_USR:
|
||||||
case Brw_FILE_BRW_WORKS_USR:
|
case Brw_FILE_BRW_WORKS_USR:
|
||||||
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
|
case Brw_FILE_BRW_ADMIN_MARKS_CRS:
|
||||||
*CrsCod = FileMetadata->Cod;
|
*CrsCod = Cod;
|
||||||
*GrpCod = -1L;
|
*GrpCod = -1L;
|
||||||
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:
|
||||||
*GrpCod = GrpDat.GrpCod = FileMetadata->Cod;
|
*GrpCod = GrpDat.GrpCod = Cod;
|
||||||
Grp_GetDataOfGroupByCod (&GrpDat);
|
Grp_GetDataOfGroupByCod (&GrpDat);
|
||||||
*CrsCod = GrpDat.CrsCod;
|
*CrsCod = GrpDat.CrsCod;
|
||||||
break;
|
break;
|
||||||
|
@ -10327,7 +10338,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
|
||||||
if (!Brw_CheckIfFileOrFolderIsHidden (&FileMetadata))
|
if (!Brw_CheckIfFileOrFolderIsHidden (&FileMetadata))
|
||||||
{
|
{
|
||||||
BgColor = Gbl.ColorRows[Gbl.RowEvenOdd];
|
BgColor = Gbl.ColorRows[Gbl.RowEvenOdd];
|
||||||
Brw_GetCrsGrpFromFileMetadata (&FileMetadata,&CrsCod,&GrpCod);
|
Brw_GetCrsGrpFromFileMetadata (FileMetadata.FileBrowser,FileMetadata.Cod,&CrsCod,&GrpCod);
|
||||||
if (CrsCod > 0 && CrsCod == Gbl.CurrentCrs.Crs.CrsCod)
|
if (CrsCod > 0 && CrsCod == Gbl.CurrentCrs.Crs.CrsCod)
|
||||||
BgColor = VERY_LIGHT_BLUE;
|
BgColor = VERY_LIGHT_BLUE;
|
||||||
|
|
||||||
|
|
|
@ -176,7 +176,9 @@ bool Brw_GetFileSizeAndDate (struct FileMetadata *FileMetadata);
|
||||||
void Brw_GetAndUpdateFileViews (struct FileMetadata *FileMetadata);
|
void Brw_GetAndUpdateFileViews (struct FileMetadata *FileMetadata);
|
||||||
void Brw_UpdateMyFileViews (long FilCod);
|
void Brw_UpdateMyFileViews (long FilCod);
|
||||||
|
|
||||||
void Brw_GetCrsGrpFromFileMetadata (struct FileMetadata *FileMetadata,long *CrsCod,long *GrpCod);
|
long Brw_GetCodForFiles (void);
|
||||||
|
void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
|
||||||
|
long *CrsCod,long *GrpCod);
|
||||||
|
|
||||||
long Brw_AddPathToDB (long PublisherUsrCod,Brw_FileType_t FileType,
|
long Brw_AddPathToDB (long PublisherUsrCod,Brw_FileType_t FileType,
|
||||||
const char *Path,bool IsPublic,Brw_License_t License);
|
const char *Path,bool IsPublic,Brw_License_t License);
|
||||||
|
|
36
swad_mark.c
36
swad_mark.c
|
@ -180,6 +180,8 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (Brw_FileType_t FileType,
|
||||||
|
|
||||||
static void Mrk_GetNumRowsHeaderAndFooter (struct MarksProperties *Marks)
|
static void Mrk_GetNumRowsHeaderAndFooter (struct MarksProperties *Marks)
|
||||||
{
|
{
|
||||||
|
extern const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER];
|
||||||
|
long Cod = Brw_GetCodForFiles ();
|
||||||
char Query[512+PATH_MAX];
|
char Query[512+PATH_MAX];
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
@ -188,12 +190,12 @@ static void Mrk_GetNumRowsHeaderAndFooter (struct MarksProperties *Marks)
|
||||||
/***** Get number of rows of header and footer from database *****/
|
/***** Get number of rows of header and footer from database *****/
|
||||||
sprintf (Query,"SELECT marks_properties.%s,marks_properties.%s"
|
sprintf (Query,"SELECT marks_properties.%s,marks_properties.%s"
|
||||||
" FROM files,marks_properties"
|
" FROM files,marks_properties"
|
||||||
" WHERE files.CrsCod='%ld' AND files.GrpCod='%ld' AND files.Path='%s'"
|
" WHERE files.FileBrowser='%u' AND files.Cod='%ld' AND files.Path='%s'"
|
||||||
" AND files.FilCod=marks_properties.FilCod",
|
" AND files.FilCod=marks_properties.FilCod",
|
||||||
Mrk_HeadOrFootStr[Brw_HEADER],
|
Mrk_HeadOrFootStr[Brw_HEADER],
|
||||||
Mrk_HeadOrFootStr[Brw_FOOTER],
|
Mrk_HeadOrFootStr[Brw_FOOTER],
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
(unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
|
||||||
Gbl.CurrentCrs.Grps.GrpCod,
|
Cod,
|
||||||
Gbl.FileBrowser.Priv.FullPathInTree);
|
Gbl.FileBrowser.Priv.FullPathInTree);
|
||||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get the number of rows in header and footer");
|
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get the number of rows in header and footer");
|
||||||
|
|
||||||
|
@ -245,8 +247,10 @@ void Mrk_ChangeNumRowsFooter (void)
|
||||||
|
|
||||||
static void Mrk_ChangeNumRowsHeaderOrFooter (Brw_HeadOrFoot_t HeaderOrFooter)
|
static void Mrk_ChangeNumRowsHeaderOrFooter (Brw_HeadOrFoot_t HeaderOrFooter)
|
||||||
{
|
{
|
||||||
|
extern const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER];
|
||||||
extern const char *Txt_The_number_of_rows_is_now_X;
|
extern const char *Txt_The_number_of_rows_is_now_X;
|
||||||
char UnsignedStr[10+1];
|
char UnsignedStr[10+1];
|
||||||
|
long Cod;
|
||||||
char Query[512+PATH_MAX];
|
char Query[512+PATH_MAX];
|
||||||
unsigned NumRows;
|
unsigned NumRows;
|
||||||
|
|
||||||
|
@ -258,16 +262,19 @@ static void Mrk_ChangeNumRowsHeaderOrFooter (Brw_HeadOrFoot_t HeaderOrFooter)
|
||||||
if (sscanf (UnsignedStr,"%u",&NumRows) == 1)
|
if (sscanf (UnsignedStr,"%u",&NumRows) == 1)
|
||||||
{
|
{
|
||||||
/***** Update properties of marks in the database *****/
|
/***** Update properties of marks in the database *****/
|
||||||
|
Cod = Brw_GetCodForFiles ();
|
||||||
sprintf (Query,"UPDATE marks_properties,files"
|
sprintf (Query,"UPDATE marks_properties,files"
|
||||||
" SET marks_properties.%s='%u'"
|
" SET marks_properties.%s='%u'"
|
||||||
" WHERE files.CrsCod='%ld' AND files.GrpCod='%ld' AND files.Path='%s'"
|
" WHERE files.FileBrowser='%u' AND files.Cod='%ld' AND files.Path='%s'"
|
||||||
" AND files.FilCod=marks_properties.FilCod",
|
" AND files.FilCod=marks_properties.FilCod",
|
||||||
Mrk_HeadOrFootStr[HeaderOrFooter],NumRows,
|
Mrk_HeadOrFootStr[HeaderOrFooter],NumRows,
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
(unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
|
||||||
Gbl.CurrentCrs.Grps.GrpCod,
|
Cod,
|
||||||
Gbl.FileBrowser.Priv.FullPathInTree);
|
Gbl.FileBrowser.Priv.FullPathInTree);
|
||||||
DB_QueryUPDATE (Query,"can not update properties of marks");
|
DB_QueryUPDATE (Query,"can not update properties of marks");
|
||||||
|
|
||||||
|
Lay_ShowAlert (Lay_INFO,Query);
|
||||||
|
|
||||||
/***** Write message of success *****/
|
/***** Write message of success *****/
|
||||||
sprintf (Gbl.Message,Txt_The_number_of_rows_is_now_X,
|
sprintf (Gbl.Message,Txt_The_number_of_rows_is_now_X,
|
||||||
NumRows);
|
NumRows);
|
||||||
|
@ -648,6 +655,9 @@ void Mrk_GetNotifMyMarks (char *SummaryStr,char **ContentStr,
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
struct UsrData UsrDat;
|
struct UsrData UsrDat;
|
||||||
|
unsigned UnsignedNum;
|
||||||
|
Brw_FileBrowser_t FileBrowser;
|
||||||
|
long Cod;
|
||||||
long CrsCod;
|
long CrsCod;
|
||||||
long GrpCod;
|
long GrpCod;
|
||||||
struct MarksProperties Marks;
|
struct MarksProperties Marks;
|
||||||
|
@ -672,7 +682,7 @@ void Mrk_GetNotifMyMarks (char *SummaryStr,char **ContentStr,
|
||||||
ID_GetListIDsFromUsrCod (&UsrDat);
|
ID_GetListIDsFromUsrCod (&UsrDat);
|
||||||
|
|
||||||
/***** Get subject of message from database *****/
|
/***** Get subject of message from database *****/
|
||||||
sprintf (Query,"SELECT files.CrsCod,files.GrpCod,files.Path,"
|
sprintf (Query,"SELECT files.FileBrowser,files.Cod,files.Path,"
|
||||||
"marks_properties.Header,marks_properties.Footer"
|
"marks_properties.Header,marks_properties.Footer"
|
||||||
" FROM files,marks_properties"
|
" FROM files,marks_properties"
|
||||||
" WHERE files.FilCod='%ld'"
|
" WHERE files.FilCod='%ld'"
|
||||||
|
@ -687,11 +697,15 @@ void Mrk_GetNotifMyMarks (char *SummaryStr,char **ContentStr,
|
||||||
/***** Get data of this file of marks *****/
|
/***** Get data of this file of marks *****/
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Course code (row[0]) */
|
/* Get file browser type in database (row[0]) */
|
||||||
CrsCod = Str_ConvertStrCodToLongCod (row[0]);
|
FileBrowser = Brw_FILE_BRW_UNKNOWN;
|
||||||
|
if (sscanf (row[0],"%u",&UnsignedNum) == 1)
|
||||||
|
if (UnsignedNum < Brw_NUM_TYPES_FILE_BROWSER)
|
||||||
|
FileBrowser = (Brw_FileBrowser_t) UnsignedNum;
|
||||||
|
|
||||||
/* Group code (row[1]) */
|
/* Course/group code (row[1]) */
|
||||||
GrpCod = Str_ConvertStrCodToLongCod (row[1]);
|
Cod = Str_ConvertStrCodToLongCod (row[1]);
|
||||||
|
Brw_GetCrsGrpFromFileMetadata (FileBrowser,Cod,&CrsCod,&GrpCod);
|
||||||
|
|
||||||
/* Path (row[2]) */
|
/* Path (row[2]) */
|
||||||
strncpy (FullPathInTreeFromDBMarksTable,row[2],PATH_MAX);
|
strncpy (FullPathInTreeFromDBMarksTable,row[2],PATH_MAX);
|
||||||
|
|
|
@ -621,7 +621,7 @@ static void Ntf_StartFormGoToAction (Ntf_NotifyEvent_t NotifyEvent,
|
||||||
{
|
{
|
||||||
FileMetadata.FilCod = Cod;
|
FileMetadata.FilCod = Cod;
|
||||||
Brw_GetFileMetadataByCod (&FileMetadata);
|
Brw_GetFileMetadataByCod (&FileMetadata);
|
||||||
Brw_GetCrsGrpFromFileMetadata (&FileMetadata,&CrsCod,&GrpCod);
|
Brw_GetCrsGrpFromFileMetadata (FileMetadata.FileBrowser,FileMetadata.Cod,&CrsCod,&GrpCod);
|
||||||
Str_SplitFullPathIntoPathAndFileName (FileMetadata.Path,
|
Str_SplitFullPathIntoPathAndFileName (FileMetadata.Path,
|
||||||
PathUntilFileName,
|
PathUntilFileName,
|
||||||
FileName);
|
FileName);
|
||||||
|
|
24
swad_text.c
24
swad_text.c
|
@ -38450,17 +38450,17 @@ const char *Txt_The_email_address_X_matches_the_one_you_had_previously_registere
|
||||||
|
|
||||||
const char *Txt_The_enrollment_of_students_into_groups_of_type_X_is_now_mandatory = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_The_enrollment_of_students_into_groups_of_type_X_is_now_mandatory = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==0
|
#if L==0
|
||||||
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> es ahora obligatoria."; // Necessita traduccio
|
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> ahora es obligatoria."; // Necessita traduccio
|
||||||
#elif L==1
|
#elif L==1
|
||||||
"The enrollment of students into groups of type <strong>%s</strong> is now mandatory."; // Need Übersetzung
|
"The enrollment of students into groups of type <strong>%s</strong> is now mandatory."; // Need Übersetzung
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"The enrollment of students into groups of type <strong>%s</strong> is now mandatory.";
|
"The enrollment of students into groups of type <strong>%s</strong> is now mandatory.";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> es ahora obligatoria.";
|
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> ahora es obligatoria.";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"The enrollment of students into groups of type <strong>%s</strong> is now mandatory."; // Besoin de traduction
|
"The enrollment of students into groups of type <strong>%s</strong> is now mandatory."; // Besoin de traduction
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> es ahora obligatoria."; // Okoteve traducción
|
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> ahora es obligatoria."; // Okoteve traducción
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"La registrazione di studenti nei gruppi di tipo <strong>%s</strong> è ora obbligatoria.";
|
"La registrazione di studenti nei gruppi di tipo <strong>%s</strong> è ora obbligatoria.";
|
||||||
#elif L==7
|
#elif L==7
|
||||||
|
@ -38471,17 +38471,17 @@ const char *Txt_The_enrollment_of_students_into_groups_of_type_X_is_now_mandator
|
||||||
|
|
||||||
const char *Txt_The_enrollment_of_students_into_groups_of_type_X_is_now_voluntary = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_The_enrollment_of_students_into_groups_of_type_X_is_now_voluntary = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==0
|
#if L==0
|
||||||
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> es ahora voluntaria."; // Necessita traduccio
|
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> ahora es voluntaria."; // Necessita traduccio
|
||||||
#elif L==1
|
#elif L==1
|
||||||
"The enrollment of students into groups of type <strong>%s</strong> is now voluntary."; // Need Übersetzung
|
"The enrollment of students into groups of type <strong>%s</strong> is now voluntary."; // Need Übersetzung
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"The enrollment of students into groups of type <strong>%s</strong> is now voluntary.";
|
"The enrollment of students into groups of type <strong>%s</strong> is now voluntary.";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> es ahora voluntaria.";
|
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> ahora es voluntaria.";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"The enrollment of students into groups of type <strong>%s</strong> is now voluntary."; // Besoin de traduction
|
"The enrollment of students into groups of type <strong>%s</strong> is now voluntary."; // Besoin de traduction
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> es ahora voluntaria."; // Okoteve traducción
|
"La adscripción de estudiantes a grupos del tipo <strong>%s</strong> ahora es voluntaria."; // Okoteve traducción
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"La registrazione di studenti nei gruppi di tipo <strong>%s</strong> è ora volontaria.";
|
"La registrazione di studenti nei gruppi di tipo <strong>%s</strong> è ora volontaria.";
|
||||||
#elif L==7
|
#elif L==7
|
||||||
|
@ -39546,7 +39546,7 @@ const char *Txt_The_maximum_number_of_students_in_the_group_X_has_not_changed =
|
||||||
const char *Txt_The_maximum_number_of_students_in_the_group_X_is_now_Y = // Warning: it is very important to include %s and %u in the following sentences
|
const char *Txt_The_maximum_number_of_students_in_the_group_X_is_now_Y = // Warning: it is very important to include %s and %u in the following sentences
|
||||||
#if L==0
|
#if L==0
|
||||||
"El nº máximo de estudiantes"
|
"El nº máximo de estudiantes"
|
||||||
" del grupo <strong>%s</strong> es ahora <strong>%u</strong>."; // Necessita traduccio
|
" del grupo <strong>%s</strong> ahora es <strong>%u</strong>."; // Necessita traduccio
|
||||||
#elif L==1
|
#elif L==1
|
||||||
"The maximum number of students"
|
"The maximum number of students"
|
||||||
" in the group <strong>%s</strong> is now <strong>%u</strong>."; // Need Übersetzung
|
" in the group <strong>%s</strong> is now <strong>%u</strong>."; // Need Übersetzung
|
||||||
|
@ -39555,13 +39555,13 @@ const char *Txt_The_maximum_number_of_students_in_the_group_X_is_now_Y = // Warn
|
||||||
" in the group <strong>%s</strong> is now <strong>%u</strong>.";
|
" in the group <strong>%s</strong> is now <strong>%u</strong>.";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"El nº máximo de estudiantes"
|
"El nº máximo de estudiantes"
|
||||||
" del grupo <strong>%s</strong> es ahora <strong>%u</strong>.";
|
" del grupo <strong>%s</strong> ahora es <strong>%u</strong>.";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"The maximum number of students"
|
"The maximum number of students"
|
||||||
" in the group <strong>%s</strong> is now <strong>%u</strong>."; // Besoin de traduction
|
" in the group <strong>%s</strong> is now <strong>%u</strong>."; // Besoin de traduction
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"El nº máximo de estudiantes"
|
"El nº máximo de estudiantes"
|
||||||
" del grupo <strong>%s</strong> es ahora <strong>%u</strong>."; // Okoteve traducción
|
" del grupo <strong>%s</strong> ahora es <strong>%u</strong>."; // Okoteve traducción
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"Il numero massimo di studenti"
|
"Il numero massimo di studenti"
|
||||||
" nel gruppo <strong>%s</strong> è ora <strong>%u</strong>.";
|
" nel gruppo <strong>%s</strong> è ora <strong>%u</strong>.";
|
||||||
|
@ -40517,17 +40517,17 @@ const char *Txt_The_number_of_questions_must_be_in_the_interval_X = // Warning:
|
||||||
|
|
||||||
const char *Txt_The_number_of_rows_is_now_X = // Warning: it is very important to include %u in the following sentences
|
const char *Txt_The_number_of_rows_is_now_X = // Warning: it is very important to include %u in the following sentences
|
||||||
#if L==0
|
#if L==0
|
||||||
"El número de filas es ahora <strong>%u</strong>."; // Necessita traduccio
|
"El número de filas ahora es <strong>%u</strong>."; // Necessita traduccio
|
||||||
#elif L==1
|
#elif L==1
|
||||||
"Die Anzahl der Zeilen ist jetzt <strong>%u</strong>.";
|
"Die Anzahl der Zeilen ist jetzt <strong>%u</strong>.";
|
||||||
#elif L==2
|
#elif L==2
|
||||||
"The number of rows is now <strong>%u</strong>.";
|
"The number of rows is now <strong>%u</strong>.";
|
||||||
#elif L==3
|
#elif L==3
|
||||||
"El número de filas es ahora <strong>%u</strong>.";
|
"El número de filas ahora es <strong>%u</strong>.";
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"The number of rows is now <strong>%u</strong>."; // Besoin de traduction
|
"The number of rows is now <strong>%u</strong>."; // Besoin de traduction
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"El número de filas es ahora <strong>%u</strong>."; // Okoteve traducción
|
"El número de filas ahora es <strong>%u</strong>."; // Okoteve traducción
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"Il numero di righe è ora <strong>%u</strong>.";
|
"Il numero di righe è ora <strong>%u</strong>.";
|
||||||
#elif L==7
|
#elif L==7
|
||||||
|
|
|
@ -3867,7 +3867,7 @@ int swad__getFile (struct soap *soap,
|
||||||
"The file requested does not exists");
|
"The file requested does not exists");
|
||||||
|
|
||||||
/***** Set course and group codes *****/
|
/***** Set course and group codes *****/
|
||||||
Brw_GetCrsGrpFromFileMetadata (&FileMetadata,
|
Brw_GetCrsGrpFromFileMetadata (FileMetadata.FileBrowser,FileMetadata.Cod,
|
||||||
&Gbl.CurrentCrs.Crs.CrsCod,
|
&Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
&Gbl.CurrentCrs.Grps.GrpCod);
|
&Gbl.CurrentCrs.Grps.GrpCod);
|
||||||
|
|
||||||
|
@ -4004,7 +4004,7 @@ int swad__getMarks (struct soap *soap,
|
||||||
"You can not get marks from this file");
|
"You can not get marks from this file");
|
||||||
|
|
||||||
/***** Set course and group codes *****/
|
/***** Set course and group codes *****/
|
||||||
Brw_GetCrsGrpFromFileMetadata (&FileMetadata,
|
Brw_GetCrsGrpFromFileMetadata (FileMetadata.FileBrowser,FileMetadata.Cod,
|
||||||
&Gbl.CurrentCrs.Crs.CrsCod,
|
&Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
&Gbl.CurrentCrs.Grps.GrpCod);
|
&Gbl.CurrentCrs.Grps.GrpCod);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue