Version 14.88

This commit is contained in:
Antonio Cañas Vargas 2015-03-12 14:45:40 +01:00
parent afcc374ecd
commit 565fd7f1f8
14 changed files with 332 additions and 245 deletions

View File

@ -301,7 +301,6 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;}
.TIT_TBL_10
{
margin:0 10px 10px 10px;
font-family:Arial, "Nimbus Sans L", "DejaVu LGC Sans", "Bitstream Vera Sans", sans-serif;
color:#808080;
font-size:16pt;
font-weight:bold;
@ -819,6 +818,14 @@ a:hover img.CENTRE_PHOTO_SHOW
.CONV {font-family:Garamond, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#404040; font-size:11pt;}
.CONV_IMPR {font-family:Garamond, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#202020; font-size:11pt;}
/***************************** Public user's profile *************************/
.RANK
{
color:#808080;
font-size:16pt;
font-weight:bold;
}
.CON {color:#B8D070; font-size:9pt; line-height:110%; white-space:nowrap;}
.CON_CRS {color:#398000; font-size:9pt; line-height:110%; white-space:nowrap;}

View File

@ -265,7 +265,6 @@ p {margin:0;}
.TIT_TBL_10
{
margin:0 10px 10px 10px;
font-family:Arial, "Nimbus Sans L", "DejaVu LGC Sans", "Bitstream Vera Sans", sans-serif;
color:#808080;
font-size:20pt;
font-weight:bold;
@ -632,5 +631,13 @@ a:hover img.CENTRE_PHOTO_SHOW
.CONV {font-Family:Garamond, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#404040; font-size:11pt;}
.CONV_IMPR {font-Family:Garamond, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#202020; font-size:11pt;}
/***************************** Public user's profile *************************/
.RANK
{
color:#808080;
font-size:20pt;
font-weight:bold;
}
.CON {color:#B8D070; font-size:9pt; line-height:110%; white-space:nowrap;}
.CON_CRS {color:#398000; font-size:9pt; line-height:110%; white-space:nowrap;}

View File

@ -1894,7 +1894,7 @@ static void Att_ListAttOnlyMeAsStudent (struct AttendanceEvent *Att)
{
extern const char *Txt_Student_comment;
extern const char *Txt_Teachers_comment;
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Save;
/***** Get my preference about photos in users' list for current course *****/
@ -1927,7 +1927,7 @@ static void Att_ListAttOnlyMeAsStudent (struct AttendanceEvent *Att)
"%s"
"</th>"
"</tr>",
Txt_ROLES_SINGULAR_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
Txt_Student_comment,
Txt_Teachers_comment);
@ -1954,7 +1954,7 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att)
{
extern const char *Txt_Student_comment;
extern const char *Txt_Teachers_comment;
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Save;
unsigned NumStd;
struct UsrData UsrDat;
@ -1998,7 +1998,7 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att)
"%s"
"</th>"
"</tr>",
Txt_ROLES_SINGULAR_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
Txt_Student_comment,
Txt_Teachers_comment);
@ -3143,7 +3143,7 @@ static void Att_ListStdsAttendanceTable (unsigned NumStdsInList,long *LstSelecte
static void Att_WriteTableHeadSeveralAttEvents (void)
{
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Attendance;
unsigned NumAttEvent;
@ -3154,7 +3154,7 @@ static void Att_WriteTableHeadSeveralAttEvents (void)
"</th>",
Gbl.Usrs.Listing.WithPhotos ? 4 :
3,
Txt_ROLES_SINGULAR_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
for (NumAttEvent = 0;
NumAttEvent < Gbl.AttEvents.Num;

View File

@ -103,11 +103,12 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 14.87.4 (2015/03/11)"
#define Log_PLATFORM_VERSION "SWAD 14.88 (2015/03/12)"
// 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 14.88: Mar 12, 2015 Changes in layout of public user profile. (181718 lines)
Version 14.87.4: Mar 11, 2015 Added indexes to usr_figures. (181629 lines)
2 changes necessary in database:
CREATE INDEX FirstClickTime ON usr_figures (FirstClickTime);

View File

@ -155,7 +155,7 @@ void Con_GetAndShowLastClicks (void)
extern const char *Txt_Role;
extern const char *Txt_Degree;
extern const char *Txt_Action;
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
char Query[1024];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -248,7 +248,7 @@ void Con_GetAndShowLastClicks (void)
"</tr>",
ClassRow,row[0],
ClassRow,row[2],
ClassRow,Txt_ROLES_SINGULAR_Abc[Rol_ConvertUnsignedStrToRole (row[3])][Usr_SEX_UNKNOWN],
ClassRow,Txt_ROLES_SINGUL_Abc[Rol_ConvertUnsignedStrToRole (row[3])][Usr_SEX_UNKNOWN],
ClassRow,Deg.ShortName,
ClassRow,row[5]);
}
@ -268,7 +268,7 @@ void Con_ShowGlobalConnectedUsrs (void)
extern const char *Txt_sessions;
extern const char *Txt_user[Usr_NUM_SEXS];
extern const char *Txt_users;
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
unsigned StdsTotal = Con_GetConnectedStdsTotal ();
unsigned TchsTotal = Con_GetConnectedTchsTotal ();
@ -312,7 +312,7 @@ void Con_ShowGlobalConnectedUsrs (void)
"</td>"
"</tr>",
StdsTotal,
(StdsTotal == 1) ? Txt_ROLES_SINGULAR_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN] :
(StdsTotal == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN] :
Txt_ROLES_PLURAL_abc [Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
/***** Write total number of teachers *****/
@ -323,7 +323,7 @@ void Con_ShowGlobalConnectedUsrs (void)
"</td>"
"</tr>",
TchsTotal,
(TchsTotal == 1) ? Txt_ROLES_SINGULAR_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN] :
(TchsTotal == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN] :
Txt_ROLES_PLURAL_abc [Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN]);
/***** Write total number of users who do not belong to any course *****/
@ -335,7 +335,7 @@ void Con_ShowGlobalConnectedUsrs (void)
"</td>"
"</tr>",
WithoutCoursesTotal,
(WithoutCoursesTotal == 1) ? Txt_ROLES_SINGULAR_abc[Rol_ROLE_GUEST__][Usr_SEX_UNKNOWN] :
(WithoutCoursesTotal == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_GUEST__][Usr_SEX_UNKNOWN] :
Txt_ROLES_PLURAL_abc [Rol_ROLE_GUEST__][Usr_SEX_UNKNOWN]);
/***** End table *****/
@ -499,7 +499,7 @@ static void Con_ComputeConnectedUsrsOfTypeBelongingToCurrentCrs (Rol_Role_t Role
static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnMainZone (Rol_Role_t Role)
{
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
unsigned NumUsrsThisRole;
Usr_Sex_t UsrSex;
@ -513,7 +513,7 @@ static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnMainZone (
"</td>"
"</tr>",
NumUsrsThisRole,
(NumUsrsThisRole == 1) ? Txt_ROLES_SINGULAR_abc[Role][UsrSex] :
(NumUsrsThisRole == 1) ? Txt_ROLES_SINGUL_abc[Role][UsrSex] :
Txt_ROLES_PLURAL_abc [Role][UsrSex]);
/***** List connected users belonging to this location *****/
@ -559,7 +559,7 @@ static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnMainZone (
static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnRightColumn (Rol_Role_t Role)
{
extern const char *The_ClassConnected[The_NUM_THEMES];
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Connected_users;
unsigned NumUsrsThisRole;
@ -590,7 +590,7 @@ static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnRightColum
"</td>"
"</tr>",
NumUsrsThisRole,
(NumUsrsThisRole == 1) ? Txt_ROLES_SINGULAR_abc[Role][UsrSex] :
(NumUsrsThisRole == 1) ? Txt_ROLES_SINGUL_abc[Role][UsrSex] :
Txt_ROLES_PLURAL_abc [Role][UsrSex]);
/***** List connected users belonging to this location *****/

View File

@ -150,7 +150,7 @@ void Enr_ModifyRoleInCurrentCrs (struct UsrData *UsrDat,
Cns_QuietOrVerbose_t QuietOrVerbose)
{
extern const char *Txt_The_role_of_THE_USER_X_in_the_course_Y_has_changed_from_A_to_B;
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
char Query[256];
Rol_Role_t OldRole;
@ -174,8 +174,8 @@ void Enr_ModifyRoleInCurrentCrs (struct UsrData *UsrDat,
{
sprintf (Gbl.Message,Txt_The_role_of_THE_USER_X_in_the_course_Y_has_changed_from_A_to_B,
UsrDat->FullName,Gbl.CurrentCrs.Crs.FullName,
Txt_ROLES_SINGULAR_abc[OldRole][UsrDat->Sex],
Txt_ROLES_SINGULAR_abc[NewRole][UsrDat->Sex]);
Txt_ROLES_SINGUL_abc[OldRole][UsrDat->Sex],
Txt_ROLES_SINGUL_abc[NewRole][UsrDat->Sex]);
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
}
@ -318,7 +318,7 @@ void Enr_GetNotifEnrollment (char *SummaryStr,
long CrsCod,long UsrCod,
unsigned MaxChars)
{
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
char Query[256];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -351,7 +351,7 @@ void Enr_GetNotifEnrollment (char *SummaryStr,
/* Role (row[0]) */
Role = Rol_ConvertUnsignedStrToRole (row[0]);
strcpy (SummaryStr,Txt_ROLES_SINGULAR_Abc[Role][UsrDat.Sex]);
strcpy (SummaryStr,Txt_ROLES_SINGUL_Abc[Role][UsrDat.Sex]);
if (MaxChars)
Str_LimitLengthHTMLStr (SummaryStr,MaxChars);
@ -1825,13 +1825,13 @@ unsigned Enr_RemAllStdsInCrs (struct Course *Crs)
void Enr_ReqSignUpInCrs (void)
{
extern const char *Txt_You_were_already_enrolled_as_X_in_the_course_Y;
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
/***** Check if I already belong to course *****/
if (Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB >= Rol_ROLE_STUDENT)
{
sprintf (Gbl.Message,Txt_You_were_already_enrolled_as_X_in_the_course_Y,
Txt_ROLES_SINGULAR_abc[Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Me.UsrDat.Sex],
Txt_ROLES_SINGUL_abc[Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Me.UsrDat.Sex],
Gbl.CurrentCrs.Crs.FullName);
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
}
@ -1850,7 +1850,7 @@ void Enr_ReqSignUpInCrs (void)
void Enr_SignUpInCrs (void)
{
extern const char *Txt_You_were_already_enrolled_as_X_in_the_course_Y;
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Your_request_for_enrollment_as_X_in_the_course_Y_has_been_accepted_for_processing;
char Query[512];
MYSQL_RES *mysql_res;
@ -1864,7 +1864,7 @@ void Enr_SignUpInCrs (void)
if (Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB >= Rol_ROLE_STUDENT)
{
sprintf (Gbl.Message,Txt_You_were_already_enrolled_as_X_in_the_course_Y,
Txt_ROLES_SINGULAR_abc[Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Me.UsrDat.Sex],
Txt_ROLES_SINGUL_abc[Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Me.UsrDat.Sex],
Gbl.CurrentCrs.Crs.FullName);
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
}
@ -1916,7 +1916,7 @@ void Enr_SignUpInCrs (void)
/***** Show confirmation message *****/
sprintf (Gbl.Message,Txt_Your_request_for_enrollment_as_X_in_the_course_Y_has_been_accepted_for_processing,
Txt_ROLES_SINGULAR_abc[RoleFromForm][Gbl.Usrs.Me.UsrDat.Sex],
Txt_ROLES_SINGUL_abc[RoleFromForm][Gbl.Usrs.Me.UsrDat.Sex],
Gbl.CurrentCrs.Crs.FullName);
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
@ -1939,7 +1939,7 @@ void Enr_SignUpInCrs (void)
void Enr_GetNotifEnrollmentRequest (char *SummaryStr,char **ContentStr,
long ReqCod,unsigned MaxChars,bool GetContent)
{
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
char Query[256];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -1973,7 +1973,7 @@ void Enr_GetNotifEnrollmentRequest (char *SummaryStr,char **ContentStr,
/* Role (row[1]) */
DesiredRole = Rol_ConvertUnsignedStrToRole (row[1]);
strcpy (SummaryStr,Txt_ROLES_SINGULAR_Abc[DesiredRole][UsrDat.Sex]);
strcpy (SummaryStr,Txt_ROLES_SINGUL_Abc[DesiredRole][UsrDat.Sex]);
if (MaxChars)
Str_LimitLengthHTMLStr (SummaryStr,MaxChars);
@ -2003,7 +2003,7 @@ void Enr_AskIfRejectSignUp (void)
{
extern const char *Txt_THE_USER_X_is_already_enrolled_in_the_course_Y;
extern const char *Txt_Do_you_really_want_to_reject_the_enrollment_request_;
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Reject;
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
@ -2034,7 +2034,7 @@ void Enr_AskIfRejectSignUp (void)
/* Ask if reject */
sprintf (Gbl.Message,Txt_Do_you_really_want_to_reject_the_enrollment_request_,
Gbl.Usrs.Other.UsrDat.FullName,
Txt_ROLES_SINGULAR_abc[Role][Gbl.Usrs.Other.UsrDat.Sex],
Txt_ROLES_SINGUL_abc[Role][Gbl.Usrs.Other.UsrDat.Sex],
Gbl.CurrentCrs.Crs.FullName);
Lay_ShowAlert (Lay_INFO,Gbl.Message);
Rec_ShowCommonRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
@ -2109,7 +2109,7 @@ void Enr_ShowEnrollmentRequests (void)
extern const char *Txt_Role;
extern const char *Txt_Date;
extern const char *Txt_Go_to_X;
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Register;
extern const char *Txt_Reject;
extern const char *Txt_No_enrollment_requests;
@ -2494,7 +2494,7 @@ void Enr_ShowEnrollmentRequests (void)
" vertical-align:top;\">"
"%s"
"</td>",
Txt_ROLES_SINGULAR_abc[DesiredRole][UsrDat.Sex]);
Txt_ROLES_SINGUL_abc[DesiredRole][UsrDat.Sex]);
/***** Request time (row[4]) *****/
Msg_WriteMsgDate (row[4],"DAT");

View File

@ -8699,7 +8699,7 @@ void Brw_ShowFileMetadata (void)
extern const char *Txt_Filename;
extern const char *Txt_File_size;
extern const char *Txt_Uploaded_by;
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Date_of_creation;
extern const char *Txt_Availability;
extern const char *Txt_Private_available_to_certain_users_identified;
@ -8910,7 +8910,7 @@ void Brw_ShowFileMetadata (void)
}
else
/* Unknown publisher */
fprintf (Gbl.F.Out,"%s",Txt_ROLES_SINGULAR_Abc[Rol_ROLE_UNKNOWN][Usr_SEX_UNKNOWN]);
fprintf (Gbl.F.Out,"%s",Txt_ROLES_SINGUL_Abc[Rol_ROLE_UNKNOWN][Usr_SEX_UNKNOWN]);
fprintf (Gbl.F.Out,"</td>"
"</tr>");

View File

@ -2996,7 +2996,7 @@ static void Msg_WriteMsgFrom (struct UsrData *UsrDat,bool Deleted)
{
extern const char *Txt_MSG_Sent;
extern const char *Txt_MSG_Sent_and_deleted;
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
bool ShowPhoto;
char PhotoURL[PATH_MAX+1];
@ -3040,7 +3040,7 @@ static void Msg_WriteMsgFrom (struct UsrData *UsrDat,bool Deleted)
}
else
fprintf (Gbl.F.Out,"[%s]",
Txt_ROLES_SINGULAR_abc[Rol_ROLE_UNKNOWN][Usr_SEX_UNKNOWN]); // User not found, likely an old user who has been removed
Txt_ROLES_SINGUL_abc[Rol_ROLE_UNKNOWN][Usr_SEX_UNKNOWN]); // User not found, likely an old user who has been removed
fprintf (Gbl.F.Out,"</td>"
"</tr>"
"</table>");

View File

@ -2021,7 +2021,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
extern const char *Txt_Sex;
extern const char *Txt_Role;
extern const char *Txt_SEX_SINGULAR_Abc[Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Surname_1;
extern const char *Txt_Surname_2;
extern const char *Txt_First_name;
@ -2090,7 +2090,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
TypeOfView == Rec_RECORD_PRINT) &&
IAmTeacher && Gbl.Usrs.Listing.RecsUsrs == Rec_RECORD_USERS_STUDENTS))));
bool ShowData = ItsMe || UsrDat->Accepted || IAmDegAdmin || IAmSuperuser;
bool ShowMailIDRoleRows = (TypeOfView != Rec_RECORD_PUBLIC);
bool ShowIDRows = (TypeOfView != Rec_RECORD_PUBLIC);
bool ShowAddressRows = (TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
TypeOfView == Rec_MY_COMMON_RECORD_CHECK ||
TypeOfView == Rec_FORM_MY_COURSE_RECORD ||
@ -2387,7 +2387,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
fprintf (Gbl.F.Out,"</td>"
"</tr>");
if (ShowMailIDRoleRows)
if (ShowIDRows)
{
/***** User's e-mail *****/
fprintf (Gbl.F.Out,"<tr>"
@ -2455,7 +2455,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
if (Role == DefaultRoleInCurrentCrs)
fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%s</option>",
Txt_ROLES_SINGULAR_Abc[Role][UsrDat->Sex]);
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]);
}
fprintf (Gbl.F.Out,"</select>");
break;
@ -2494,7 +2494,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
case Rol_ROLE_STUDENT:
fprintf (Gbl.F.Out,"<option value=\"%u\" selected=\"selected\" disabled=\"disabled\">%s</option>",
(unsigned) Gbl.Usrs.Me.LoggedRole,
Txt_ROLES_SINGULAR_Abc[Gbl.Usrs.Me.LoggedRole][UsrDat->Sex]);
Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Me.LoggedRole][UsrDat->Sex]);
break;
case Rol_ROLE_TEACHER:
for (Role = Rol_ROLE_STUDENT;
@ -2507,7 +2507,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
if (Role == DefaultRoleInCurrentCrs)
fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%s</option>",
Txt_ROLES_SINGULAR_Abc[Role][UsrDat->Sex]);
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]);
}
break;
case Rol_ROLE_DEG_ADM:
@ -2520,7 +2520,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
if (Role == DefaultRoleInCurrentCrs)
fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%s</option>",
Txt_ROLES_SINGULAR_Abc[Role][UsrDat->Sex]);
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]);
}
break;
default: // The rest of users can not register other users
@ -2534,14 +2534,14 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
{
case Rol_ROLE_TEACHER: // A teacher only can create students
fprintf (Gbl.F.Out,"<option value=\"%u\" selected=\"selected\">%s</option>",
(unsigned) Rol_ROLE_STUDENT,Txt_ROLES_SINGULAR_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
(unsigned) Rol_ROLE_STUDENT,Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
break;
case Rol_ROLE_DEG_ADM: // An administrator or a superuser can create students and teachers
case Rol_ROLE_SYS_ADM:
fprintf (Gbl.F.Out,"<option value=\"%u\" selected=\"selected\">%s</option>"
"<option value=\"%u\">%s</option>",
(unsigned) Rol_ROLE_STUDENT,Txt_ROLES_SINGULAR_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
(unsigned) Rol_ROLE_TEACHER,Txt_ROLES_SINGULAR_Abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN]);
(unsigned) Rol_ROLE_STUDENT,Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
(unsigned) Rol_ROLE_TEACHER,Txt_ROLES_SINGUL_Abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN]);
break;
default: // The rest of users can not register other users
break;
@ -2569,70 +2569,70 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
Txt_Role,
ClassData,Col2Width,
TypeOfView == Rec_MY_COMMON_RECORD_CHECK ? Txt_SEX_SINGULAR_Abc[UsrDat->Sex] :
Txt_ROLES_SINGULAR_Abc[UsrDat->RoleInCurrentCrsDB][UsrDat->Sex]);
Txt_ROLES_SINGUL_Abc[UsrDat->RoleInCurrentCrsDB][UsrDat->Sex]);
/***** Name *****/
/* Surname 1 */
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
"%s",
ClassForm,Col1Width,Txt_Surname_1);
if (TypeOfView == Rec_FORM_MY_COMMON_RECORD)
fprintf (Gbl.F.Out,"*");
fprintf (Gbl.F.Out,":</td>"
"<td colspan=\"2\" class=\"%s\""
" style=\"width:%upx; text-align:left;\">",
ClassData,Cols2and3Width);
if (DataForm)
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Surname1\""
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->Surname1);
else if (UsrDat->Surname1[0])
fprintf (Gbl.F.Out,"<strong>%s</strong>",UsrDat->Surname1);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
/* Surname 2 */
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
"%s:"
"</td>"
"<td colspan=\"2\" class=\"%s\""
" style=\"width:%upx; text-align:left;\">",
ClassForm,Col1Width,
Txt_Surname_2,
ClassData,Cols2and3Width);
if (DataForm)
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Surname2\""
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->Surname2);
else if (UsrDat->Surname2[0])
fprintf (Gbl.F.Out,"<strong>%s</strong>",
UsrDat->Surname2);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
/* First name */
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
"%s",
ClassForm,Col1Width,Txt_First_name);
if (TypeOfView == Rec_FORM_MY_COMMON_RECORD)
fprintf (Gbl.F.Out,"*");
fprintf (Gbl.F.Out,":</td>"
"<td class=\"%s\" colspan=\"2\""
" style=\"width:%upx; text-align:left;\">",
ClassData,Cols2and3Width);
if (DataForm)
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"FirstName\""
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->FirstName);
else if (UsrDat->FirstName[0])
fprintf (Gbl.F.Out,"<strong>%s</strong>",UsrDat->FirstName);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
}
/***** Name *****/
/* Surname 1 */
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
"%s",
ClassForm,Col1Width,Txt_Surname_1);
if (TypeOfView == Rec_FORM_MY_COMMON_RECORD)
fprintf (Gbl.F.Out,"*");
fprintf (Gbl.F.Out,":</td>"
"<td colspan=\"2\" class=\"%s\""
" style=\"width:%upx; text-align:left;\">",
ClassData,Cols2and3Width);
if (DataForm)
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Surname1\""
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->Surname1);
else if (UsrDat->Surname1[0])
fprintf (Gbl.F.Out,"<strong>%s</strong>",UsrDat->Surname1);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
/* Surname 2 */
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
"%s:"
"</td>"
"<td colspan=\"2\" class=\"%s\""
" style=\"width:%upx; text-align:left;\">",
ClassForm,Col1Width,
Txt_Surname_2,
ClassData,Cols2and3Width);
if (DataForm)
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Surname2\""
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->Surname2);
else if (UsrDat->Surname2[0])
fprintf (Gbl.F.Out,"<strong>%s</strong>",
UsrDat->Surname2);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
/* First name */
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
"%s",
ClassForm,Col1Width,Txt_First_name);
if (TypeOfView == Rec_FORM_MY_COMMON_RECORD)
fprintf (Gbl.F.Out,"*");
fprintf (Gbl.F.Out,":</td>"
"<td class=\"%s\" colspan=\"2\""
" style=\"width:%upx; text-align:left;\">",
ClassData,Cols2and3Width);
if (DataForm)
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"FirstName\""
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->FirstName);
else if (UsrDat->FirstName[0])
fprintf (Gbl.F.Out,"<strong>%s</strong>",UsrDat->FirstName);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
/* Country */
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""

View File

@ -287,7 +287,7 @@ unsigned Rol_ConvertUnsignedStrToRoles (const char *UnsignedStr)
void Rol_PutFormToChangeMyRole (bool FormInHead)
{
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
static const unsigned SelectorWidth[Lay_NUM_LAYOUTS] =
{
90, // Lay_LAYOUT_DESKTOP
@ -310,7 +310,7 @@ void Rol_PutFormToChangeMyRole (bool FormInHead)
if (Role == Gbl.Usrs.Me.LoggedRole)
fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%s</option>",
Txt_ROLES_SINGULAR_Abc[Role][Gbl.Usrs.Me.UsrDat.Sex]);
Txt_ROLES_SINGUL_Abc[Role][Gbl.Usrs.Me.UsrDat.Sex]);
}
fprintf (Gbl.F.Out,"</select>"
"</form>");
@ -414,7 +414,7 @@ void Rol_PutAllRolesRegRemUsrsCrs (void)
static void Rol_PutOneRoleRegRemUsrsCrs (Rol_Role_t Role,bool Checked)
{
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
fprintf (Gbl.F.Out,"<li>"
"<input type=\"radio\" name=\"RegRemRole\" value=\"%u\"",
@ -431,7 +431,7 @@ static void Rol_PutOneRoleRegRemUsrsCrs (Rol_Role_t Role,bool Checked)
break;
}
fprintf (Gbl.F.Out," />%s</li>",
Txt_ROLES_SINGULAR_Abc[Role][Usr_SEX_UNKNOWN]);
Txt_ROLES_SINGUL_Abc[Role][Usr_SEX_UNKNOWN]);
}
/*****************************************************************************/

View File

@ -1452,7 +1452,7 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
extern const char *Txt_Date;
extern const char *Txt_Action;
extern const char *Txt_LOG_More_info;
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
unsigned long NumRow;
unsigned long FirstRow; // First row to show
unsigned long LastRow; // Last rows to show
@ -1656,7 +1656,7 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
"%s&nbsp;"
"</td>",
Gbl.ColorRows[Gbl.RowEvenOdd],
RoleFromLog < Rol_NUM_ROLES ? Txt_ROLES_SINGULAR_Abc[RoleFromLog][UsrDat.Sex] :
RoleFromLog < Rol_NUM_ROLES ? Txt_ROLES_SINGUL_Abc[RoleFromLog][UsrDat.Sex] :
"?");
/* Write the date (in row[3] is the date in YYYYMMDDHHMMSS format) */
@ -1734,7 +1734,7 @@ static void Sta_ShowNumAccessesPerUsr (unsigned long NumRows,MYSQL_RES *mysql_re
extern const char *Txt_Name;
extern const char *Txt_Type;
extern const char *Txt_STAT_TYPE_COUNT_CAPS[Sta_NUM_STAT_COUNT_TYPES];
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
MYSQL_ROW row;
unsigned long NumRow;
float NumPagesGenerated,MaxPagesGenerated = 0.0;
@ -1829,7 +1829,7 @@ static void Sta_ShowNumAccessesPerUsr (unsigned long NumRows,MYSQL_RES *mysql_re
"%s&nbsp;"
"</td>",
Gbl.ColorRows[Gbl.RowEvenOdd],
Txt_ROLES_SINGULAR_Abc[UsrDat.RoleInCurrentCrsDB][UsrDat.Sex]);
Txt_ROLES_SINGUL_Abc[UsrDat.RoleInCurrentCrsDB][UsrDat.Sex]);
/* Write the number of clicks */
NumPagesGenerated = Str_GetFloatNumFromStr (row[1]);

View File

@ -6551,7 +6551,7 @@ static long Tst_GetParamTstCod (void)
void Tst_ShowOneTestExam (void)
{
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Date;
extern const char *Txt_Questions;
extern const char *Txt_non_blank_QUESTIONS;
@ -6615,7 +6615,7 @@ void Tst_ShowOneTestExam (void)
"</td>"
"<td class=\"DAT\" style=\"text-align:left;"
" vertical-align:top;\">",
Txt_ROLES_SINGULAR_Abc[Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Other.UsrDat.Sex]);
Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Other.UsrDat.Sex]);
ID_WriteUsrIDs (&Gbl.Usrs.Other.UsrDat,true);
fprintf (Gbl.F.Out," %s",
Gbl.Usrs.Other.UsrDat.Surname1);

View File

@ -5589,7 +5589,7 @@ const char *Txt_courses =
#elif L==8
"disciplinas";
#endif
/*
const char *Txt_Courses_as_a_ROLE = // Warning: it is very important to include %s in the following sentences
#if L==0
"Assignatures com %s";
@ -5610,7 +5610,7 @@ const char *Txt_Courses_as_a_ROLE = // Warning: it is very important to include
#elif L==8
"Disciplinas como %s";
#endif
*/
const char *Txt_X_courses_have_been_eliminated = // Warning: it is very important to include %u in the following sentences
#if L==0
"Se ha(n) eliminado %u asignatura(s)."; // Necessita traduccio
@ -10892,7 +10892,7 @@ const char *Txt_Field_BR_name =
#elif L==8
"Nome<br />do campo";
#endif
/*
const char *Txt_Figures =
#if L==0
"Xifres";
@ -10913,7 +10913,7 @@ const char *Txt_Figures =
#elif L==8
"N&uacute;meros";
#endif
*/
const char *Txt_File =
#if L==0
"Fitxer";
@ -11546,7 +11546,7 @@ const char *Txt_Files_works =
#elif L==8
"Arquivos trabalhos";
#endif
/*
const char *Txt_First_access =
#if L==0
"Primer acc&eacute;s";
@ -11567,7 +11567,7 @@ const char *Txt_First_access =
#elif L==8
"Primeiro acesso";
#endif
*/
const char *Txt_first_message_not_allowed =
#if L==0
"primer mensaje no permitido"; // Necessita traduccio
@ -12180,6 +12180,27 @@ const char *Txt_from_A_COURSE =
"de";
#endif
const char *Txt_From_TIME =
#if L==0
"Des de";
#elif L==1
"Vom";
#elif L==2
"From";
#elif L==3
"Desde";
#elif L==4
"Depuis";
#elif L==5
"Desde"; // Okoteve traducción
#elif L==6
"Da";
#elif L==7
"Od";
#elif L==8
"Desde";
#endif
const char *Txt_From_now_on_the_number_of_editing_lines_of_the_field_X_is_Y = // Warning: it is very important to include %s and %u (in this order) in the following sentences
#if L==0
"A partir de ahora el n&ordm; de l&iacute;neas de edici&oacute;n del campo <strong>%s</strong> es <strong>%u</strong>."; // Necessita traduccio
@ -27154,25 +27175,25 @@ const char *Txt_posts =
"posts";
#endif
const char *Txt_public_files =
const char *Txt_public_FILES =
#if L==0
"arxius p&uacute;blics";
"p&uacute;blics";
#elif L==1
"&ouml;ffentliche Dateien";
"&ouml;ffentliche";
#elif L==2
"public files";
"public";
#elif L==3
"archivos p&uacute;blicos";
"p&uacute;blicos";
#elif L==4
"fichiers publics";
"publics";
#elif L==5
"archivos p&uacute;blicos"; // Okoteve traducción
"p&uacute;blicos"; // Okoteve traducción
#elif L==6
"file pubblici";
"pubblici";
#elif L==7
"publicznych pliki";
"publicznych";
#elif L==8
"arquivos p&uacute;blicos";
"p&uacute;blicos";
#endif
const char *Txt_Public_open_educational_resource_OER_for_everyone =
@ -29678,7 +29699,7 @@ const char *Txt_ROLE_STATS[Sta_NUM_ROLES_STAT] =
#endif
};
const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
{
{
#if L==0 // Rol_ROLE_UNKNOWN - Usr_SEX_UNKNOWN
@ -30410,7 +30431,7 @@ const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#endif
} };
const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
{
{
#if L==0 // Rol_ROLE_UNKNOWN - Usr_SEX_UNKNOWN

View File

@ -120,7 +120,7 @@ static void Usr_GetUsrCommentsFromString (char *Str,struct UsrData *UsrDat);
static Usr_Sex_t Usr_GetSexFromStr (const char *Str);
static unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role);
static unsigned Usr_GetNumUsrsOtherRoleInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,Rol_Role_t OthersRole);
static unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,Rol_Role_t OthersRole);
static bool Usr_CheckIfMyBirthdayHasNotBeenCongratulated (void);
static void Usr_InsertMyBirthday (void);
@ -767,10 +767,10 @@ static unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role)
}
/*****************************************************************************/
/********* Get number of students in courses of a user as teacher ************/
/******* Get number of users with different role in courses of a user ********/
/*****************************************************************************/
static unsigned Usr_GetNumUsrsOtherRoleInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,Rol_Role_t OthersRole)
static unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,Rol_Role_t OthersRole)
{
char Query[256];
@ -780,7 +780,7 @@ static unsigned Usr_GetNumUsrsOtherRoleInCrssOfAUsr (long UsrCod,Rol_Role_t UsrR
" (SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld' AND Role='%u')"
" AND Role='%u'",
UsrCod,(unsigned) UsrRole,(unsigned) OthersRole);
return (unsigned) DB_QueryCOUNT (Query,"can not get the number of courses of a user with a role");
return (unsigned) DB_QueryCOUNT (Query,"can not get the number of users");
}
/*****************************************************************************/
@ -1539,7 +1539,7 @@ void Usr_WriteLoggedUsrHead (void)
{
extern const char *The_ClassUsr[The_NUM_THEMES];
extern const char *The_ClassHead[The_NUM_THEMES];
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
static const unsigned NumCharsName[Lay_NUM_LAYOUTS] =
{
16, // Lay_LAYOUT_DESKTOP
@ -1553,7 +1553,7 @@ void Usr_WriteLoggedUsrHead (void)
if (Rol_GetNumAvailableRoles () == 1)
fprintf (Gbl.F.Out,"<span class=\"%s\">%s:&nbsp;</span>",
The_ClassUsr[Gbl.Prefs.Theme],
Txt_ROLES_SINGULAR_Abc[Gbl.Usrs.Me.LoggedRole][Gbl.Usrs.Me.UsrDat.Sex]);
Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Me.LoggedRole][Gbl.Usrs.Me.UsrDat.Sex]);
else
{
Rol_PutFormToChangeMyRole (true);
@ -2445,7 +2445,7 @@ void Usr_ShowFormsRoleAndLogout (void)
extern const char *Txt_Log_out;
extern const char *Txt_You_are_LOGGED_as_X;
extern const char *Txt_logged[Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Role;
/***** Link to log out *****/
@ -2459,7 +2459,7 @@ void Usr_ShowFormsRoleAndLogout (void)
/***** Write message with my new logged role *****/
sprintf (Gbl.Message,Txt_You_are_LOGGED_as_X,
Txt_logged[Gbl.Usrs.Me.UsrDat.Sex],
Txt_ROLES_SINGULAR_abc[Gbl.Usrs.Me.LoggedRole][Gbl.Usrs.Me.UsrDat.Sex]);
Txt_ROLES_SINGUL_abc[Gbl.Usrs.Me.LoggedRole][Gbl.Usrs.Me.UsrDat.Sex]);
Lay_ShowAlert (Lay_INFO,Gbl.Message);
/***** Put a form to change my role *****/
@ -4865,7 +4865,7 @@ void Usr_ListUsersToSelect (Rol_Role_t Role)
void Usr_PutCheckboxToSelectAllTheUsers (Rol_Role_t Role)
{
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
struct ListUsers *LstUsrs;
Usr_Sex_t Sex;
@ -4887,7 +4887,7 @@ void Usr_PutCheckboxToSelectAllTheUsers (Rol_Role_t Role)
Sex = Usr_GetSexOfUsrsLst (LstUsrs);
fprintf (Gbl.F.Out,"%s:</td>"
"</tr>",
LstUsrs->NumUsrs == 1 ? Txt_ROLES_SINGULAR_Abc[Role][Sex] :
LstUsrs->NumUsrs == 1 ? Txt_ROLES_SINGUL_Abc[Role][Sex] :
Txt_ROLES_PLURAL_Abc [Role][Sex]);
}
@ -5726,7 +5726,7 @@ void Usr_ListAllDataTchs (void)
unsigned Usr_ListUsrsFound (Rol_Role_t Role,const char *UsrQuery)
{
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
struct ListUsers *LstUsrs;
Usr_Sex_t Sex;
@ -5758,7 +5758,7 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,const char *UsrQuery)
Usr_NUM_MAIN_FIELDS_DATA_USR);
if (NumUsrs == 1)
fprintf (Gbl.F.Out,"1 %s",
Txt_ROLES_SINGULAR_abc[Role][Sex]);
Txt_ROLES_SINGUL_abc[Role][Sex]);
else
fprintf (Gbl.F.Out,"%u %s",
NumUsrs,
@ -7527,15 +7527,24 @@ static void Usr_ShowUserProfile (void)
Gbl.Usrs.Other.UsrDat.Accepted = Usr_GetIfUserHasAcceptedEnrollmentInCurrentCrs (Gbl.Usrs.Other.UsrDat.UsrCod);
}
fprintf (Gbl.F.Out,"<div style=\"text-align:center;\">");
fprintf (Gbl.F.Out,"<div style=\"margin:0 auto;\">"
"<table style=\"margin:0 auto;\">"
"<tr>"
"<td style=\"text-align:right; vertical-align:top;\">");
/***** Common record *****/
Rec_ShowSharedUsrRecord (Rec_RECORD_PUBLIC,&Gbl.Usrs.Other.UsrDat);
fprintf (Gbl.F.Out,"</td>"
"<td style=\"text-align:left; vertical-align:top; padding-left:4px;\">");
/***** Show details of user's profile *****/
Usr_ShowDetailsUserProfile (&Gbl.Usrs.Other.UsrDat);
fprintf (Gbl.F.Out,"</div>");
fprintf (Gbl.F.Out,"</td>"
"</tr>"
"</table>"
"</div>");
}
else
Error = true;
@ -7587,29 +7596,101 @@ void Usr_ChangeProfileVisibility (void)
void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
{
extern const char *The_ClassFormul[The_NUM_THEMES];
extern const char *Txt_Figures;
extern const char *Txt_First_access;
// extern const char *Txt_Figures;
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_course;
extern const char *Txt_courses;
extern const char *Txt_From_TIME;
// extern const char *Txt_First_access;
extern const char *Txt_day;
extern const char *Txt_days;
extern const char *Txt_Calculate;
extern const char *Txt_Clicks;
extern const char *Txt_of_PART_OF_A_TOTAL;
extern const char *Txt_clicks;
extern const char *Txt_Courses_as_a_ROLE;
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
// extern const char *Txt_Courses_as_a_ROLE;
extern const char *Txt_Forums;
extern const char *Txt_post;
extern const char *Txt_posts;
extern const char *Txt_Messages;
extern const char *Txt_message;
extern const char *Txt_messages;
extern const char *Txt_Files;
extern const char *Txt_public_files;
extern const char *Txt_Forum_posts;
extern const char *Txt_Messages_sent;
extern const char *Txt_files;
extern const char *Txt_public_FILES;
struct UsrFigures UsrFigures;
unsigned NumCrssUsrIsTeacher;
unsigned NumCrssUsrIsStudent;
unsigned NumStds;
unsigned NumTchs;
unsigned NumFiles;
unsigned NumPublicFiles;
/***** Start table *****/
Lay_StartRoundFrameTable10 (NULL,2,Txt_Figures);
// Lay_StartRoundFrameTable10 (NULL,2,Txt_Figures);
// Lay_StartRoundFrameTable10 (NULL,2,NULL);
fprintf (Gbl.F.Out,"<table class=\"TABLE10 CELLS_PAD_2\">");
/***** Number of courses in which the user is teacher or student *****/
if ((NumCrssUsrIsTeacher = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_TEACHER)))
{
NumTchs = Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_TEACHER,Rol_ROLE_TEACHER);
NumStds = Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_TEACHER,Rol_ROLE_STUDENT);
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""
" style=\"text-align:right; vertical-align:top;\">"
"%s"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:left; vertical-align:top;\">"
"%u&nbsp;%s<br />"
"%u&nbsp;%s<br />"
"%u&nbsp;%s"
"</a>"
"</td>",
The_ClassFormul[Gbl.Prefs.Theme],
Txt_ROLES_SINGUL_Abc[Rol_ROLE_TEACHER][UsrDat->Sex],
NumCrssUsrIsTeacher,
(NumCrssUsrIsTeacher == 1) ? Txt_course :
Txt_courses,
NumTchs,
(NumTchs == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN] :
Txt_ROLES_PLURAL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN],
NumStds,
(NumStds == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN] :
Txt_ROLES_PLURAL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
}
if ((NumCrssUsrIsStudent = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_STUDENT)))
{
NumTchs = Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_STUDENT,Rol_ROLE_TEACHER);
NumStds = Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_STUDENT,Rol_ROLE_STUDENT);
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""
" style=\"text-align:right; vertical-align:top;\">"
"%s"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:left; vertical-align:top;\">"
"%u&nbsp;%s<br />"
"%u&nbsp;%s<br />"
"%u&nbsp;%s"
"</a>"
"</td>"
"</tr>",
The_ClassFormul[Gbl.Prefs.Theme],
Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][UsrDat->Sex],
NumCrssUsrIsStudent,
(NumCrssUsrIsStudent == 1) ? Txt_course :
Txt_courses,
NumTchs,
(NumTchs == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN] :
Txt_ROLES_PLURAL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN],
NumStds,
(NumStds == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN] :
Txt_ROLES_PLURAL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
}
/***** Get figures *****/
Usr_GetUsrFigures (UsrDat->UsrCod,&UsrFigures);
@ -7618,19 +7699,18 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""
" style=\"text-align:right; vertical-align:top;\">"
"%s:"
"%s"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:left; vertical-align:top;\">",
The_ClassFormul[Gbl.Prefs.Theme],
Txt_First_access);
Txt_From_TIME);
if (UsrFigures.FirstClickTime.Date.Year)
{
Dat_WriteDate (UsrFigures.FirstClickTime.Date.YYYYMMDD);
fprintf (Gbl.F.Out," ");
Dat_WriteHourMinute (&(UsrFigures.FirstClickTime.YYYYMMDDHHMMSS[8]));
if (UsrFigures.NumDays >= 0)
fprintf (Gbl.F.Out," (%d %s)",
fprintf (Gbl.F.Out,"<br />"
"%d&nbsp;%s",
UsrFigures.NumDays,
(UsrFigures.NumDays == 1) ? Txt_day :
Txt_days);
@ -7651,7 +7731,7 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""
" style=\"text-align:right; vertical-align:top;\">"
"%s:"
"%s"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:left; vertical-align:top;\">",
@ -7659,8 +7739,10 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
Txt_Clicks);
if (UsrFigures.NumClicks >= 0)
{
fprintf (Gbl.F.Out,"%ld, #%ld %s %ld",
UsrFigures.NumClicks,
fprintf (Gbl.F.Out,"%ld&nbsp;%s<br />"
"<span class=\"RANK\">#%ld</span>"
"&nbsp;%s&nbsp;%ld",
UsrFigures.NumClicks,Txt_clicks,
Usr_GetRankingNumClicks (UsrDat->UsrCod),
Txt_of_PART_OF_A_TOTAL,
Usr_GetNumUsrsWithNumClicks ());
@ -7669,8 +7751,10 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
fprintf (Gbl.F.Out,"<br />");
Str_WriteFloatNum ((float) UsrFigures.NumClicks /
(float) (UsrFigures.NumDays + 1));
fprintf (Gbl.F.Out," %s / %s, #%ld %s %ld",
Txt_clicks,Txt_day,
fprintf (Gbl.F.Out,"&nbsp;/&nbsp;%s<br />"
"<span class=\"RANK\">#%ld</span>"
"&nbsp;%s&nbsp;%ld",
Txt_day,
Usr_GetRankingNumClicksPerDay (UsrDat->UsrCod),
Txt_of_PART_OF_A_TOTAL,
Usr_GetNumUsrsWithNumClicksPerDay ());
@ -7688,87 +7772,28 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
fprintf (Gbl.F.Out,"</td>"
"</tr>");
/***** Number of courses in which the user is teacher or student *****/
if ((NumCrssUsrIsTeacher = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_TEACHER)))
{
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""
" style=\"text-align:right; vertical-align:top;\">",
The_ClassFormul[Gbl.Prefs.Theme]);
fprintf (Gbl.F.Out,Txt_Courses_as_a_ROLE,
Txt_ROLES_SINGULAR_abc[Rol_ROLE_TEACHER][UsrDat->Sex]);
fprintf (Gbl.F.Out,":"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:left; vertical-align:top;\">"
"%u (%u %s)"
"</a>"
"</td>",
NumCrssUsrIsTeacher,
Usr_GetNumUsrsOtherRoleInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_TEACHER,Rol_ROLE_STUDENT),
Txt_ROLES_PLURAL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
}
if ((NumCrssUsrIsStudent = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_STUDENT)))
{
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""
" style=\"text-align:right; vertical-align:top;\">",
The_ClassFormul[Gbl.Prefs.Theme]);
fprintf (Gbl.F.Out,Txt_Courses_as_a_ROLE,
Txt_ROLES_SINGULAR_abc[Rol_ROLE_STUDENT][UsrDat->Sex]);
fprintf (Gbl.F.Out,":"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:left; vertical-align:top;\">"
"%u (%u %s)"
"</a>"
"</td>"
"</tr>",
NumCrssUsrIsStudent,
Usr_GetNumUsrsOtherRoleInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_STUDENT,Rol_ROLE_TEACHER),
Txt_ROLES_PLURAL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN]);
}
/***** Number of files published *****/
if ((NumFiles = Brw_GetNumFilesUsr (UsrDat->UsrCod)))
NumPublicFiles = Brw_GetNumPublicFilesUsr (UsrDat->UsrCod);
else
NumPublicFiles = 0;
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""
" style=\"text-align:right; vertical-align:top;\">"
"%s:"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:left; vertical-align:top;\">"
"%u (%u %s)"
"</a>"
"</td>"
"</tr>",
The_ClassFormul[Gbl.Prefs.Theme],
Txt_Files,
NumFiles,NumPublicFiles,
Txt_public_files);
/***** Number of posts in forums *****/
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""
" style=\"text-align:right; vertical-align:top;\">"
"%s:"
"%s"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:left; vertical-align:top;\">",
The_ClassFormul[Gbl.Prefs.Theme],
Txt_Forum_posts);
Txt_Forums);
if (UsrFigures.NumForPst >= 0)
{
fprintf (Gbl.F.Out,"%ld",UsrFigures.NumForPst);
fprintf (Gbl.F.Out,"%ld&nbsp;%s",
UsrFigures.NumForPst,
(UsrFigures.NumForPst == 1) ? Txt_post :
Txt_posts);
if (UsrFigures.NumDays >= 0)
{
fprintf (Gbl.F.Out," (");
fprintf (Gbl.F.Out,"<br />");
Str_WriteFloatNum ((float) UsrFigures.NumForPst /
(float) (UsrFigures.NumDays + 1));
fprintf (Gbl.F.Out," / %s)",Txt_day);
fprintf (Gbl.F.Out,"&nbsp;/&nbsp;%s",Txt_day);
}
}
else // Number of forum posts is unknown
@ -7787,21 +7812,24 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""
" style=\"text-align:right; vertical-align:top;\">"
"%s:"
"%s"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:left; vertical-align:top;\">",
The_ClassFormul[Gbl.Prefs.Theme],
Txt_Messages_sent);
Txt_Messages);
if (UsrFigures.NumMsgSnt >= 0)
{
fprintf (Gbl.F.Out,"%ld",UsrFigures.NumMsgSnt);
fprintf (Gbl.F.Out,"%ld&nbsp;%s",
UsrFigures.NumMsgSnt,
(UsrFigures.NumMsgSnt == 1) ? Txt_message :
Txt_messages);
if (UsrFigures.NumDays >= 0)
{
fprintf (Gbl.F.Out," (");
fprintf (Gbl.F.Out,"<br />");
Str_WriteFloatNum ((float) UsrFigures.NumMsgSnt /
(float) (UsrFigures.NumDays + 1));
fprintf (Gbl.F.Out," / %s)",Txt_day);
fprintf (Gbl.F.Out,"&nbsp;/&nbsp;%s",Txt_day);
}
}
else // Number of clicks is unknown
@ -7816,8 +7844,31 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
fprintf (Gbl.F.Out,"</td>"
"</tr>");
/***** Number of files published *****/
if ((NumFiles = Brw_GetNumFilesUsr (UsrDat->UsrCod)))
NumPublicFiles = Brw_GetNumPublicFilesUsr (UsrDat->UsrCod);
else
NumPublicFiles = 0;
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""
" style=\"text-align:right; vertical-align:top;\">"
"%s"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:left; vertical-align:top;\">"
"%u&nbsp;%s<br />"
"%u&nbsp;%s"
"</a>"
"</td>"
"</tr>",
The_ClassFormul[Gbl.Prefs.Theme],
Txt_Files,
NumFiles,Txt_files,
NumPublicFiles,Txt_public_FILES);
/***** End of table *****/
Lay_EndRoundFrameTable10 ();
fprintf (Gbl.F.Out,"</table>");
// Lay_EndRoundFrameTable10 ();
}
/*****************************************************************************/