Version 15.30

This commit is contained in:
Antonio Cañas Vargas 2015-10-30 01:39:00 +01:00
parent efe35f9603
commit ae2efa17b5
3 changed files with 111 additions and 42 deletions

View File

@ -659,18 +659,18 @@ function disableDetailedClicks () {
/******************************** Draw a month *******************************/
/*****************************************************************************/
function DrawCurrentMonth (id,TimeUTC,CGI,FormEventParams) {
function DrawCurrentMonth (id,TimeUTC,CGI,CurrentPlcCod,FormGoToCalendarParams,FormEventParams) {
var d = new Date;
d.setTime(TimeUTC * 1000);
DrawMonth (id,d.getFullYear(),d.getMonth() + 1,d.getDate(),false,false,CGI,FormEventParams);
DrawMonth (id,d.getFullYear(),d.getMonth() + 1,d.getDate(),false,false,CGI,CurrentPlcCod,FormGoToCalendarParams,FormEventParams);
}
/*****************************************************************************/
/******************************** Draw a month *******************************/
/*****************************************************************************/
function DrawMonth (id,Year,Month,Today,DrawingCalendar,PrintView,CGI,FormEventParams)
function DrawMonth (id,Year,Month,Today,DrawingCalendar,PrintView,CGI,CurrentPlcCod,FormGoToCalendarParams,FormEventParams)
{
var NumDaysMonth = [
0,
@ -687,24 +687,25 @@ function DrawMonth (id,Year,Month,Today,DrawingCalendar,PrintView,CGI,FormEventP
30, // 11: November
31, // 12: December
];
// var StrExamOfX;
var Hld_HOLIDAY = 0;
var Hld_NON_SCHOOL_PERIOD = 1;
var Week;
var DayOfWeek; /* 0, 1, 2, 3, 4, 5, 6 */
var Day;
var NumDaysInMonth;
var Yea = Year;
var Mon = Month;
// var YYYYMMDD;
// var NumHld;
var YYYYMMDD;
var NumHld;
var ClassForDay; // Class of day depending on type of day
// var TextForDay; // Text associated to a day, for example the name of the holiday
var TextForDay; // Text associated to a day, for example the name of the holiday
var NumExamAnnouncement; // Number of exam announcement
// var ResultOfCmpStartDate;
// var ContinueSearching;
var ResultOfCmpStartDate;
var ContinueSearching;
var ThisDayHasEvent;
var IsToday;
var FormEventIdNum = 0;
var FormEventId;
var FormIdNum = 0;
var FormId;
/***** Compute number of day of month for the first box *****/
/* The initial day of month can be -5, -4, -3, -2, -1, 0, or 1
@ -736,9 +737,26 @@ function DrawMonth (id,Year,Month,Today,DrawingCalendar,PrintView,CGI,FormEventP
HTMLContent = '<div class="MONTH_CONTAINER">';
/***** Month name *****/
HTMLContent += '<div class="MONTH">' +
MONTHS_CAPS[Month-1] + ' ' + Year +
'</div>';
if (DrawingCalendar)
HTMLContent += '<div class="MONTH">';
else
{
FormId = 'show_calendar';
HTMLContent += '<form method="post" action="' +
CGI +
'" id="' +
FormId +
'">' +
FormGoToCalendarParams +
'<div class="MONTH">' +
'<a href="" class="MONTH"' +
' onclick="document.getElementById(\'' + FormId + '\').submit();return false;">';
}
HTMLContent += MONTHS_CAPS[Month-1] + ' ' + Year;
if (DrawingCalendar)
HTMLContent += '</div>';
else
HTMLContent += '</a></div></form>';
/***** Month head: first letter for each day of week *****/
HTMLContent += '<table class="MONTH_TABLE_DAYS">'
@ -767,8 +785,43 @@ function DrawMonth (id,Year,Month,Today,DrawingCalendar,PrintView,CGI,FormEventP
DayOfWeek++)
{
/***** Set class for day being drawn *****/
ClassForDay = (Mon == Month) ? 'DAY_WRK' :
'DAY_WRK_LIGHT';
ClassForDay = ((Mon == Month) ? 'DAY_WRK' :
'DAY_WRK_LIGHT');
TextForDay = '';
/* Check if day is a holiday or a school day */
YYYYMMDD = Yea*10000 + Mon*100 + Day;
for (NumHld = 0, ContinueSearching = true;
NumHld < Hlds.length && ContinueSearching;
NumHld++)
if (Hlds[NumHld].PlcCod <= 0 ||
Hlds[NumHld].PlcCod == CurrentPlcCod)
{
if (Hlds[NumHld].StartDate > YYYYMMDD) // List is ordered by start date. If start date is greater than date being drawn, don't continue searching
ContinueSearching = false;
else // start date <= date being drawn
switch (Hlds[NumHld].HldTyp)
{
case Hld_HOLIDAY:
if (Hlds[NumHld].StartDate == YYYYMMDD) // If start date == date being drawn
{
ClassForDay = ((Mon == Month) ? 'DAY_HLD' :
'DAY_HLD_LIGHT');
TextForDay = Hlds[NumHld].Name;
ContinueSearching = false;
}
break;
case Hld_NON_SCHOOL_PERIOD:
if (Hlds[NumHld].EndDate >= YYYYMMDD) // If start date <= date being drawn <= end date
{
ClassForDay = ((Mon == Month) ? 'DAY_NO_WORK' :
'DAY_NO_WORK_LIGHT');
TextForDay = Hlds[NumHld].Name;
}
break;
}
}
/* Day being drawn is sunday? */
if (DayOfWeek == 6) // All the sundays are holidays
ClassForDay = (Mon == Month) ? 'DAY_HLD' :
@ -790,17 +843,11 @@ function DrawMonth (id,Year,Month,Today,DrawingCalendar,PrintView,CGI,FormEventP
Day == LstExamAnnouncements[NumExamAnnouncement].Day)
{
ThisDayHasEvent = true;
/*
if (!PrintView)
{
sprintf (StrExamOfX,Txt_Exam_of_X,Gbl.CurrentCrs.Crs.FullName);
sprintf (Gbl.Title,"%s: %02u/%02u/%04u",
StrExamOfX,
Gbl.LstExamAnnouncements.Lst[NumExamAnnouncement].Day,
Gbl.LstExamAnnouncements.Lst[NumExamAnnouncement].Month,
Gbl.LstExamAnnouncements.Lst[NumExamAnnouncement].Yea);
}
*/
TextForDay = STR_EXAM + ': ' +
LstExamAnnouncements[NumExamAnnouncement].Year + '-' +
LstExamAnnouncements[NumExamAnnouncement].Month + '-' +
LstExamAnnouncements[NumExamAnnouncement].Day;
break;
}
@ -815,25 +862,26 @@ function DrawMonth (id,Year,Month,Today,DrawingCalendar,PrintView,CGI,FormEventP
/* If day has an exam announcement */
if (!PrintView && ThisDayHasEvent)
{
FormEventIdNum++;
FormEventId = 'cal_event_' + FormEventIdNum;
FormIdNum++;
FormId = 'cal_event_' + FormIdNum;
HTMLContent += '<form method="post" action="' +
CGI +
'" id="' +
FormEventId +
FormId +
'">';
HTMLContent += FormEventParams;
HTMLContent += '<div class="' + ClassForDay + '">';
HTMLContent += '<div class="' + ClassForDay + '"';
if (TextForDay.length)
HTMLContent += ' title="' + TextForDay + '"';
HTMLContent += '>';
HTMLContent += '<a href="" class="' + ClassForDay + '"' +
' onclick="document.getElementById(\'' + FormEventId + '\').submit();return false;">';
' onclick="document.getElementById(\'' + FormId + '\').submit();return false;">';
}
else
{
HTMLContent += '<div class="' + ClassForDay + '"';
/*
if (TextForDay)
fprintf (Gbl.F.Out," title=\"%s\"",TextForDay);
*/
if (TextForDay.length)
HTMLContent += ' title="' + TextForDay + '"';
HTMLContent += '>';
}

View File

@ -55,9 +55,11 @@ void Cal_DrawCurrentMonth (void)
{
extern const char *Txt_MONTHS_CAPS[12];
extern const char *Txt_DAYS_CAPS[7];
extern const char *Txt_Exam_of_X;
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
unsigned Month;
unsigned DayOfWeek; /* 0, 1, 2, 3, 4, 5, 6 */
unsigned NumHld;
unsigned NumExamAnnouncement; // Number of exam announcement
char Params[256+256+Ses_LENGTH_SESSION_ID+256];
@ -72,7 +74,7 @@ void Cal_DrawCurrentMonth (void)
Exa_CreateListOfExamAnnouncements ();
/***** Draw the month *****/
Cal_DrawMonth (Gbl.Now.Date.Year,Gbl.Now.Date.Month,false,false);
// Cal_DrawMonth (Gbl.Now.Date.Year,Gbl.Now.Date.Month,false,false);
/***** Draw the month in JavaScript *****/
/* JavaScript will write HTML here */
@ -103,21 +105,39 @@ void Cal_DrawCurrentMonth (void)
}
fprintf (Gbl.F.Out,"];\n");
fprintf (Gbl.F.Out," var STR_EXAM = '");
fprintf (Gbl.F.Out,Txt_Exam_of_X,Gbl.CurrentCrs.Crs.FullName);
fprintf (Gbl.F.Out,"';");
fprintf (Gbl.F.Out," var Hlds = [];\n");
for (NumHld = 0;
NumHld < Gbl.Hlds.Num;
NumHld++)
fprintf (Gbl.F.Out," Hlds.push({ PlcCod: %ld, HldTyp: %u, StartDate: %s, EndDate: %s, Name: '%s' });\n",
Gbl.Hlds.Lst[NumHld].PlcCod,
(unsigned) Gbl.Hlds.Lst[NumHld].HldTyp,
Gbl.Hlds.Lst[NumHld].StartDate.YYYYMMDD,
Gbl.Hlds.Lst[NumHld].EndDate.YYYYMMDD,
Gbl.Hlds.Lst[NumHld].Name);
fprintf (Gbl.F.Out," var LstExamAnnouncements = [];\n");
for (NumExamAnnouncement = 0;
NumExamAnnouncement < Gbl.LstExamAnnouncements.NumExamAnnounc;
NumExamAnnouncement++)
fprintf (Gbl.F.Out," LstExamAnnouncements.push({ Year: '%u', Month: '%u', Day: '%u' });\n",
fprintf (Gbl.F.Out," LstExamAnnouncements.push({ Year: %u, Month: %u, Day: %u });\n",
Gbl.LstExamAnnouncements.Lst[NumExamAnnouncement].Year,
Gbl.LstExamAnnouncements.Lst[NumExamAnnouncement].Month,
Gbl.LstExamAnnouncements.Lst[NumExamAnnouncement].Day);
Act_SetParamsForm (Params,ActSeeExaAnn,true);
fprintf (Gbl.F.Out," DrawCurrentMonth ('CurrentMonth',%ld,'%s/%s','%s');\n"
"</script>\n",
fprintf (Gbl.F.Out," DrawCurrentMonth ('CurrentMonth',%ld,'%s/%s',%ld,",
(long) Gbl.StartExecutionTimeUTC,
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],
Params);
Gbl.CurrentCtr.Ctr.PlcCod);
Act_SetParamsForm (Params,ActSeeCal,true);
fprintf (Gbl.F.Out,"'%s',",Params);
Act_SetParamsForm (Params,ActSeeExaAnn,true);
fprintf (Gbl.F.Out,"'%s');\n"
"</script>\n",Params);
/***** Free list of dates of exam announcements *****/
Exa_FreeListExamAnnouncements ();

View File

@ -108,11 +108,12 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.29.4 (2015/10/29)"
#define Log_PLATFORM_VERSION "SWAD 15.30 (2015/10/30)"
// Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
/*
Version 15.30: Oct 30, 2015 Current month is drown in browser using JavaScript. (186795 lines)
Version 15.29.4: Oct 29, 2015 Writing JavaScript function to draw a month in browser. Not finished. (186729 lines)
Version 15.29.3: Oct 29, 2015 Writing JavaScript function to draw a month in browser. Not finished. (186703 lines)
Version 15.29.2: Oct 29, 2015 Writing JavaScript function to draw a month in browser. Not finished. (186694 lines)