Version 15.43.1

This commit is contained in:
Antonio Cañas Vargas 2015-11-22 00:40:23 +01:00
parent 7045feb554
commit 39ecd35798
4 changed files with 109 additions and 71 deletions

View File

@ -772,6 +772,7 @@ Assessment:
629. ActSeeOneTstExaOth Show one test exam of other user 629. ActSeeOneTstExaOth Show one test exam of other user
630. ActPrnCal Show print view of the academic calendar of the course 630. ActPrnCal Show print view of the academic calendar of the course
------> 630. ActChgCal1stDay Change first day of week and show academic calendar of the course
631. ActEdiExaAnn Edit an exam announcement 631. ActEdiExaAnn Edit an exam announcement
632. ActRcvExaAnn Receive an exam announcement 632. ActRcvExaAnn Receive an exam announcement
@ -2200,6 +2201,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActSeeOneTstExaOth*/{1082,-1,TabAss,ActReqTst ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Tst_ShowOneTestExam ,NULL}, /* ActSeeOneTstExaOth*/{1082,-1,TabAss,ActReqTst ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Tst_ShowOneTestExam ,NULL},
/* ActPrnCal */{ 71,-1,TabAss,ActSeeCal ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Cal_DrawCalendar ,NULL}, /* ActPrnCal */{ 71,-1,TabAss,ActSeeCal ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Cal_DrawCalendar ,NULL},
/* ActChgCal1stDay */{1485,-1,TabAss,ActSeeCal ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Cal_ChangeFirstDayOfWeek ,Cal_DrawCalendar ,NULL},
/* ActEdiExaAnn */{ 91,-1,TabAss,ActSeeExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_PutFrmEditAExamAnnouncement,NULL}, /* ActEdiExaAnn */{ 91,-1,TabAss,ActSeeExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_PutFrmEditAExamAnnouncement,NULL},
/* ActRcvExaAnn */{ 110,-1,TabAss,ActSeeExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_ReceiveExamAnnouncement ,NULL}, /* ActRcvExaAnn */{ 110,-1,TabAss,ActSeeExaAnn ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Exa_ReceiveExamAnnouncement ,NULL},
@ -4281,6 +4283,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
ActNewMaiStd, // #1482 ActNewMaiStd, // #1482
ActNewMaiTch, // #1483 ActNewMaiTch, // #1483
ActChg1stDay, // #1484 ActChg1stDay, // #1484
ActChgCal1stDay, // #1485
}; };
/*****************************************************************************/ /*****************************************************************************/

View File

@ -70,9 +70,9 @@ typedef enum
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+182+154+171+27+80) #define Act_NUM_ACTIONS (7+52+15+90+73+68+204+183+154+171+27+80)
#define Act_MAX_ACTION_COD 1484 #define Act_MAX_ACTION_COD 1485
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
@ -794,73 +794,74 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
#define ActSeeOneTstExaOth (ActRcvRchTxtCrsLnk+121) #define ActSeeOneTstExaOth (ActRcvRchTxtCrsLnk+121)
#define ActPrnCal (ActRcvRchTxtCrsLnk+122) #define ActPrnCal (ActRcvRchTxtCrsLnk+122)
#define ActChgCal1stDay (ActRcvRchTxtCrsLnk+123)
#define ActEdiExaAnn (ActRcvRchTxtCrsLnk+123) #define ActEdiExaAnn (ActRcvRchTxtCrsLnk+124)
#define ActRcvExaAnn (ActRcvRchTxtCrsLnk+124) #define ActRcvExaAnn (ActRcvRchTxtCrsLnk+125)
#define ActPrnExaAnn (ActRcvRchTxtCrsLnk+125) #define ActPrnExaAnn (ActRcvRchTxtCrsLnk+126)
#define ActRemExaAnn (ActRcvRchTxtCrsLnk+126) #define ActRemExaAnn (ActRcvRchTxtCrsLnk+127)
#define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+127) #define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+128)
#define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+128) #define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+129)
#define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+129) #define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+130)
#define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+130) #define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+131)
#define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+131) #define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+132)
#define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+132) #define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+133)
#define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+133) #define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+134)
#define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+134) #define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+135)
#define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+135) #define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+136)
#define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+136) #define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+137)
#define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+137) #define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+138)
#define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+138) #define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+139)
#define ActAdmMrkCrs (ActRcvRchTxtCrsLnk+139) #define ActAdmMrkCrs (ActRcvRchTxtCrsLnk+140)
#define ActReqRemFilMrkCrs (ActRcvRchTxtCrsLnk+140) #define ActReqRemFilMrkCrs (ActRcvRchTxtCrsLnk+141)
#define ActRemFilMrkCrs (ActRcvRchTxtCrsLnk+141) #define ActRemFilMrkCrs (ActRcvRchTxtCrsLnk+142)
#define ActRemFolMrkCrs (ActRcvRchTxtCrsLnk+142) #define ActRemFolMrkCrs (ActRcvRchTxtCrsLnk+143)
#define ActCopMrkCrs (ActRcvRchTxtCrsLnk+143) #define ActCopMrkCrs (ActRcvRchTxtCrsLnk+144)
#define ActPasMrkCrs (ActRcvRchTxtCrsLnk+144) #define ActPasMrkCrs (ActRcvRchTxtCrsLnk+145)
#define ActRemTreMrkCrs (ActRcvRchTxtCrsLnk+145) #define ActRemTreMrkCrs (ActRcvRchTxtCrsLnk+146)
#define ActFrmCreMrkCrs (ActRcvRchTxtCrsLnk+146) #define ActFrmCreMrkCrs (ActRcvRchTxtCrsLnk+147)
#define ActCreFolMrkCrs (ActRcvRchTxtCrsLnk+147) #define ActCreFolMrkCrs (ActRcvRchTxtCrsLnk+148)
#define ActRenFolMrkCrs (ActRcvRchTxtCrsLnk+148) #define ActRenFolMrkCrs (ActRcvRchTxtCrsLnk+149)
#define ActRcvFilMrkCrsDZ (ActRcvRchTxtCrsLnk+149) #define ActRcvFilMrkCrsDZ (ActRcvRchTxtCrsLnk+150)
#define ActRcvFilMrkCrsCla (ActRcvRchTxtCrsLnk+150) #define ActRcvFilMrkCrsCla (ActRcvRchTxtCrsLnk+151)
#define ActExpAdmMrkCrs (ActRcvRchTxtCrsLnk+151) #define ActExpAdmMrkCrs (ActRcvRchTxtCrsLnk+152)
#define ActConAdmMrkCrs (ActRcvRchTxtCrsLnk+152) #define ActConAdmMrkCrs (ActRcvRchTxtCrsLnk+153)
#define ActZIPAdmMrkCrs (ActRcvRchTxtCrsLnk+153) #define ActZIPAdmMrkCrs (ActRcvRchTxtCrsLnk+154)
#define ActShoMrkCrs (ActRcvRchTxtCrsLnk+154) #define ActShoMrkCrs (ActRcvRchTxtCrsLnk+155)
#define ActHidMrkCrs (ActRcvRchTxtCrsLnk+155) #define ActHidMrkCrs (ActRcvRchTxtCrsLnk+156)
#define ActReqDatAdmMrkCrs (ActRcvRchTxtCrsLnk+156) #define ActReqDatAdmMrkCrs (ActRcvRchTxtCrsLnk+157)
#define ActChgDatAdmMrkCrs (ActRcvRchTxtCrsLnk+157) #define ActChgDatAdmMrkCrs (ActRcvRchTxtCrsLnk+158)
#define ActDowAdmMrkCrs (ActRcvRchTxtCrsLnk+158) #define ActDowAdmMrkCrs (ActRcvRchTxtCrsLnk+159)
#define ActChgNumRowHeaCrs (ActRcvRchTxtCrsLnk+159) #define ActChgNumRowHeaCrs (ActRcvRchTxtCrsLnk+160)
#define ActChgNumRowFooCrs (ActRcvRchTxtCrsLnk+160) #define ActChgNumRowFooCrs (ActRcvRchTxtCrsLnk+161)
#define ActAdmMrkGrp (ActRcvRchTxtCrsLnk+161) #define ActAdmMrkGrp (ActRcvRchTxtCrsLnk+162)
#define ActReqRemFilMrkGrp (ActRcvRchTxtCrsLnk+162) #define ActReqRemFilMrkGrp (ActRcvRchTxtCrsLnk+163)
#define ActRemFilMrkGrp (ActRcvRchTxtCrsLnk+163) #define ActRemFilMrkGrp (ActRcvRchTxtCrsLnk+164)
#define ActRemFolMrkGrp (ActRcvRchTxtCrsLnk+164) #define ActRemFolMrkGrp (ActRcvRchTxtCrsLnk+165)
#define ActCopMrkGrp (ActRcvRchTxtCrsLnk+165) #define ActCopMrkGrp (ActRcvRchTxtCrsLnk+166)
#define ActPasMrkGrp (ActRcvRchTxtCrsLnk+166) #define ActPasMrkGrp (ActRcvRchTxtCrsLnk+167)
#define ActRemTreMrkGrp (ActRcvRchTxtCrsLnk+167) #define ActRemTreMrkGrp (ActRcvRchTxtCrsLnk+168)
#define ActFrmCreMrkGrp (ActRcvRchTxtCrsLnk+168) #define ActFrmCreMrkGrp (ActRcvRchTxtCrsLnk+169)
#define ActCreFolMrkGrp (ActRcvRchTxtCrsLnk+169) #define ActCreFolMrkGrp (ActRcvRchTxtCrsLnk+170)
#define ActRenFolMrkGrp (ActRcvRchTxtCrsLnk+170) #define ActRenFolMrkGrp (ActRcvRchTxtCrsLnk+171)
#define ActRcvFilMrkGrpDZ (ActRcvRchTxtCrsLnk+171) #define ActRcvFilMrkGrpDZ (ActRcvRchTxtCrsLnk+172)
#define ActRcvFilMrkGrpCla (ActRcvRchTxtCrsLnk+172) #define ActRcvFilMrkGrpCla (ActRcvRchTxtCrsLnk+173)
#define ActExpAdmMrkGrp (ActRcvRchTxtCrsLnk+173) #define ActExpAdmMrkGrp (ActRcvRchTxtCrsLnk+174)
#define ActConAdmMrkGrp (ActRcvRchTxtCrsLnk+174) #define ActConAdmMrkGrp (ActRcvRchTxtCrsLnk+175)
#define ActZIPAdmMrkGrp (ActRcvRchTxtCrsLnk+175) #define ActZIPAdmMrkGrp (ActRcvRchTxtCrsLnk+176)
#define ActShoMrkGrp (ActRcvRchTxtCrsLnk+176) #define ActShoMrkGrp (ActRcvRchTxtCrsLnk+177)
#define ActHidMrkGrp (ActRcvRchTxtCrsLnk+177) #define ActHidMrkGrp (ActRcvRchTxtCrsLnk+178)
#define ActReqDatAdmMrkGrp (ActRcvRchTxtCrsLnk+178) #define ActReqDatAdmMrkGrp (ActRcvRchTxtCrsLnk+179)
#define ActChgDatAdmMrkGrp (ActRcvRchTxtCrsLnk+179) #define ActChgDatAdmMrkGrp (ActRcvRchTxtCrsLnk+180)
#define ActDowAdmMrkGrp (ActRcvRchTxtCrsLnk+180) #define ActDowAdmMrkGrp (ActRcvRchTxtCrsLnk+181)
#define ActChgNumRowHeaGrp (ActRcvRchTxtCrsLnk+181) #define ActChgNumRowHeaGrp (ActRcvRchTxtCrsLnk+182)
#define ActChgNumRowFooGrp (ActRcvRchTxtCrsLnk+182) #define ActChgNumRowFooGrp (ActRcvRchTxtCrsLnk+183)
/*****************************************************************************/ /*****************************************************************************/
/******************************* Users tab ***********************************/ /******************************* Users tab ***********************************/

View File

@ -59,6 +59,9 @@ const bool Cal_DayIsValidAsFirstDayOfWeek[7] =
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Cal_ShowFormInCalendarToSelectFirstDayOfWeek (void);
static void Cal_ShowFormToSelectFirstDayOfWeek (Act_Action_t Action,const char *ClassIcon);
static unsigned Cal_GetParamFirstDayOfWeek (void); static unsigned Cal_GetParamFirstDayOfWeek (void);
/*****************************************************************************/ /*****************************************************************************/
@ -68,11 +71,33 @@ static unsigned Cal_GetParamFirstDayOfWeek (void);
void Cal_PutIconsToSelectFirstDayOfWeek (void) void Cal_PutIconsToSelectFirstDayOfWeek (void)
{ {
extern const char *Txt_Calendar; extern const char *Txt_Calendar;
Lay_StartRoundFrameTable (NULL,2,Txt_Calendar);
Cal_ShowFormToSelectFirstDayOfWeek (ActChg1stDay,"ICON32x32");
Lay_EndRoundFrameTable ();
}
/*****************************************************************************/
/************** Show form to select the first day of the week ****************/
/*****************************************************************************/
static void Cal_ShowFormInCalendarToSelectFirstDayOfWeek (void)
{
fprintf (Gbl.F.Out,"<table class=\"CELLS_PAD_2\" style=\"margin:0 auto;\">");
Cal_ShowFormToSelectFirstDayOfWeek (ActChgCal1stDay,"ICON28x28");
fprintf (Gbl.F.Out,"</table>");
}
/*****************************************************************************/
/******** Show form in calendar to select the first day of the week **********/
/*****************************************************************************/
static void Cal_ShowFormToSelectFirstDayOfWeek (Act_Action_t Action,const char *ClassIcon)
{
extern const char *Txt_First_day_of_the_week; extern const char *Txt_First_day_of_the_week;
extern const char *Txt_DAYS_SMALL[7]; extern const char *Txt_DAYS_SMALL[7];
unsigned FirstDayOfWeek; unsigned FirstDayOfWeek;
Lay_StartRoundFrameTable (NULL,2,Txt_Calendar);
fprintf (Gbl.F.Out,"<tr>"); fprintf (Gbl.F.Out,"<tr>");
for (FirstDayOfWeek = 0; // Monday for (FirstDayOfWeek = 0; // Monday
FirstDayOfWeek <= 6; // Sunday FirstDayOfWeek <= 6; // Sunday
@ -82,20 +107,20 @@ void Cal_PutIconsToSelectFirstDayOfWeek (void)
fprintf (Gbl.F.Out,"<td class=\"%s\">", fprintf (Gbl.F.Out,"<td class=\"%s\">",
FirstDayOfWeek == Gbl.Prefs.FirstDayOfWeek ? "LAYOUT_ON" : FirstDayOfWeek == Gbl.Prefs.FirstDayOfWeek ? "LAYOUT_ON" :
"LAYOUT_OFF"); "LAYOUT_OFF");
Act_FormStart (ActChg1stDay); Act_FormStart (Action);
Par_PutHiddenParamUnsigned ("FirstDayOfWeek",FirstDayOfWeek); Par_PutHiddenParamUnsigned ("FirstDayOfWeek",FirstDayOfWeek);
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/first-day-of-week-%u-64x64.png\"" fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/first-day-of-week-%u-64x64.png\""
" alt=\"%s\" title=\"%s: %s\" class=\"ICON32x32B\"" " alt=\"%s\" title=\"%s: %s\" class=\"%s\""
" style=\"margin:0 auto;\" />", " style=\"margin:0 auto;\" />",
Gbl.Prefs.IconsURL, Gbl.Prefs.IconsURL,
FirstDayOfWeek, FirstDayOfWeek,
Txt_DAYS_SMALL[FirstDayOfWeek], Txt_DAYS_SMALL[FirstDayOfWeek],
Txt_First_day_of_the_week,Txt_DAYS_SMALL[FirstDayOfWeek]); Txt_First_day_of_the_week,Txt_DAYS_SMALL[FirstDayOfWeek],
ClassIcon);
Act_FormEnd (); Act_FormEnd ();
fprintf (Gbl.F.Out,"</td>"); fprintf (Gbl.F.Out,"</td>");
} }
fprintf (Gbl.F.Out,"</tr>"); fprintf (Gbl.F.Out,"</tr>");
Lay_EndRoundFrameTable ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -235,10 +260,15 @@ void Cal_DrawCalendar (void)
Gbl.CurrentCrs.Crs.CrsCod); Gbl.CurrentCrs.Crs.CrsCod);
/***** Draw several months *****/ /***** Draw several months *****/
/* JavaScript will write HTML here */
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td class=\"CENTER_TOP\">" "<td class=\"CENTER_TOP\">");
"<div id=\"calendar\">"
/* Show form to change first day of week */
if (!PrintView)
Cal_ShowFormInCalendarToSelectFirstDayOfWeek ();
/* JavaScript will write HTML here */
fprintf (Gbl.F.Out,"<div id=\"calendar\">"
"</div>"); "</div>");
/* Write script to draw the month */ /* Write script to draw the month */

View File

@ -111,11 +111,15 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.43 (2015/11/21)" #define Log_PLATFORM_VERSION "SWAD 15.43.1 (2015/11/22)"
// 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 15.43.1: Nov 22, 2015 New figure (statistic) about first day of week. (187722 lines)
1 change necessary in database:
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1485','es','N','Cambiar primer d&iacute;a semana en calendario');
Version 15.43: Nov 21, 2015 New figure (statistic) about first day of week. (187693 lines) Version 15.43: Nov 21, 2015 New figure (statistic) about first day of week. (187693 lines)
Version 15.42.4: Nov 21, 2015 Fixed bug when getting first day of week from IP preferences. (187535 lines) Version 15.42.4: Nov 21, 2015 Fixed bug when getting first day of week from IP preferences. (187535 lines)
Version 15.42.3: Nov 21, 2015 Stats of hits distributed by week depend on user's preference about first day of the week. (187528 lines) Version 15.42.3: Nov 21, 2015 Stats of hits distributed by week depend on user's preference about first day of the week. (187528 lines)