mirror of https://github.com/acanas/swad-core.git
Version 16.189
This commit is contained in:
parent
136290233f
commit
0cd2ceb4c5
|
@ -2364,7 +2364,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif;
|
font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif;
|
||||||
color:#345C6C;
|
color:#345C6C;
|
||||||
font-size:10pt;
|
font-size:10pt;
|
||||||
line-height:110%;
|
line-height:100%;
|
||||||
letter-spacing:0;
|
letter-spacing:0;
|
||||||
}
|
}
|
||||||
.TT_DAY
|
.TT_DAY
|
||||||
|
@ -2385,17 +2385,17 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
{
|
{
|
||||||
font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif;
|
font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif;
|
||||||
color:#404040;
|
color:#404040;
|
||||||
font-size:14pt;
|
font-size:13pt;
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
line-height:110%;
|
line-height:100%;
|
||||||
letter-spacing:0;
|
letter-spacing:0;
|
||||||
}
|
}
|
||||||
.TT_HOUR_SMALL
|
.TT_HOUR_SMALL
|
||||||
{
|
{
|
||||||
font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif;
|
font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif;
|
||||||
color:#A0A0A0;
|
color:#A0A0A0;
|
||||||
font-size:10pt;
|
font-size:8pt;
|
||||||
line-height:110%;
|
line-height:100%;
|
||||||
letter-spacing:0;
|
letter-spacing:0;
|
||||||
}
|
}
|
||||||
.TT_HOUR {height:16px;}
|
.TT_HOUR {height:16px;}
|
14
sql/swad.sql
14
sql/swad.sql
|
@ -1061,10 +1061,10 @@ CREATE TABLE IF NOT EXISTS svy_users (
|
||||||
CREATE TABLE IF NOT EXISTS timetable_crs (
|
CREATE TABLE IF NOT EXISTS timetable_crs (
|
||||||
CrsCod INT NOT NULL DEFAULT -1,
|
CrsCod INT NOT NULL DEFAULT -1,
|
||||||
GrpCod INT NOT NULL DEFAULT -1,
|
GrpCod INT NOT NULL DEFAULT -1,
|
||||||
Day ENUM('L','M','X','J','V','S','D') NOT NULL,
|
Weekday TINYINT NOT NULL,
|
||||||
Hour TINYINT NOT NULL,
|
StartTime TIME NOT NULL,
|
||||||
Duration TINYINT NOT NULL,
|
Duration TIME NOT NULL,
|
||||||
ClassType ENUM('libre','teoria','practicas') NOT NULL,
|
ClassType ENUM('free','lecture','practical') NOT NULL,
|
||||||
Place VARCHAR(511) NOT NULL,
|
Place VARCHAR(511) NOT NULL,
|
||||||
GroupName VARCHAR(2047) NOT NULL,
|
GroupName VARCHAR(2047) NOT NULL,
|
||||||
INDEX(CrsCod,GrpCod));
|
INDEX(CrsCod,GrpCod));
|
||||||
|
@ -1073,9 +1073,9 @@ CREATE TABLE IF NOT EXISTS timetable_crs (
|
||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS timetable_tut (
|
CREATE TABLE IF NOT EXISTS timetable_tut (
|
||||||
UsrCod INT NOT NULL,
|
UsrCod INT NOT NULL,
|
||||||
Day ENUM('L','M','X','J','V','S','D') NOT NULL,
|
Weekday TINYINT NOT NULL,
|
||||||
Hour TINYINT NOT NULL,
|
StartTime TIME NOT NULL,
|
||||||
Duration TINYINT NOT NULL,
|
Duration TIME NOT NULL,
|
||||||
Place VARCHAR(511) NOT NULL,
|
Place VARCHAR(511) NOT NULL,
|
||||||
INDEX(UsrCod));
|
INDEX(UsrCod));
|
||||||
--
|
--
|
||||||
|
|
|
@ -219,13 +219,24 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 16.188 (2017-04-24)"
|
#define Log_PLATFORM_VERSION "SWAD 16.189 (2017-04-25)"
|
||||||
#define CSS_FILE "swad16.185.3.css"
|
#define CSS_FILE "swad16.189.css"
|
||||||
#define JS_FILE "swad16.181.js"
|
#define JS_FILE "swad16.181.js"
|
||||||
|
|
||||||
// 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 sql/swad*.sql | tail -1
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 16.189: Apr 25, 2017 Changes in timetable. (218027 lines)
|
||||||
|
7 changes necessary in database.
|
||||||
|
ALTER TABLE timetable_crs DROP COLUMN DayOld;
|
||||||
|
ALTER TABLE timetable_crs DROP COLUMN HourOld;
|
||||||
|
ALTER TABLE timetable_crs DROP COLUMN DurationOld;
|
||||||
|
ALTER TABLE timetable_crs DROP COLUMN ClassTypeOld;
|
||||||
|
|
||||||
|
ALTER TABLE timetable_tut DROP COLUMN DayOld;
|
||||||
|
ALTER TABLE timetable_tut DROP COLUMN HourOld;
|
||||||
|
ALTER TABLE timetable_tut DROP COLUMN DurationOld;
|
||||||
|
|
||||||
Version 16.188: Apr 24, 2017 Changes in timetable. Not finished. (218029 lines)
|
Version 16.188: Apr 24, 2017 Changes in timetable. Not finished. (218029 lines)
|
||||||
Version 16.187.3: Apr 24, 2017 Changes in timetable. Not finished. (218040 lines)
|
Version 16.187.3: Apr 24, 2017 Changes in timetable. Not finished. (218040 lines)
|
||||||
Version 16.187.2: Apr 24, 2017 Changes in timetable. Not finished. (217963 lines)
|
Version 16.187.2: Apr 24, 2017 Changes in timetable. Not finished. (217963 lines)
|
||||||
|
|
|
@ -2245,38 +2245,27 @@ mysql> DESCRIBE svy_users;
|
||||||
/***** Table timetable_crs *****/
|
/***** Table timetable_crs *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE timetable_crs;
|
mysql> DESCRIBE timetable_crs;
|
||||||
+--------------+------------------------------------+------+-----+---------+-------+
|
+-----------+------------------------------------+------+-----+---------+-------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+--------------+------------------------------------+------+-----+---------+-------+
|
+-----------+------------------------------------+------+-----+---------+-------+
|
||||||
| CrsCod | int(11) | NO | MUL | -1 | |
|
| CrsCod | int(11) | NO | MUL | -1 | |
|
||||||
| GrpCod | int(11) | NO | | -1 | |
|
| GrpCod | int(11) | NO | | -1 | |
|
||||||
| Weekday | tinyint(4) | NO | | NULL | |
|
| Weekday | tinyint(4) | NO | | NULL | |
|
||||||
| StartTime | time | NO | | NULL | |
|
| StartTime | time | NO | | NULL | |
|
||||||
| Duration | time | NO | | NULL | |
|
| Duration | time | NO | | NULL | |
|
||||||
| ClassType | enum('free','lecture','practical') | NO | | NULL | |
|
| ClassType | enum('free','lecture','practical') | NO | | NULL | |
|
||||||
| DayOld | enum('L','M','X','J','V','S','D') | NO | | NULL | |
|
| Place | varchar(511) | NO | | NULL | |
|
||||||
| HourOld | tinyint(4) | NO | | NULL | |
|
| GroupName | varchar(2047) | NO | | NULL | |
|
||||||
| DurationOld | tinyint(4) | NO | | NULL | |
|
+-----------+------------------------------------+------+-----+---------+-------+
|
||||||
| ClassTypeOld | enum('libre','teoria','practicas') | NO | | NULL | |
|
8 rows in set (0,00 sec)
|
||||||
| Place | varchar(511) | NO | | NULL | |
|
|
||||||
| GroupName | varchar(2047) | NO | | NULL | |
|
|
||||||
+--------------+------------------------------------+------+-----+---------+-------+
|
|
||||||
12 rows in set (0,00 sec)
|
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS timetable_crs ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS timetable_crs ("
|
||||||
"CrsCod INT NOT NULL DEFAULT -1,"
|
"CrsCod INT NOT NULL DEFAULT -1,"
|
||||||
"GrpCod INT NOT NULL DEFAULT -1,"
|
"GrpCod INT NOT NULL DEFAULT -1,"
|
||||||
|
|
||||||
"Weekday TINYINT NOT NULL," // 0=Monday...6=Sunday
|
"Weekday TINYINT NOT NULL," // 0=Monday...6=Sunday
|
||||||
"StartTime TIME NOT NULL,"
|
"StartTime TIME NOT NULL,"
|
||||||
"Duration TIME NOT NULL,"
|
"Duration TIME NOT NULL,"
|
||||||
"ClassType ENUM('free','lecture','practical') NOT NULL,"
|
"ClassType ENUM('free','lecture','practical') NOT NULL,"
|
||||||
|
|
||||||
"DayOld ENUM('L','M','X','J','V','S','D') NOT NULL,"
|
|
||||||
"HourOld TINYINT NOT NULL,"
|
|
||||||
"DurationOld TINYINT NOT NULL,"
|
|
||||||
"ClassTypeOld ENUM('libre','teoria','practicas') NOT NULL,"
|
|
||||||
|
|
||||||
"Place VARCHAR(511) NOT NULL," // TT_MAX_BYTES_PLACE
|
"Place VARCHAR(511) NOT NULL," // TT_MAX_BYTES_PLACE
|
||||||
"GroupName VARCHAR(2047) NOT NULL," // Grp_MAX_BYTES_GROUP_NAME
|
"GroupName VARCHAR(2047) NOT NULL," // Grp_MAX_BYTES_GROUP_NAME
|
||||||
"INDEX(CrsCod,GrpCod))");
|
"INDEX(CrsCod,GrpCod))");
|
||||||
|
@ -2284,31 +2273,22 @@ mysql> DESCRIBE timetable_crs;
|
||||||
/***** Table timetable_tut *****/
|
/***** Table timetable_tut *****/
|
||||||
/*
|
/*
|
||||||
mysql> DESCRIBE timetable_tut;
|
mysql> DESCRIBE timetable_tut;
|
||||||
+-------------+-----------------------------------+------+-----+---------+-------+
|
+-----------+--------------+------+-----+---------+-------+
|
||||||
| Field | Type | Null | Key | Default | Extra |
|
| Field | Type | Null | Key | Default | Extra |
|
||||||
+-------------+-----------------------------------+------+-----+---------+-------+
|
+-----------+--------------+------+-----+---------+-------+
|
||||||
| UsrCod | int(11) | NO | MUL | NULL | |
|
| UsrCod | int(11) | NO | MUL | NULL | |
|
||||||
| Weekday | tinyint(4) | NO | | NULL | |
|
| Weekday | tinyint(4) | NO | | NULL | |
|
||||||
| StartTime | time | NO | | NULL | |
|
| StartTime | time | NO | | NULL | |
|
||||||
| Duration | time | NO | | NULL | |
|
| Duration | time | NO | | NULL | |
|
||||||
| DayOld | enum('L','M','X','J','V','S','D') | NO | | NULL | |
|
| Place | varchar(511) | NO | | NULL | |
|
||||||
| HourOld | tinyint(4) | NO | | NULL | |
|
+-----------+--------------+------+-----+---------+-------+
|
||||||
| DurationOld | tinyint(4) | NO | | NULL | |
|
5 rows in set (0,00 sec)
|
||||||
| Place | varchar(511) | NO | | NULL | |
|
|
||||||
+-------------+-----------------------------------+------+-----+---------+-------+
|
|
||||||
8 rows in set (0,01 sec)
|
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS timetable_tut ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS timetable_tut ("
|
||||||
"UsrCod INT NOT NULL,"
|
"UsrCod INT NOT NULL,"
|
||||||
|
|
||||||
"Weekday TINYINT NOT NULL," // 0=Monday...6=Sunday
|
"Weekday TINYINT NOT NULL," // 0=Monday...6=Sunday
|
||||||
"StartTime TIME NOT NULL,"
|
"StartTime TIME NOT NULL,"
|
||||||
"Duration TIME NOT NULL,"
|
"Duration TIME NOT NULL,"
|
||||||
|
|
||||||
"DayOld ENUM('L','M','X','J','V','S','D') NOT NULL,"
|
|
||||||
"HourOld TINYINT NOT NULL,"
|
|
||||||
"DurationOld TINYINT NOT NULL,"
|
|
||||||
|
|
||||||
"Place VARCHAR(511) NOT NULL," // TT_MAX_BYTES_PLACE
|
"Place VARCHAR(511) NOT NULL," // TT_MAX_BYTES_PLACE
|
||||||
"INDEX(UsrCod))");
|
"INDEX(UsrCod))");
|
||||||
|
|
||||||
|
|
102
swad_timetable.c
102
swad_timetable.c
|
@ -184,7 +184,7 @@ static void TT_GetParamsTimeTable (void)
|
||||||
Gbl.TimeTable.Interval = (unsigned)
|
Gbl.TimeTable.Interval = (unsigned)
|
||||||
Par_GetParToUnsignedLong ("ModTTHour",
|
Par_GetParToUnsignedLong ("ModTTHour",
|
||||||
0,
|
0,
|
||||||
TT_HOURS_PER_DAY * 2 - 1,
|
TT_INTERVALS_PER_DAY - 1,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
/***** Get number of column *****/
|
/***** Get number of column *****/
|
||||||
|
@ -615,7 +615,7 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
case Grp_ONLY_MY_GROUPS:
|
case Grp_ONLY_MY_GROUPS:
|
||||||
sprintf (Query,"SELECT "
|
sprintf (Query,"SELECT "
|
||||||
"timetable_crs.Weekday,"
|
"timetable_crs.Weekday,"
|
||||||
"TIME_TO_SEC(timetable_crs.StartTime),"
|
"TIME_TO_SEC(timetable_crs.StartTime) AS S,"
|
||||||
"TIME_TO_SEC(timetable_crs.Duration) AS D,"
|
"TIME_TO_SEC(timetable_crs.Duration) AS D,"
|
||||||
"timetable_crs.Place,"
|
"timetable_crs.Place,"
|
||||||
"timetable_crs.ClassType,"
|
"timetable_crs.ClassType,"
|
||||||
|
@ -629,7 +629,7 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
" UNION DISTINCT "
|
" UNION DISTINCT "
|
||||||
"SELECT "
|
"SELECT "
|
||||||
"timetable_crs.Weekday,"
|
"timetable_crs.Weekday,"
|
||||||
"TIME_TO_SEC(timetable_crs.StartTime),"
|
"TIME_TO_SEC(timetable_crs.StartTime) AS S,"
|
||||||
"TIME_TO_SEC(timetable_crs.Duration) AS D,"
|
"TIME_TO_SEC(timetable_crs.Duration) AS D,"
|
||||||
"timetable_crs.Place,"
|
"timetable_crs.Place,"
|
||||||
"timetable_crs.ClassType,"
|
"timetable_crs.ClassType,"
|
||||||
|
@ -642,7 +642,7 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
" UNION "
|
" UNION "
|
||||||
"SELECT "
|
"SELECT "
|
||||||
"Weekday,"
|
"Weekday,"
|
||||||
"TIME_TO_SEC(StartTime),"
|
"TIME_TO_SEC(StartTime) AS S,"
|
||||||
"TIME_TO_SEC(Duration) AS D,"
|
"TIME_TO_SEC(Duration) AS D,"
|
||||||
"Place,"
|
"Place,"
|
||||||
"'tutoring' AS ClassType,"
|
"'tutoring' AS ClassType,"
|
||||||
|
@ -651,14 +651,14 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
"-1 AS CrsCod"
|
"-1 AS CrsCod"
|
||||||
" FROM timetable_tut"
|
" FROM timetable_tut"
|
||||||
" WHERE UsrCod=%ld"
|
" WHERE UsrCod=%ld"
|
||||||
" ORDER BY Weekday,StartTime,ClassType,"
|
" ORDER BY Weekday,S,ClassType,"
|
||||||
"GroupName,GrpCod,Place,D DESC,CrsCod",
|
"GroupName,GrpCod,Place,D DESC,CrsCod",
|
||||||
UsrCod,UsrCod,UsrCod);
|
UsrCod,UsrCod,UsrCod);
|
||||||
break;
|
break;
|
||||||
case Grp_ALL_GROUPS:
|
case Grp_ALL_GROUPS:
|
||||||
sprintf (Query,"SELECT "
|
sprintf (Query,"SELECT "
|
||||||
"timetable_crs.Weekday,"
|
"timetable_crs.Weekday,"
|
||||||
"TIME_TO_SEC(timetable_crs.StartTime),"
|
"TIME_TO_SEC(timetable_crs.StartTime) AS S,"
|
||||||
"TIME_TO_SEC(timetable_crs.Duration) AS D,"
|
"TIME_TO_SEC(timetable_crs.Duration) AS D,"
|
||||||
"timetable_crs.Place,"
|
"timetable_crs.Place,"
|
||||||
"timetable_crs.ClassType,"
|
"timetable_crs.ClassType,"
|
||||||
|
@ -671,7 +671,7 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
" UNION "
|
" UNION "
|
||||||
"SELECT "
|
"SELECT "
|
||||||
"Weekday,"
|
"Weekday,"
|
||||||
"TIME_TO_SEC(StartTime),"
|
"TIME_TO_SEC(StartTime) AS S,"
|
||||||
"TIME_TO_SEC(Duration) AS D,"
|
"TIME_TO_SEC(Duration) AS D,"
|
||||||
"Place,"
|
"Place,"
|
||||||
"'tutoring' AS ClassType,"
|
"'tutoring' AS ClassType,"
|
||||||
|
@ -680,7 +680,7 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
"-1 AS CrsCod"
|
"-1 AS CrsCod"
|
||||||
" FROM timetable_tut"
|
" FROM timetable_tut"
|
||||||
" WHERE UsrCod=%ld"
|
" WHERE UsrCod=%ld"
|
||||||
" ORDER BY Weekday,StartTime,ClassType,"
|
" ORDER BY Weekday,S,ClassType,"
|
||||||
"GroupName,GrpCod,Place,D DESC,CrsCod",
|
"GroupName,GrpCod,Place,D DESC,CrsCod",
|
||||||
UsrCod,UsrCod);
|
UsrCod,UsrCod);
|
||||||
break;
|
break;
|
||||||
|
@ -692,7 +692,7 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
Gbl.Action.Act == ActChgCrsTT) // If we are editing, all groups are shown
|
Gbl.Action.Act == ActChgCrsTT) // If we are editing, all groups are shown
|
||||||
sprintf (Query,"SELECT "
|
sprintf (Query,"SELECT "
|
||||||
"Weekday,"
|
"Weekday,"
|
||||||
"TIME_TO_SEC(StartTime),"
|
"TIME_TO_SEC(StartTime) AS S,"
|
||||||
"TIME_TO_SEC(Duration) AS D,"
|
"TIME_TO_SEC(Duration) AS D,"
|
||||||
"Place,"
|
"Place,"
|
||||||
"ClassType,"
|
"ClassType,"
|
||||||
|
@ -700,13 +700,13 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
"GrpCod"
|
"GrpCod"
|
||||||
" FROM timetable_crs"
|
" FROM timetable_crs"
|
||||||
" WHERE CrsCod=%ld"
|
" WHERE CrsCod=%ld"
|
||||||
" ORDER BY Weekday,StartTime,ClassType,"
|
" ORDER BY Weekday,S,ClassType,"
|
||||||
"GroupName,GrpCod,Place,D DESC",
|
"GroupName,GrpCod,Place,D DESC",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod);
|
Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
else
|
else
|
||||||
sprintf (Query,"SELECT "
|
sprintf (Query,"SELECT "
|
||||||
"timetable_crs.Weekday,"
|
"timetable_crs.Weekday,"
|
||||||
"TIME_TO_SEC(timetable_crs.StartTime),"
|
"TIME_TO_SEC(timetable_crs.StartTime) AS S,"
|
||||||
"TIME_TO_SEC(timetable_crs.Duration) AS D,"
|
"TIME_TO_SEC(timetable_crs.Duration) AS D,"
|
||||||
"timetable_crs.Place,"
|
"timetable_crs.Place,"
|
||||||
"timetable_crs.ClassType,"
|
"timetable_crs.ClassType,"
|
||||||
|
@ -718,7 +718,7 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
" AND timetable_crs.CrsCod=crs_usr.CrsCod"
|
" AND timetable_crs.CrsCod=crs_usr.CrsCod"
|
||||||
" UNION DISTINCT "
|
" UNION DISTINCT "
|
||||||
"SELECT timetable_crs.Weekday,"
|
"SELECT timetable_crs.Weekday,"
|
||||||
"TIME_TO_SEC(timetable_crs.StartTime),"
|
"TIME_TO_SEC(timetable_crs.StartTime) AS S,"
|
||||||
"TIME_TO_SEC(timetable_crs.Duration) AS D,"
|
"TIME_TO_SEC(timetable_crs.Duration) AS D,"
|
||||||
"timetable_crs.Place,"
|
"timetable_crs.Place,"
|
||||||
"timetable_crs.ClassType,"
|
"timetable_crs.ClassType,"
|
||||||
|
@ -728,7 +728,7 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
" WHERE timetable_crs.CrsCod=%ld"
|
" WHERE timetable_crs.CrsCod=%ld"
|
||||||
" AND crs_grp_usr.UsrCod=%ld"
|
" AND crs_grp_usr.UsrCod=%ld"
|
||||||
" AND timetable_crs.GrpCod=crs_grp_usr.GrpCod"
|
" AND timetable_crs.GrpCod=crs_grp_usr.GrpCod"
|
||||||
" ORDER BY Weekday,StartTime,ClassType,"
|
" ORDER BY Weekday,S,ClassType,"
|
||||||
"GroupName,GrpCod,Place,D DESC",
|
"GroupName,GrpCod,Place,D DESC",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,UsrCod,
|
Gbl.CurrentCrs.Crs.CrsCod,UsrCod,
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,UsrCod);
|
Gbl.CurrentCrs.Crs.CrsCod,UsrCod);
|
||||||
|
@ -736,12 +736,12 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
case TT_TUTORING_TIMETABLE:
|
case TT_TUTORING_TIMETABLE:
|
||||||
sprintf (Query,"SELECT "
|
sprintf (Query,"SELECT "
|
||||||
"Weekday,"
|
"Weekday,"
|
||||||
"TIME_TO_SEC(StartTime),"
|
"TIME_TO_SEC(StartTime) AS S,"
|
||||||
"TIME_TO_SEC(Duration) AS D,"
|
"TIME_TO_SEC(Duration) AS D,"
|
||||||
"Place"
|
"Place"
|
||||||
" FROM timetable_tut"
|
" FROM timetable_tut"
|
||||||
" WHERE UsrCod=%ld"
|
" WHERE UsrCod=%ld"
|
||||||
" ORDER BY Weekday,StartTime,Place,D DESC",
|
" ORDER BY Weekday,S,Place,D DESC",
|
||||||
UsrCod);
|
UsrCod);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -761,17 +761,18 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
GrpCod = -1;
|
GrpCod = -1;
|
||||||
|
|
||||||
/* Day of week (row[0]) */
|
/* Day of week (row[0]) */
|
||||||
if (sscanf (row[0],"%u",&Weekday) == 1)
|
if (sscanf (row[0],"%u",&Weekday) != 1)
|
||||||
if (Weekday >= TT_DAYS_PER_WEEK)
|
Lay_ShowErrorAndExit ("Wrong day of week in timetable.");
|
||||||
Lay_ShowErrorAndExit ("Wrong day of week in timetable.");
|
if (Weekday >= TT_DAYS_PER_WEEK)
|
||||||
|
Lay_ShowErrorAndExit ("Wrong day of week in timetable.");
|
||||||
|
|
||||||
/* StartTime formatted as seconds (row[1])
|
/* StartTime formatted as seconds (row[1])
|
||||||
--> StartTime in number of intervals */
|
--> StartTime in number of intervals */
|
||||||
if (sscanf (row[1],"%u",&Seconds) != 1)
|
if (sscanf (row[1],"%u",&Seconds) != 1)
|
||||||
Lay_ShowErrorAndExit ("Wrong hour in timetable.");
|
Lay_ShowErrorAndExit ("Wrong start time in timetable.");
|
||||||
Interval = Seconds / TT_SECONDS_PER_MINUTE;
|
Interval = Seconds / TT_SECONDS_PER_INTERVAL;
|
||||||
if (Interval < TT_INTERVALS_BEFORE_START_HOUR)
|
if (Interval < TT_INTERVALS_BEFORE_START_HOUR)
|
||||||
Lay_ShowErrorAndExit ("Wrong hour in timetable.");
|
Lay_ShowErrorAndExit ("Wrong start time in timetable.");
|
||||||
Interval -= TT_INTERVALS_BEFORE_START_HOUR;
|
Interval -= TT_INTERVALS_BEFORE_START_HOUR;
|
||||||
|
|
||||||
/* Duration formatted as seconds (row[2])
|
/* Duration formatted as seconds (row[2])
|
||||||
|
@ -815,6 +816,7 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
FirstFreeColumn = Column;
|
FirstFreeColumn = Column;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FirstFreeColumn < TT_MAX_COLUMNS_PER_CELL)
|
if (FirstFreeColumn < TT_MAX_COLUMNS_PER_CELL)
|
||||||
// If there's place for another column in this cell
|
// If there's place for another column in this cell
|
||||||
{
|
{
|
||||||
|
@ -834,10 +836,10 @@ static void TT_CreatTimeTableFromDB (long UsrCod)
|
||||||
{
|
{
|
||||||
TT_TimeTable[Weekday][Interval].Columns[FirstFreeColumn].ClassType = ClassType;
|
TT_TimeTable[Weekday][Interval].Columns[FirstFreeColumn].ClassType = ClassType;
|
||||||
TT_TimeTable[Weekday][Interval].Columns[FirstFreeColumn].DurationNumIntervals = DurationNumIntervals;
|
TT_TimeTable[Weekday][Interval].Columns[FirstFreeColumn].DurationNumIntervals = DurationNumIntervals;
|
||||||
TT_TimeTable[Weekday][Interval].Columns[FirstFreeColumn].IntervalType = TT_FIRST_INTERVAL;
|
TT_TimeTable[Weekday][Interval].Columns[FirstFreeColumn].IntervalType = TT_FIRST_INTERVAL;
|
||||||
for (I = Interval + 1;
|
for (I = Interval + 1;
|
||||||
I < Interval + DurationNumIntervals &&
|
I < Interval + DurationNumIntervals &&
|
||||||
I < TT_HOURS_PER_DAY * 2;
|
I < TT_INTERVALS_PER_DAY;
|
||||||
I++)
|
I++)
|
||||||
{
|
{
|
||||||
TT_TimeTable[Weekday][I].Columns[FirstFreeColumn].IntervalType = TT_NEXT_INTERVAL;
|
TT_TimeTable[Weekday][I].Columns[FirstFreeColumn].IntervalType = TT_NEXT_INTERVAL;
|
||||||
|
@ -1006,7 +1008,8 @@ static void TT_DrawTimeTable (void)
|
||||||
Weekday = (DayColumn + Gbl.Prefs.FirstDayOfWeek) % 7;
|
Weekday = (DayColumn + Gbl.Prefs.FirstDayOfWeek) % 7;
|
||||||
|
|
||||||
/* Check how many colums are needed.
|
/* Check how many colums are needed.
|
||||||
For each item (class) in this hour from left to right, we must check the maximum of columns */
|
For each item (class) in this hour from left to right,
|
||||||
|
we must check the maximum of columns */
|
||||||
for (I = 0;
|
for (I = 0;
|
||||||
I < TT_INTERVALS_PER_DAY;
|
I < TT_INTERVALS_PER_DAY;
|
||||||
I++)
|
I++)
|
||||||
|
@ -1332,11 +1335,14 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
||||||
/***** Draw cell depending on type of view *****/
|
/***** Draw cell depending on type of view *****/
|
||||||
switch (TimeTableView)
|
switch (TimeTableView)
|
||||||
{
|
{
|
||||||
case TT_CRS_SHOW:
|
case TT_CRS_SHOW: // View course timetable
|
||||||
case TT_TUT_SHOW:
|
case TT_TUT_SHOW: // View tutoring timetable
|
||||||
if (IntervalType != TT_FREE_INTERVAL) // If cell is not empty...
|
if (IntervalType != TT_FREE_INTERVAL) // If cell is not empty...
|
||||||
{
|
{
|
||||||
|
/***** Start cell *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"TT_CELL TT_TXT\">");
|
fprintf (Gbl.F.Out,"<div class=\"TT_CELL TT_TXT\">");
|
||||||
|
|
||||||
|
/***** Course name *****/
|
||||||
if (Gbl.TimeTable.Type == TT_MY_TIMETABLE)
|
if (Gbl.TimeTable.Type == TT_MY_TIMETABLE)
|
||||||
{
|
{
|
||||||
Crs.CrsCod = CrsCod;
|
Crs.CrsCod = CrsCod;
|
||||||
|
@ -1347,14 +1353,17 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
||||||
Crs.ShrtName[0] ? Crs.ShrtName :
|
Crs.ShrtName[0] ? Crs.ShrtName :
|
||||||
Txt_unknown_removed_course);
|
Txt_unknown_removed_course);
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"%s (%dh%s)",
|
|
||||||
|
/***** Type of class and duration *****/
|
||||||
|
fprintf (Gbl.F.Out,"%s (%u:%02u h)",
|
||||||
Txt_TIMETABLE_CLASS_TYPES[ClassType],
|
Txt_TIMETABLE_CLASS_TYPES[ClassType],
|
||||||
DurationNumIntervals / 2,
|
(DurationNumIntervals / TT_INTERVALS_PER_HOUR), // Hours
|
||||||
DurationNumIntervals % 2 ? "30'" :
|
(DurationNumIntervals % TT_INTERVALS_PER_HOUR) * TT_MINUTES_PER_INTERVAL); // Minutes
|
||||||
"");
|
|
||||||
|
/***** Group *****/
|
||||||
if (TimeTableView == TT_CRS_SHOW)
|
if (TimeTableView == TT_CRS_SHOW)
|
||||||
{
|
{
|
||||||
if (GrpCod == -1)
|
if (GrpCod <= 0)
|
||||||
{
|
{
|
||||||
if (Group[0])
|
if (Group[0])
|
||||||
fprintf (Gbl.F.Out,"<br />%s",Group);
|
fprintf (Gbl.F.Out,"<br />%s",Group);
|
||||||
|
@ -1362,12 +1371,13 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
||||||
else
|
else
|
||||||
fprintf (Gbl.F.Out,"<br />%s %s",
|
fprintf (Gbl.F.Out,"<br />%s %s",
|
||||||
GrpDat.GrpTypName,GrpDat.GrpName);
|
GrpDat.GrpTypName,GrpDat.GrpName);
|
||||||
if (Place[0])
|
|
||||||
fprintf (Gbl.F.Out,"<br />%s",Place);
|
|
||||||
}
|
}
|
||||||
else // TimeTableView == TT_TUT_SHOW
|
|
||||||
if (Place[0])
|
/***** Place *****/
|
||||||
fprintf (Gbl.F.Out,"<br />%s",Place);
|
if (Place[0])
|
||||||
|
fprintf (Gbl.F.Out,"<br />%s",Place);
|
||||||
|
|
||||||
|
/***** End cell *****/
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1396,20 +1406,21 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
||||||
Txt_TIMETABLE_CLASS_TYPES[CT]);
|
Txt_TIMETABLE_CLASS_TYPES[CT]);
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"</select>");
|
fprintf (Gbl.F.Out,"</select>");
|
||||||
|
|
||||||
if (IntervalType == TT_FREE_INTERVAL)
|
if (IntervalType == TT_FREE_INTERVAL)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<input type=\"hidden\" name=\"ModTTDur\" value=\"");
|
fprintf (Gbl.F.Out,"<input type=\"hidden\" name=\"ModTTDur\" value=\"");
|
||||||
for (I = Interval + 1;
|
for (I = Interval + 1;
|
||||||
I < TT_HOURS_PER_DAY * 2;
|
I < TT_INTERVALS_PER_DAY;
|
||||||
I++)
|
I++)
|
||||||
if (TT_TimeTable[Weekday][I].NumColumns == TT_MAX_COLUMNS_PER_CELL)
|
if (TT_TimeTable[Weekday][I].NumColumns == TT_MAX_COLUMNS_PER_CELL)
|
||||||
break;
|
break;
|
||||||
MaxDuration = I - Interval;
|
MaxDuration = I - Interval;
|
||||||
if (MaxDuration > 1)
|
Dur = (MaxDuration >= TT_INTERVALS_PER_HOUR) ? TT_INTERVALS_PER_HOUR : // MaxDuration >= 1h ==> Dur = 1h
|
||||||
fprintf (Gbl.F.Out,"1:00");
|
MaxDuration; // MaxDuration < 1h ==> Dur = MaxDuration
|
||||||
else
|
fprintf (Gbl.F.Out,"%u:%02u h\" />",
|
||||||
fprintf (Gbl.F.Out,"0:30");
|
(Dur / TT_INTERVALS_PER_HOUR), // Hours
|
||||||
fprintf (Gbl.F.Out," h\" />");
|
(Dur % TT_INTERVALS_PER_HOUR) * TT_MINUTES_PER_INTERVAL); // Minutes
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1418,7 +1429,7 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
||||||
" onchange=\"document.getElementById('%s').submit();\">",
|
" onchange=\"document.getElementById('%s').submit();\">",
|
||||||
Gbl.Form.Id);
|
Gbl.Form.Id);
|
||||||
for (I = Interval + TT_TimeTable[Weekday][Interval].Columns[Column].DurationNumIntervals;
|
for (I = Interval + TT_TimeTable[Weekday][Interval].Columns[Column].DurationNumIntervals;
|
||||||
I < TT_HOURS_PER_DAY * 2;
|
I < TT_INTERVALS_PER_DAY;
|
||||||
I++)
|
I++)
|
||||||
if (TT_TimeTable[Weekday][I].NumColumns == TT_MAX_COLUMNS_PER_CELL)
|
if (TT_TimeTable[Weekday][I].NumColumns == TT_MAX_COLUMNS_PER_CELL)
|
||||||
break;
|
break;
|
||||||
|
@ -1433,9 +1444,8 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
||||||
if (Dur == DurationNumIntervals)
|
if (Dur == DurationNumIntervals)
|
||||||
fprintf (Gbl.F.Out," selected=\"selected\"");
|
fprintf (Gbl.F.Out," selected=\"selected\"");
|
||||||
fprintf (Gbl.F.Out,">%u:%02u h</option>",
|
fprintf (Gbl.F.Out,">%u:%02u h</option>",
|
||||||
Dur / 2,
|
(Dur / TT_INTERVALS_PER_HOUR), // Hours
|
||||||
Dur % 2 ? 30 :
|
(Dur % TT_INTERVALS_PER_HOUR) * TT_MINUTES_PER_INTERVAL); // Minutes
|
||||||
0);
|
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"</select>");
|
fprintf (Gbl.F.Out,"</select>");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue