Version 15.34.1

This commit is contained in:
Antonio Cañas Vargas 2015-11-01 21:19:33 +01:00
parent 58277e9168
commit 7609708949
12 changed files with 120 additions and 76 deletions

View File

@ -359,8 +359,16 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;}
text-align:center; text-align:center;
overflow:hidden; overflow:hidden;
} }
.NOTICE_TEXT_BRIEF
{
clear:both;
font-size:12pt;
color:#204080;
overflow:hidden;
}
.NOTICE_TEXT_ACTIVE .NOTICE_TEXT_ACTIVE
{ {
padding:10px 20px;
clear:both; clear:both;
font-size:12pt; font-size:12pt;
color:#204080; color:#204080;
@ -368,6 +376,7 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;}
} }
.NOTICE_TEXT_OBSOLETE .NOTICE_TEXT_OBSOLETE
{ {
padding:10px 20px;
clear:both; clear:both;
font-size:12pt; font-size:12pt;
color:#4070A0; color:#4070A0;

View File

@ -313,6 +313,7 @@ form {margin:0; display:inline;}
} }
.NOTICE_TEXT_ACTIVE .NOTICE_TEXT_ACTIVE
{ {
padding:10px 20px;
clear:both; clear:both;
font-size:12pt; font-size:12pt;
color:#204080; color:#204080;
@ -320,6 +321,7 @@ form {margin:0; display:inline;}
} }
.NOTICE_TEXT_OBSOLETE .NOTICE_TEXT_OBSOLETE
{ {
padding:10px 20px;
clear:both; clear:both;
font-size:12pt; font-size:12pt;
color:#4070A0; color:#4070A0;

View File

@ -2440,7 +2440,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
// TabMsg ****************************************************************** // TabMsg ******************************************************************
// Actions in menu: // Actions in menu:
/* ActSeeNtf */{ 990, 0,TabMsg,ActSeeNtf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ntf_ShowMyNotifications ,"bell" }, /* ActSeeNtf */{ 990, 0,TabMsg,ActSeeNtf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ntf_ShowMyNotifications ,"bell" },
/* ActSeeAnn */{1235, 1,TabMsg,ActSeeAnn ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ann_ShowAllAnnouncements ,"note" }, /* ActSeeAnn */{1235, 1,TabMsg,ActSeeAnn ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ann_ShowAllAnnouncements ,"note" },
/* ActSeeNot */{ 762, 2,TabMsg,ActSeeNot ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_ListNotices ,"note" }, /* ActSeeNot */{ 762, 2,TabMsg,ActSeeNot ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_ListNotices ,"note" },
/* ActSeeFor */{ 95, 3,TabMsg,ActSeeFor ,0x1FC,0x1FC,0x1FC,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,For_ShowForumList ,"forum" }, /* ActSeeFor */{ 95, 3,TabMsg,ActSeeFor ,0x1FC,0x1FC,0x1FC,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,For_ShowForumList ,"forum" },
/* ActSeeChtRms */{ 51, 4,TabMsg,ActSeeChtRms ,0x1FC,0x1FC,0x1FC,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Cht_ShowChatRooms ,"chat" }, /* ActSeeChtRms */{ 51, 4,TabMsg,ActSeeChtRms ,0x1FC,0x1FC,0x1FC,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Cht_ShowChatRooms ,"chat" },

View File

@ -73,7 +73,7 @@ static void Ann_CreateAnnouncement (unsigned Roles,const char *Subject,const cha
void Ann_ShowAllAnnouncements (void) void Ann_ShowAllAnnouncements (void)
{ {
extern const char *Txt_New_announcement; extern const char *Txt_New_announcement;
extern const char *Txt_All_announcements; extern const char *Txt_Announcements;
extern const char *Txt_No_announcements; extern const char *Txt_No_announcements;
char Query[256]; char Query[256];
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
@ -97,14 +97,32 @@ void Ann_ShowAllAnnouncements (void)
} }
/***** Get announcements from database *****/ /***** Get announcements from database *****/
sprintf (Query,"SELECT AnnCod,Status,Roles,Subject,Content" if (ICanEditAnnouncements)
" FROM announcements" /* Select all announcements */
" ORDER BY AnnCod DESC"); sprintf (Query,"SELECT AnnCod,Status,Roles,Subject,Content"
" FROM announcements"
" ORDER BY AnnCod DESC");
else if (Gbl.Usrs.Me.Logged)
/* Select only active announcements I can see */
sprintf (Query,"SELECT AnnCod,Status,Roles,Subject,Content"
" FROM announcements"
" WHERE Status='%u' AND (Roles&%u)<>0 "
" ORDER BY AnnCod DESC",
(unsigned) Ann_ACTIVE_ANNOUNCEMENT,
Gbl.Usrs.Me.UsrDat.Roles); // All my roles in different courses
else // No user logged
/* Select only active announcements for unknown users */
sprintf (Query,"SELECT AnnCod,Status,Roles,Subject,Content"
" FROM announcements"
" WHERE Status='%u' AND (Roles&%u)<>0 "
" ORDER BY AnnCod DESC",
(unsigned) Ann_ACTIVE_ANNOUNCEMENT,
(unsigned) (1 << Rol_UNKNOWN));
NumAnnouncements = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get announcements"); NumAnnouncements = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get announcements");
if (NumAnnouncements) if (NumAnnouncements)
/***** Start frame *****/ /***** Start frame *****/
Lay_StartRoundFrame ("550px",Txt_All_announcements); Lay_StartRoundFrame ("550px",Txt_Announcements);
else else
Lay_ShowAlert (Lay_INFO,Txt_No_announcements); Lay_ShowAlert (Lay_INFO,Txt_No_announcements);
@ -170,7 +188,7 @@ void Ann_ShowMyAnnouncementsNotMarkedAsSeen (void)
/***** Select announcements not seen *****/ /***** Select announcements not seen *****/
// Roles == 24 ==> Teachers and students // Roles == 24 ==> Teachers and students
sprintf (Query,"SELECT AnnCod,Subject,Content FROM announcements" sprintf (Query,"SELECT AnnCod,Subject,Content FROM announcements"
" WHERE (Roles&%u)<>0 AND Status='%u'" " WHERE Status='%u' AND (Roles&%u)<>0 "
" AND AnnCod NOT IN" " AND AnnCod NOT IN"
" (SELECT AnnCod FROM ann_seen WHERE UsrCod='%ld')" " (SELECT AnnCod FROM ann_seen WHERE UsrCod='%ld')"
" ORDER BY AnnCod DESC", // Newest first " ORDER BY AnnCod DESC", // Newest first
@ -249,7 +267,7 @@ static void Ann_DrawAnAnnouncement (long AnnCod,Ann_Status_t Status,
"NOTICE_AUTHOR_OBSOLETE", // Ann_OBSOLETE_ANNOUNCEMENT "NOTICE_AUTHOR_OBSOLETE", // Ann_OBSOLETE_ANNOUNCEMENT
}; };
Rol_Role_t Role; Rol_Role_t Role;
bool RolesSelected; bool SomeRolesAreSelected;
/***** Start yellow note *****/ /***** Start yellow note *****/
fprintf (Gbl.F.Out,"<div class=\"%s\" style=\"width:500px;\">", fprintf (Gbl.F.Out,"<div class=\"%s\" style=\"width:500px;\">",
@ -320,15 +338,14 @@ static void Ann_DrawAnAnnouncement (long AnnCod,Ann_Status_t Status,
/* Users' roles who can view this announcement */ /* Users' roles who can view this announcement */
fprintf (Gbl.F.Out,"<p class=\"%s\">%s:", fprintf (Gbl.F.Out,"<p class=\"%s\">%s:",
UsersClass[Status],Txt_Users); UsersClass[Status],Txt_Users);
for (Role = Rol_STUDENT, RolesSelected = false; for (Role = Rol_UNKNOWN, SomeRolesAreSelected = false;
Role <= Rol_TEACHER; Role <= Rol_TEACHER;
Role++) Role++)
if (Roles & (1 << Role)) if (Roles & (1 << Role))
{ {
if (RolesSelected) if (SomeRolesAreSelected)
fprintf (Gbl.F.Out,","); fprintf (Gbl.F.Out,",");
else SomeRolesAreSelected = true;
RolesSelected = true;
fprintf (Gbl.F.Out," %s",Txt_ROLES_PLURAL_abc[Role][Usr_SEX_UNKNOWN]); fprintf (Gbl.F.Out," %s",Txt_ROLES_PLURAL_abc[Role][Usr_SEX_UNKNOWN]);
} }
fprintf (Gbl.F.Out,"</p>"); fprintf (Gbl.F.Out,"</p>");
@ -433,7 +450,13 @@ void Ann_ShowFormAnnouncement (void)
"<td class=\"DAT LEFT_TOP\">", "<td class=\"DAT LEFT_TOP\">",
The_ClassForm[Gbl.Prefs.Theme], The_ClassForm[Gbl.Prefs.Theme],
Txt_Users); Txt_Users);
Rol_WriteSelectorRoles (1 << Rol_STUDENT | Rol_WriteSelectorRoles (1 << Rol_UNKNOWN |
1 << Rol__GUEST_ |
1 << Rol_STUDENT |
1 << Rol_TEACHER,
1 << Rol_UNKNOWN |
1 << Rol__GUEST_ |
1 << Rol_STUDENT |
1 << Rol_TEACHER); 1 << Rol_TEACHER);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
"</tr>"); "</tr>");

View File

@ -109,11 +109,12 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.34 (2015/11/01)" #define Log_PLATFORM_VERSION "SWAD 15.34.1 (2015/11/01)"
// 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.34.1: Nov 01, 2015 Global announcements can be seen by all. (186939 lines)
Version 15.34: Nov 01, 2015 Global announcements can be hidden. (186896 lines) Version 15.34: Nov 01, 2015 Global announcements can be hidden. (186896 lines)
3 changes necessary in database: 3 changes necessary in database:
ALTER TABLE announcements ADD COLUMN Status TINYINT NOT NULL DEFAULT 0 AFTER AnnCod,ADD INDEX (Status); ALTER TABLE announcements ADD COLUMN Status TINYINT NOT NULL DEFAULT 0 AFTER AnnCod,ADD INDEX (Status);

View File

@ -2142,7 +2142,7 @@ void Enr_ShowEnrollmentRequests (void)
extern const char *Txt_Register; extern const char *Txt_Register;
extern const char *Txt_Reject; extern const char *Txt_Reject;
extern const char *Txt_No_enrollment_requests; extern const char *Txt_No_enrollment_requests;
unsigned Roles; unsigned RolesSelected;
char Query[1024]; char Query[1024];
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -2194,25 +2194,28 @@ void Enr_ShowEnrollmentRequests (void)
"<td class=\"DAT LEFT_MIDDLE\">", "<td class=\"DAT LEFT_MIDDLE\">",
The_ClassForm[Gbl.Prefs.Theme], The_ClassForm[Gbl.Prefs.Theme],
Txt_Users); Txt_Users);
Rol_GetSelectedRoles (&Roles); Rol_GetSelectedRoles (&RolesSelected);
if (!Roles) if (!RolesSelected)
/* Set default roles */ /* Set default roles */
switch (Gbl.Usrs.Me.LoggedRole) switch (Gbl.Usrs.Me.LoggedRole)
{ {
case Rol_TEACHER: case Rol_TEACHER:
Roles = (1 << Rol_STUDENT) | (1 << Rol_TEACHER); RolesSelected = (1 << Rol_STUDENT) |
(1 << Rol_TEACHER);
break; break;
case Rol_DEG_ADM: case Rol_DEG_ADM:
case Rol_CTR_ADM: case Rol_CTR_ADM:
case Rol_INS_ADM: case Rol_INS_ADM:
case Rol_SYS_ADM: case Rol_SYS_ADM:
Roles = (1 << Rol_TEACHER); RolesSelected = (1 << Rol_TEACHER);
break; break;
default: default:
Lay_ShowErrorAndExit ("You don't have permission to list requesters."); Lay_ShowErrorAndExit ("You don't have permission to list requesters.");
break; break;
} }
Rol_WriteSelectorRoles (Roles); Rol_WriteSelectorRoles (1 << Rol_STUDENT |
1 << Rol_TEACHER,
RolesSelected);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
"</tr>" "</tr>"
"</table>"); "</table>");
@ -2242,7 +2245,7 @@ void Enr_ShowEnrollmentRequests (void)
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Roles); RolesSelected);
break; break;
case Rol_DEG_ADM: case Rol_DEG_ADM:
sprintf (Query,"SELECT crs_usr_requests.ReqCod," sprintf (Query,"SELECT crs_usr_requests.ReqCod,"
@ -2257,7 +2260,7 @@ void Enr_ShowEnrollmentRequests (void)
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Roles); RolesSelected);
break; break;
case Rol_CTR_ADM: case Rol_CTR_ADM:
sprintf (Query,"SELECT crs_usr_requests.ReqCod," sprintf (Query,"SELECT crs_usr_requests.ReqCod,"
@ -2273,7 +2276,7 @@ void Enr_ShowEnrollmentRequests (void)
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Roles); RolesSelected);
break; break;
case Rol_INS_ADM: case Rol_INS_ADM:
sprintf (Query,"SELECT crs_usr_requests.ReqCod," sprintf (Query,"SELECT crs_usr_requests.ReqCod,"
@ -2290,7 +2293,7 @@ void Enr_ShowEnrollmentRequests (void)
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Roles); RolesSelected);
break; break;
case Rol_SYS_ADM: case Rol_SYS_ADM:
sprintf (Query,"SELECT ReqCod," sprintf (Query,"SELECT ReqCod,"
@ -2301,7 +2304,7 @@ void Enr_ShowEnrollmentRequests (void)
" FROM crs_usr_requests" " FROM crs_usr_requests"
" WHERE ((1<<Role)&%u)<>0" " WHERE ((1<<Role)&%u)<>0"
" ORDER BY RequestTime DESC", " ORDER BY RequestTime DESC",
Roles); RolesSelected);
break; break;
default: default:
Lay_ShowErrorAndExit ("You don't have permission to list requesters."); Lay_ShowErrorAndExit ("You don't have permission to list requesters.");
@ -2328,7 +2331,7 @@ void Enr_ShowEnrollmentRequests (void)
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
Roles); RolesSelected);
break; break;
case Rol_DEG_ADM: case Rol_DEG_ADM:
sprintf (Query,"SELECT crs_usr_requests.ReqCod," sprintf (Query,"SELECT crs_usr_requests.ReqCod,"
@ -2347,7 +2350,7 @@ void Enr_ShowEnrollmentRequests (void)
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
Roles); RolesSelected);
break; break;
case Rol_CTR_ADM: case Rol_CTR_ADM:
sprintf (Query,"SELECT crs_usr_requests.ReqCod," sprintf (Query,"SELECT crs_usr_requests.ReqCod,"
@ -2366,7 +2369,7 @@ void Enr_ShowEnrollmentRequests (void)
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
Roles); RolesSelected);
break; break;
case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this institution case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this institution
case Rol_SYS_ADM: case Rol_SYS_ADM:
@ -2383,7 +2386,7 @@ void Enr_ShowEnrollmentRequests (void)
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
Roles); RolesSelected);
break; break;
default: default:
Lay_ShowErrorAndExit ("You don't have permission to list requesters."); Lay_ShowErrorAndExit ("You don't have permission to list requesters.");
@ -2409,7 +2412,7 @@ void Enr_ShowEnrollmentRequests (void)
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.CurrentCtr.Ctr.CtrCod, Gbl.CurrentCtr.Ctr.CtrCod,
Roles); RolesSelected);
break; break;
case Rol_DEG_ADM: case Rol_DEG_ADM:
sprintf (Query,"SELECT crs_usr_requests.ReqCod," sprintf (Query,"SELECT crs_usr_requests.ReqCod,"
@ -2427,7 +2430,7 @@ void Enr_ShowEnrollmentRequests (void)
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.CurrentCtr.Ctr.CtrCod, Gbl.CurrentCtr.Ctr.CtrCod,
Roles); RolesSelected);
break; break;
case Rol_CTR_ADM: // If I am logged as admin of this centre , I can view all the requesters from this centre case Rol_CTR_ADM: // If I am logged as admin of this centre , I can view all the requesters from this centre
case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this centre case Rol_INS_ADM: // If I am logged as admin of this institution, I can view all the requesters from this centre
@ -2444,7 +2447,7 @@ void Enr_ShowEnrollmentRequests (void)
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.CurrentCtr.Ctr.CtrCod, Gbl.CurrentCtr.Ctr.CtrCod,
Roles); RolesSelected);
break; break;
default: default:
Lay_ShowErrorAndExit ("You don't have permission to list requesters."); Lay_ShowErrorAndExit ("You don't have permission to list requesters.");
@ -2469,7 +2472,7 @@ void Enr_ShowEnrollmentRequests (void)
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.CurrentDeg.Deg.DegCod, Gbl.CurrentDeg.Deg.DegCod,
Roles); RolesSelected);
break; break;
case Rol_DEG_ADM: // If I am logged as admin of this degree , I can view all the requesters from this degree case Rol_DEG_ADM: // If I am logged as admin of this degree , I can view all the requesters from this degree
case Rol_CTR_ADM: // If I am logged as admin of this centre , I can view all the requesters from this degree case Rol_CTR_ADM: // If I am logged as admin of this centre , I can view all the requesters from this degree
@ -2486,7 +2489,7 @@ void Enr_ShowEnrollmentRequests (void)
" AND ((1<<crs_usr_requests.Role)&%u)<>0" " AND ((1<<crs_usr_requests.Role)&%u)<>0"
" ORDER BY crs_usr_requests.RequestTime DESC", " ORDER BY crs_usr_requests.RequestTime DESC",
Gbl.CurrentDeg.Deg.DegCod, Gbl.CurrentDeg.Deg.DegCod,
Roles); RolesSelected);
break; break;
default: default:
Lay_ShowErrorAndExit ("You don't have permission to list requesters."); Lay_ShowErrorAndExit ("You don't have permission to list requesters.");
@ -2507,7 +2510,8 @@ void Enr_ShowEnrollmentRequests (void)
" WHERE CrsCod='%ld'" " WHERE CrsCod='%ld'"
" AND ((1<<Role)&%u)<>0" " AND ((1<<Role)&%u)<>0"
" ORDER BY RequestTime DESC", " ORDER BY RequestTime DESC",
Gbl.CurrentCrs.Crs.CrsCod,Roles); Gbl.CurrentCrs.Crs.CrsCod,
RolesSelected);
break; break;
default: default:
Lay_ShowErrorAndExit ("You don't have permission to list requesters."); Lay_ShowErrorAndExit ("You don't have permission to list requesters.");

View File

@ -619,12 +619,13 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
UniqueId,(long) TimeUTC); UniqueId,(long) TimeUTC);
/***** Write the content of the notice *****/ /***** Write the content of the notice *****/
fprintf (Gbl.F.Out,"<div class=\"%s\">%s",
TextClass[Status],Content);
if (TypeNoticesListing == Not_LIST_BRIEF_NOTICES) if (TypeNoticesListing == Not_LIST_BRIEF_NOTICES)
{ {
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\">"); fprintf (Gbl.F.Out,"<div class=\"NOTICE_TEXT_BRIEF\">%s</div>",
Content);
/* Form to view full notice */ /* Form to view full notice */
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\">");
Act_FormStart (ActShoNot); Act_FormStart (ActShoNot);
Not_PutHiddenParamNotCod (NotCod); Not_PutHiddenParamNotCod (NotCod);
Act_LinkFormSubmit (Txt_See_full_notice,The_ClassForm[Gbl.Prefs.Theme]); Act_LinkFormSubmit (Txt_See_full_notice,The_ClassForm[Gbl.Prefs.Theme]);
@ -638,7 +639,9 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
Act_FormEnd (); Act_FormEnd ();
fprintf (Gbl.F.Out,"</div>"); fprintf (Gbl.F.Out,"</div>");
} }
fprintf (Gbl.F.Out,"</div>"); else
fprintf (Gbl.F.Out,"<div class=\"%s\">%s</div>",
TextClass[Status],Content);
/***** Write the author *****/ /***** Write the author *****/
fprintf (Gbl.F.Out,"<div class=\"%s\">", fprintf (Gbl.F.Out,"<div class=\"%s\">",

View File

@ -348,22 +348,24 @@ void Rol_ChangeMyRole (void)
/********************* Write selector of users' roles ************************/ /********************* Write selector of users' roles ************************/
/*****************************************************************************/ /*****************************************************************************/
void Rol_WriteSelectorRoles (unsigned Roles) void Rol_WriteSelectorRoles (unsigned RolesAllowed,
unsigned RolesSelected)
{ {
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
Rol_Role_t Role; Rol_Role_t Role;
for (Role = Rol_STUDENT; for (Role = Rol_UNKNOWN;
Role <= Rol_TEACHER; Role <= Rol_SYS_ADM;
Role++) Role++)
{ if ((RolesAllowed & (1 << Role)))
fprintf (Gbl.F.Out,"<input type=\"checkbox\" name=\"Roles\" value=\"%u\"", {
(unsigned) Role); fprintf (Gbl.F.Out,"<input type=\"checkbox\" name=\"Roles\" value=\"%u\"",
if ((Roles & (1 << Role))) (unsigned) Role);
fprintf (Gbl.F.Out," checked=\"checked\""); if ((RolesSelected & (1 << Role)))
fprintf (Gbl.F.Out," />%s<br />", fprintf (Gbl.F.Out," checked=\"checked\"");
Txt_ROLES_PLURAL_abc[Role][Usr_SEX_UNKNOWN]); fprintf (Gbl.F.Out," />%s<br />",
} Txt_ROLES_PLURAL_abc[Role][Usr_SEX_UNKNOWN]);
}
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -78,7 +78,8 @@ unsigned Rol_ConvertUnsignedStrToRoles (const char *UnsignedStr);
void Rol_PutFormToChangeMyRole (bool FormInHead); void Rol_PutFormToChangeMyRole (bool FormInHead);
void Rol_ChangeMyRole (void); void Rol_ChangeMyRole (void);
void Rol_WriteSelectorRoles (unsigned Roles); void Rol_WriteSelectorRoles (unsigned RolesAllowed,
unsigned RolesSelected);
void Rol_GetSelectedRoles (unsigned *Roles); void Rol_GetSelectedRoles (unsigned *Roles);
Rol_Role_t Rol_GetRequestedRole (long UsrCod); Rol_Role_t Rol_GetRequestedRole (long UsrCod);

View File

@ -1572,7 +1572,9 @@ void Svy_RequestCreatOrEditSvy (void)
"<td class=\"DAT LEFT_MIDDLE\">", "<td class=\"DAT LEFT_MIDDLE\">",
The_ClassForm[Gbl.Prefs.Theme], The_ClassForm[Gbl.Prefs.Theme],
Txt_Users); Txt_Users);
Rol_WriteSelectorRoles (Svy.Roles); Rol_WriteSelectorRoles (1 << Rol_STUDENT |
1 << Rol_TEACHER,
Svy.Roles);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
"</tr>"); "</tr>");

View File

@ -294,9 +294,6 @@ static bool Tab_CheckIfICanViewTab (Act_Tab_t Tab)
Gbl.CurrentCrs.Crs.CrsCod <= 0); Gbl.CurrentCrs.Crs.CrsCod <= 0);
case TabCrs: case TabCrs:
return (Gbl.CurrentCrs.Crs.CrsCod > 0); return (Gbl.CurrentCrs.Crs.CrsCod > 0);
case TabMsg: // TODO: Show this tab in any case when Announcements will be available for all
return (Gbl.Usrs.Me.Logged ||
Gbl.CurrentCrs.Crs.CrsCod > 0);
default: default:
return true; return true;
} }

View File

@ -2002,27 +2002,6 @@ const char *Txt_All =
"Tudo"; "Tudo";
#endif #endif
const char *Txt_All_announcements =
#if L==0
"Tots els anuncis";
#elif L==1
"Alle Bekanntmachungen";
#elif L==2
"All announcements";
#elif L==3
"Todos los anuncios";
#elif L==4
"Tous les annonces";
#elif L==5
"Todos los anuncios"; // Okoteve traducción
#elif L==6
"Tutti i annunci";
#elif L==7
"Wszystkie og&lstrok;oszenia";
#elif L==8
"Todos os an&uacute;ncios";
#endif
const char *Txt_all_degrees = const char *Txt_all_degrees =
#if L==0 #if L==0
"Totes les titulacions"; "Totes les titulacions";
@ -2338,6 +2317,27 @@ const char *Txt_and_X_other_recipients = // Warning: it is very important to inc
"...e %u outros destinat&aacute;rios"; "...e %u outros destinat&aacute;rios";
#endif #endif
const char *Txt_Announcements =
#if L==0
"Anuncis";
#elif L==1
"Bekanntmachungen";
#elif L==2
"Announcements";
#elif L==3
"Anuncios";
#elif L==4
"Annonces";
#elif L==5
"Anuncios"; // Okoteve traducción
#elif L==6
"Annunci";
#elif L==7
"Og&lstrok;oszenia";
#elif L==8
"An&uacute;ncios";
#endif
const char *Txt_Announcement_of_exam_removed = const char *Txt_Announcement_of_exam_removed =
#if L==0 #if L==0
"Convocatoria d'examen eliminada."; "Convocatoria d'examen eliminada.";