diff --git a/icon/date64x64.gif b/icon/date64x64.gif new file mode 100644 index 000000000..cac7bdd0b Binary files /dev/null and b/icon/date64x64.gif differ diff --git a/swad_action.c b/swad_action.c index 515f822e4..874823efb 100644 --- a/swad_action.c +++ b/swad_action.c @@ -2774,7 +2774,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActFrmRolSes */{ 843, 1,TabPrf,ActFrmRolSes ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Usr_WriteFormLogout ,"keyuser64x64.gif" }, /* ActMyCrs */{ 987, 2,TabPrf,ActMyCrs ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Crs_ReqSelectOneOfMyCourses ,"mygroups64x64.gif" }, /* ActSeeMyTT */{ 408, 3,TabPrf,ActSeeMyTT ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,TT_ShowClassTimeTable ,"clock64x64.gif" }, - /* ActSeeMyAgd */{1602, 5,TabPrf,ActSeeMyAgd ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_SeeEvents ,"date64x64.gif" }, + /* ActSeeMyAgd */{1602, 5,TabPrf,ActSeeMyAgd ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_SeeEvents ,"date64x64.gif" }, /* ActFrmMyAcc */{ 36, 6,TabPrf,ActFrmMyAcc ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_ShowFormMyAccount ,"arroba64x64.gif" }, /* ActReqEdiRecCom */{ 285, 7,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rec_ShowFormMySharedRecord ,"card64x64.gif" }, /* ActEdiPrf */{ 673, 8,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Pre_EditPrefs ,"heart64x64.gif" }, diff --git a/swad_changelog.h b/swad_changelog.h index b07a2af15..a094767b3 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -185,13 +185,17 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.81.4 (2016-12-01)" +#define Log_PLATFORM_VERSION "SWAD 16.81.5 (2016-12-01)" #define CSS_FILE "swad16.69.css" #define JS_FILE "swad16.46.1.js" // 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 16.81.5: Dec 01, 2016 Link in teacher's record card to show agenda. (209313 lines) +Copy the following icon to icon public directory: +sudo cp icon/date64x64.gif /var/www/html/swad/icon/ + Version 16.81.4: Dec 01, 2016 Changes in texts related to agenda. (209268 lines) Version 16.81.3: Dec 01, 2016 Icon view replaced by lock in agenda. Changes in texts related to agenda. (209227 lines) diff --git a/swad_record.c b/swad_record.c index e0c5bb579..0a73a1767 100644 --- a/swad_record.c +++ b/swad_record.c @@ -2306,6 +2306,7 @@ static void Rec_PutIconsCommands (void) extern struct Act_Actions Act_Actions[Act_NUM_ACTIONS]; extern const char *Txt_Edit_my_personal_data; extern const char *Txt_View_record_for_this_course; + extern const char *Txt_View_agenda; extern const char *Txt_Admin_user; extern const char *Txt_Write_a_message; extern const char *Txt_View_homework; @@ -2317,8 +2318,12 @@ static void Rec_PutIconsCommands (void) bool IAmLoggedAsStudent = (Gbl.Usrs.Me.LoggedRole == Rol_STUDENT); // My current role is student bool IAmLoggedAsTeacher = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER); // My current role is teacher bool IAmLoggedAsSysAdm = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); // My current role is superuser + bool IBelongToCurrentCrs = (Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB == Rol_STUDENT || + Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB == Rol_TEACHER); bool HeBelongsToCurrentCrs = (Gbl.Record.UsrDat->RoleInCurrentCrsDB == Rol_STUDENT || Gbl.Record.UsrDat->RoleInCurrentCrsDB == Rol_TEACHER); + bool HeIsATeacherInAnyCrs = (Gbl.Record.UsrDat->Roles & (1 << Rol_TEACHER)); + bool ICanViewAgenda; if (!Gbl.Form.Inside && // Only if not inside another form Act_Actions[Gbl.Action.Act].BrowserWindow == Act_THIS_WINDOW && // Only in main window @@ -2336,10 +2341,7 @@ static void Rec_PutIconsCommands (void) /***** Button to view user's record card in course when: - a course is selected && the user belongs to it && - I can view user's record card in course *****/ - if (HeBelongsToCurrentCrs && - (IAmLoggedAsStudent || - IAmLoggedAsTeacher || - IAmLoggedAsSysAdm)) + if (HeBelongsToCurrentCrs && (IBelongToCurrentCrs || IAmLoggedAsSysAdm)) Lay_PutContextualLink (Gbl.Record.UsrDat->RoleInCurrentCrsDB == Rol_STUDENT ? ActSeeRecOneStd : ActSeeRecOneTch, Rec_PutParamUsrCodEncrypted, @@ -2347,6 +2349,32 @@ static void Rec_PutIconsCommands (void) Txt_View_record_for_this_course,NULL, NULL); + /***** Button to view teacher's agenda when: + - he/she is a teacher and I share any course with him/her *****/ + if (HeIsATeacherInAnyCrs) + { + if (ItsMe) + Lay_PutContextualLink (ActSeeMyAgd, + NULL, + "date64x64.gif", + Txt_View_agenda,NULL, + NULL); + else // Not me + { + if (!(ICanViewAgenda = (IBelongToCurrentCrs && + HeBelongsToCurrentCrs) || // Course selected and we both belong to it + IAmLoggedAsSysAdm)) // I am system admin + // The following slow check is made only if the previous fails + ICanViewAgenda = Usr_CheckIfUsrSharesAnyOfMyCrs (Gbl.Record.UsrDat->UsrCod); + if (ICanViewAgenda) + Lay_PutContextualLink (ActSeeMyAgd, + Rec_PutParamUsrCodEncrypted, + "date64x64.gif", + Txt_View_agenda,NULL, + NULL); + } + } + /***** Button to admin user *****/ if (ItsMe || (Gbl.CurrentCrs.Crs.CrsCod > 0 && Gbl.Usrs.Me.LoggedRole == Rol_TEACHER) || @@ -2391,23 +2419,18 @@ static void Rec_PutIconsCommands (void) NULL); /***** Button to view user's attendance *****/ - if (IAmLoggedAsStudent || - IAmLoggedAsTeacher || - IAmLoggedAsSysAdm) - { - if (IAmLoggedAsStudent) - // As student, I can see my attendance - Lay_PutContextualLink (ActSeeLstMyAtt,NULL, - "rollcall64x64.png", - Txt_View_attendance,NULL, - NULL); - else // IAmLoggedAsTeacher || IAmLoggedAsSysAdm - // As teacher, I can see attendance of the student - Lay_PutContextualLink (ActSeeLstStdAtt,Rec_PutParamsStudent, - "rollcall64x64.png", - Txt_View_attendance,NULL, - NULL); - } + if (ItsMe && IAmLoggedAsStudent) + // As student, I can see my attendance + Lay_PutContextualLink (ActSeeLstMyAtt,NULL, + "rollcall64x64.png", + Txt_View_attendance,NULL, + NULL); + else if (IAmLoggedAsTeacher || IAmLoggedAsSysAdm) + // As teacher, I can see attendance of the student + Lay_PutContextualLink (ActSeeLstStdAtt,Rec_PutParamsStudent, + "rollcall64x64.png", + Txt_View_attendance,NULL, + NULL); } /***** Button to send a message *****/ diff --git a/swad_text.c b/swad_text.c index 41fd2291f..157755001 100644 --- a/swad_text.c +++ b/swad_text.c @@ -50170,6 +50170,27 @@ const char *Txt_View = "Ver"; #endif +const char *Txt_View_agenda = +#if L==1 + "Veure agenda"; +#elif L==2 + "Siehe Organizer"; +#elif L==3 + "View agenda"; +#elif L==4 + "Ver agenda"; +#elif L==5 + "Voir agenda"; +#elif L==6 + "Ver agenda"; // Okoteve traducción +#elif L==7 + "Vedi agenda"; +#elif L==8 + "Wiadomości pamiętnik"; +#elif L==9 + "Veja agenda"; +#endif + const char *Txt_View_all_recipients = #if L==1 "Ver todos los destinatarios"; // Necessita traduccio