mirror of
https://github.com/acanas/swad-core.git
synced 2024-09-20 00:02:42 +02:00
Version 17.9.1
This commit is contained in:
parent
b3fb8ad5e2
commit
ca46f020d5
|
@ -252,13 +252,14 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 17.9 (2017-09-24)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 17.9.1 (2017-09-24)"
|
||||
#define CSS_FILE "swad17.0.css"
|
||||
#define JS_FILE "swad16.206.3.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 17.9.1: Sep 24, 2017 Changes in listing of all projects in a table. (231172 lines)
|
||||
Version 17.9: Sep 24, 2017 Action to show all projects in a table. (231151 lines)
|
||||
1 change necessary in database:
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1696','es','N','Ver tabla proyectos');
|
||||
|
|
201
swad_project.c
201
swad_project.c
|
@ -88,8 +88,12 @@ static void Prj_ShowOneProjectUsrs (const struct Project *Prj,
|
|||
const char *Label,Prj_RoleInProject_t RoleInProject);
|
||||
static void Prj_ShowTableAllProjectsUsrs (const struct Project *Prj,
|
||||
Prj_RoleInProject_t RoleInProject);
|
||||
static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
||||
Prj_RoleInProject_t RoleInProject);
|
||||
static void Prj_ShowOneProjectWriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
||||
Prj_RoleInProject_t RoleInProject);
|
||||
static void Prj_ShowTableAllProjectsWriteUsrs (long PrjCod,
|
||||
Prj_RoleInProject_t RoleInProject);
|
||||
static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject,
|
||||
MYSQL_RES **mysql_res);
|
||||
|
||||
static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject);
|
||||
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject);
|
||||
|
@ -153,7 +157,7 @@ void Prj_ShowTableAllProjects (void)
|
|||
|
||||
/***** Write all the projects *****/
|
||||
for (NumPrj = 0;
|
||||
NumPrj <= Gbl.Prjs.Num;
|
||||
NumPrj < Gbl.Prjs.Num;
|
||||
NumPrj++)
|
||||
{
|
||||
Prj.PrjCod = Gbl.Prjs.LstPrjCods[NumPrj];
|
||||
|
@ -773,7 +777,7 @@ static void Prj_ShowOneProjectUsrs (const struct Project *Prj,
|
|||
Label);
|
||||
break;
|
||||
}
|
||||
Prj_WriteUsrs (Prj->PrjCod,ProjectView,RoleInProject);
|
||||
Prj_ShowOneProjectWriteUsrs (Prj->PrjCod,ProjectView,RoleInProject);
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
}
|
||||
|
@ -786,7 +790,7 @@ static void Prj_ShowTableAllProjectsUsrs (const struct Project *Prj,
|
|||
Gbl.RowEvenOdd,
|
||||
Prj->Hidden ? "DAT_LIGHT" :
|
||||
"DAT");
|
||||
Prj_WriteUsrs (Prj->PrjCod,Prj_LIST_PROJECTS,RoleInProject);
|
||||
Prj_ShowTableAllProjectsWriteUsrs (Prj->PrjCod,RoleInProject);
|
||||
fprintf (Gbl.F.Out,"</td>");
|
||||
}
|
||||
|
||||
|
@ -794,22 +798,17 @@ static void Prj_ShowTableAllProjectsUsrs (const struct Project *Prj,
|
|||
/*************** Write list of users with a role in a project ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
||||
Prj_RoleInProject_t RoleInProject)
|
||||
static void Prj_ShowOneProjectWriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
||||
Prj_RoleInProject_t RoleInProject)
|
||||
{
|
||||
extern const char *Txt_Remove;
|
||||
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_Add_USER;
|
||||
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT];
|
||||
char Query[2048];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumUsr;
|
||||
unsigned NumUsrs;
|
||||
unsigned NumUsrsKnown;
|
||||
unsigned NumUsrsUnknown;
|
||||
unsigned NumUsrsToShow;
|
||||
bool UsrValid;
|
||||
bool ShowPhoto;
|
||||
char PhotoURL[PATH_MAX + 1];
|
||||
|
@ -828,92 +827,56 @@ static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
|||
ActReqAddEvaPrj, // Prj_ROLE_EVA, Evaluator
|
||||
};
|
||||
|
||||
/***** Get number of users in project from database *****/
|
||||
sprintf (Query,"SELECT COUNT(*) FROM prj_usr"
|
||||
" WHERE PrjCod=%ld AND RoleInProject=%u",
|
||||
PrjCod,(unsigned) RoleInProject);
|
||||
NumUsrs = (unsigned) DB_QueryCOUNT (Query,"can not get users in project");
|
||||
|
||||
/***** Get users in project from database *****/
|
||||
sprintf (Query,"SELECT prj_usr.UsrCod,"
|
||||
"usr_data.Surname1 AS S1,"
|
||||
"usr_data.Surname2 AS S2,"
|
||||
"usr_data.FirstName AS FN"
|
||||
" FROM prj_usr,usr_data"
|
||||
" WHERE prj_usr.PrjCod=%ld AND RoleInProject=%u"
|
||||
" AND prj_usr.UsrCod=usr_data.UsrCod"
|
||||
" ORDER BY S1,S2,FN",
|
||||
PrjCod,(unsigned) RoleInProject);
|
||||
NumUsrsKnown = (unsigned) DB_QuerySELECT (Query,&mysql_res,
|
||||
"can not get users in project");
|
||||
NumUsrs = Prj_GetUsrsInPrj (PrjCod,RoleInProject,&mysql_res);
|
||||
|
||||
/***** Start table *****/
|
||||
fprintf (Gbl.F.Out,"<table>");
|
||||
|
||||
/***** Check number of users *****/
|
||||
if (NumUsrs)
|
||||
/***** Write users *****/
|
||||
for (NumUsr = 0;
|
||||
NumUsr < NumUsrs;
|
||||
NumUsr++)
|
||||
{
|
||||
/***** How many users will be shown? *****/
|
||||
NumUsrsToShow = NumUsrsKnown;
|
||||
/* Get user's code */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
|
||||
/***** Write known users *****/
|
||||
for (NumUsr = 0;
|
||||
NumUsr < NumUsrsToShow;
|
||||
NumUsr++)
|
||||
{
|
||||
/* Get user's code */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
/* Get user's data */
|
||||
UsrValid = Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat);
|
||||
|
||||
/* Get user's data */
|
||||
UsrValid = Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat);
|
||||
/* Start row for this user */
|
||||
fprintf (Gbl.F.Out,"<tr>");
|
||||
|
||||
/* Start row for this user */
|
||||
fprintf (Gbl.F.Out,"<tr>");
|
||||
/* Icon to remove user */
|
||||
if (ProjectView == Prj_EDIT_ONE_PROJECT)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:30px;\">");
|
||||
Lay_PutContextualLink (ActionReqRemUsr[RoleInProject],NULL,Prj_PutParams,
|
||||
"remove-on64x64.png",
|
||||
Txt_Remove,NULL,
|
||||
NULL);
|
||||
fprintf (Gbl.F.Out,"</td>");
|
||||
}
|
||||
|
||||
/* Icon to remove user */
|
||||
if (ProjectView == Prj_EDIT_ONE_PROJECT)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:30px;\">");
|
||||
Lay_PutContextualLink (ActionReqRemUsr[RoleInProject],NULL,Prj_PutParams,
|
||||
"remove-on64x64.png",
|
||||
Txt_Remove,NULL,
|
||||
NULL);
|
||||
fprintf (Gbl.F.Out,"</td>");
|
||||
}
|
||||
/* Put user's photo */
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:30px;\">");
|
||||
ShowPhoto = (UsrValid ? Pho_ShowingUsrPhotoIsAllowed (&Gbl.Usrs.Other.UsrDat,PhotoURL) :
|
||||
false);
|
||||
Pho_ShowUsrPhoto (&Gbl.Usrs.Other.UsrDat,ShowPhoto ? PhotoURL :
|
||||
NULL,
|
||||
"PHOTO21x28",Pho_ZOOM,false);
|
||||
|
||||
/* Put user's photo */
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:30px;\">");
|
||||
ShowPhoto = (UsrValid ? Pho_ShowingUsrPhotoIsAllowed (&Gbl.Usrs.Other.UsrDat,PhotoURL) :
|
||||
false);
|
||||
Pho_ShowUsrPhoto (&Gbl.Usrs.Other.UsrDat,ShowPhoto ? PhotoURL :
|
||||
NULL,
|
||||
"PHOTO21x28",Pho_ZOOM,false);
|
||||
|
||||
/* Write user's name */
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"<td class=\"AUTHOR_TXT LEFT_MIDDLE\">");
|
||||
if (UsrValid)
|
||||
fprintf (Gbl.F.Out,"%s",Gbl.Usrs.Other.UsrDat.FullName);
|
||||
else
|
||||
fprintf (Gbl.F.Out,"[%s]",
|
||||
Txt_ROLES_SINGUL_abc[Rol_UNK][Usr_SEX_UNKNOWN]); // User not found, likely a user who has been removed
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
}
|
||||
|
||||
/***** If any users are unknown *****/
|
||||
if ((NumUsrsUnknown = NumUsrs - NumUsrsKnown))
|
||||
/***** Start form to show all the users *****/
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td colspan=\"3\" class=\"AUTHOR_TXT LEFT_MIDDLE\">"
|
||||
"[%u %s]"
|
||||
"</td>"
|
||||
"</tr>",
|
||||
NumUsrsUnknown,
|
||||
(NumUsrsUnknown == 1) ?
|
||||
Txt_ROLES_SINGUL_abc[Rol_UNK][Usr_SEX_UNKNOWN] :
|
||||
Txt_ROLES_PLURAL_abc[Rol_UNK][Usr_SEX_UNKNOWN]);
|
||||
/* Write user's name */
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"<td class=\"AUTHOR_TXT LEFT_MIDDLE\">");
|
||||
if (UsrValid)
|
||||
fprintf (Gbl.F.Out,"%s",Gbl.Usrs.Other.UsrDat.FullName);
|
||||
else
|
||||
fprintf (Gbl.F.Out,"[%s]",
|
||||
Txt_ROLES_SINGUL_abc[Rol_UNK][Usr_SEX_UNKNOWN]); // User not found, likely a user who has been removed
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
}
|
||||
|
||||
/***** Row to add a new user *****/
|
||||
|
@ -938,6 +901,70 @@ static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
|||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
|
||||
static void Prj_ShowTableAllProjectsWriteUsrs (long PrjCod,
|
||||
Prj_RoleInProject_t RoleInProject)
|
||||
{
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumUsr;
|
||||
unsigned NumUsrs;
|
||||
bool UsrValid;
|
||||
|
||||
/***** Get users in project from database *****/
|
||||
NumUsrs = Prj_GetUsrsInPrj (PrjCod,RoleInProject,&mysql_res);
|
||||
|
||||
/***** Write users *****/
|
||||
for (NumUsr = 0;
|
||||
NumUsr < NumUsrs;
|
||||
NumUsr++)
|
||||
{
|
||||
/* Get user's code */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
|
||||
/* Get user's data */
|
||||
UsrValid = Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat);
|
||||
|
||||
/* Separator */
|
||||
if (NumUsr)
|
||||
fprintf (Gbl.F.Out,",<br />");
|
||||
|
||||
/* Write user's name */
|
||||
if (UsrValid)
|
||||
fprintf (Gbl.F.Out,"%s",Gbl.Usrs.Other.UsrDat.FullName);
|
||||
else
|
||||
fprintf (Gbl.F.Out,"[%s]",
|
||||
Txt_ROLES_SINGUL_abc[Rol_UNK][Usr_SEX_UNKNOWN]); // User not found, likely a user who has been removed
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************** Get number of users in a project ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject,
|
||||
MYSQL_RES **mysql_res)
|
||||
{
|
||||
char Query[1024];
|
||||
|
||||
/***** Get users in project from database *****/
|
||||
sprintf (Query,"SELECT prj_usr.UsrCod,"
|
||||
"usr_data.Surname1 AS S1,"
|
||||
"usr_data.Surname2 AS S2,"
|
||||
"usr_data.FirstName AS FN"
|
||||
" FROM prj_usr,usr_data"
|
||||
" WHERE prj_usr.PrjCod=%ld AND RoleInProject=%u"
|
||||
" AND prj_usr.UsrCod=usr_data.UsrCod"
|
||||
" ORDER BY S1,S2,FN",
|
||||
PrjCod,(unsigned) RoleInProject);
|
||||
return (unsigned) DB_QuerySELECT (Query,mysql_res,
|
||||
"can not get users in project");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*** Request another user's ID, @nickname or email to add user to project ****/
|
||||
/*****************************************************************************/
|
||||
|
|
Loading…
Reference in New Issue
Block a user