mirror of
https://github.com/acanas/swad-core.git
synced 2024-09-19 00:01:11 +02:00
Version 23.87.5: Jul 23, 2024 Fixed bug in list of projects.
This commit is contained in:
parent
798b522943
commit
94865b2942
|
@ -633,10 +633,11 @@ Me sale este error, no s
|
|||
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
|
||||
*/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 23.87.4 (2024-07-17)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 23.87.5 (2024-07-23)"
|
||||
#define CSS_FILE "swad23.67.2.css"
|
||||
#define JS_FILE "swad23.79.js"
|
||||
/*
|
||||
Version 23.87.5: Jul 23, 2024 Fixed bug in list of projects. (335272 lines)
|
||||
Version 23.87.4: Jul 17, 2024 Changes in some icons. (335196 lines)
|
||||
Copy the following icons to icon public directory:
|
||||
sudo cp icon/chalkboard-user.svg /var/www/html/swad/icon/
|
||||
|
|
|
@ -1450,8 +1450,9 @@ static void For_PutFormWhichForums (const struct For_Forums *Forums)
|
|||
HTM_LI_Begin (NULL);
|
||||
HTM_LABEL_Begin (NULL);
|
||||
HTM_INPUT_RADIO ("ForumSet",
|
||||
((ForumSet == Forums->ForumSet) ? HTM_NO_ATTR :
|
||||
HTM_CHECKED) | HTM_SUBMIT_ON_CLICK,
|
||||
((ForumSet == Forums->ForumSet) ? HTM_CHECKED :
|
||||
HTM_NO_ATTR) |
|
||||
HTM_SUBMIT_ON_CLICK,
|
||||
"value=\"%u\"",(unsigned) ForumSet);
|
||||
HTM_Txt (Txt_FORUM_WHICH_FORUM[ForumSet]);
|
||||
HTM_LABEL_End ();
|
||||
|
|
|
@ -90,7 +90,7 @@ static const Prj_RoleInProject_t Prj_RolesToShow[Prj_NUM_ROLES_TO_SHOW] =
|
|||
};
|
||||
static const char *RoleIcon[Prj_NUM_ROLES_IN_PROJECT] =
|
||||
{
|
||||
[Prj_ROLE_UNK] = "user-slash.svg",
|
||||
[Prj_ROLE_UNK] = NULL,
|
||||
[Prj_ROLE_STD] = "person.svg",
|
||||
[Prj_ROLE_TUT] = "people-pulling.svg",
|
||||
[Prj_ROLE_EVL] = "people-line.svg", // "people-group.svg"
|
||||
|
@ -455,6 +455,7 @@ void Prj_ShowProjects (struct Prj_Projects *Projects)
|
|||
{
|
||||
switch (Projects->Filter.Who)
|
||||
{
|
||||
case Usr_WHO_NONE:
|
||||
case Usr_WHO_ME:
|
||||
case Usr_WHO_ALL:
|
||||
/* Show my projects / all projects */
|
||||
|
@ -682,7 +683,8 @@ static void Prj_ShowFormToFilterByUsrs (const struct Prj_Projects *Projects)
|
|||
{
|
||||
struct Prj_Filter Filter;
|
||||
Usr_Who_t Who;
|
||||
unsigned Mask = 1 << Usr_WHO_ME |
|
||||
unsigned Mask = 1 << Usr_WHO_NONE |
|
||||
1 << Usr_WHO_ME |
|
||||
1 << Usr_WHO_SELECTED |
|
||||
1 << Usr_WHO_ALL;
|
||||
|
||||
|
@ -723,7 +725,7 @@ static void Prj_ShowFormToFilterByRoleInPrj (const struct Prj_Projects *Projects
|
|||
struct Prj_Filter Filter;
|
||||
Prj_RoleInProject_t RoleInPrj;
|
||||
|
||||
for (RoleInPrj = (Prj_RoleInProject_t) 0;
|
||||
for (RoleInPrj = (Prj_RoleInProject_t) 1;
|
||||
RoleInPrj <= (Prj_RoleInProject_t) (Prj_NUM_ROLES_IN_PROJECT - 1);
|
||||
RoleInPrj++)
|
||||
{
|
||||
|
|
|
@ -242,21 +242,13 @@ unsigned Prj_DB_GetListProjects (MYSQL_RES **mysql_res,
|
|||
static const char *RolPrjSubQuery[16] = // EVL TUT STD UNK
|
||||
{ // 3 2 1 0
|
||||
[0b0000] = "", // · · · ·
|
||||
[0b0001] = " AND (" "prj_users.RoleInProject IS NULL)", // · · · 1
|
||||
[0b0010] = " AND (prj_users.RoleInProject IN " "(1)" ")", // · · 1 ·
|
||||
[0b0011] = " AND (prj_users.RoleInProject IN " "(1)" " OR prj_users.RoleInProject IS NULL)", // · · 1 1
|
||||
[0b0100] = " AND (prj_users.RoleInProject IN " "(2)" ")", // · 1 · ·
|
||||
[0b0101] = " AND (prj_users.RoleInProject IN " "(2)" " OR prj_users.RoleInProject IS NULL)", // · 1 · 1
|
||||
[0b0110] = " AND (prj_users.RoleInProject IN " "(1,2)" ")", // · 1 1 ·
|
||||
[0b0111] = " AND (prj_users.RoleInProject IN " "(1,2)" " OR prj_users.RoleInProject IS NULL)", // · 1 1 1
|
||||
[0b1000] = " AND (prj_users.RoleInProject IN " "(3)" ")", // 1 · · ·
|
||||
[0b1001] = " AND (prj_users.RoleInProject IN " "(3)" " OR prj_users.RoleInProject IS NULL)", // 1 · · 1
|
||||
[0b1010] = " AND (prj_users.RoleInProject IN " "(1,""3)" ")", // 1 · 1 ·
|
||||
[0b1011] = " AND (prj_users.RoleInProject IN " "(1,""3)" " OR prj_users.RoleInProject IS NULL)", // 1 · 1 1
|
||||
[0b1100] = " AND (prj_users.RoleInProject IN " "(2,3)" ")", // 1 1 · ·
|
||||
[0b1101] = " AND (prj_users.RoleInProject IN " "(2,3)" " OR prj_users.RoleInProject IS NULL)", // 1 1 · 1
|
||||
[0b1110] = " AND (prj_users.RoleInProject IN " "(1,2,3)" ")", // 1 1 1 ·
|
||||
[0b1111] = "", // 1 1 1 1
|
||||
};
|
||||
char *AssignSubQuery;
|
||||
char *HidVisSubQuery;
|
||||
|
@ -389,8 +381,62 @@ unsigned Prj_DB_GetListProjects (MYSQL_RES **mysql_res,
|
|||
/* Query */
|
||||
switch (Projects->Filter.Who)
|
||||
{
|
||||
case Usr_WHO_ME:
|
||||
/* Get list of projects */
|
||||
case Usr_WHO_NONE:
|
||||
/* Get list of projects without users */
|
||||
switch (Projects->SelectedOrder)
|
||||
{
|
||||
case Prj_ORDER_START_TIME:
|
||||
case Prj_ORDER_END_TIME:
|
||||
case Prj_ORDER_TITLE:
|
||||
NumPrjsFromDB = (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get projects",
|
||||
"SELECT prj_projects.PrjCod"
|
||||
" FROM prj_projects"
|
||||
" WHERE prj_projects.CrsCod=%ld"
|
||||
"%s"
|
||||
"%s"
|
||||
"%s"
|
||||
"%s"
|
||||
" AND prj_projects.PrjCod NOT IN (SELECT PrjCod FROM prj_users)"
|
||||
" GROUP BY prj_projects.PrjCod" // To not repeat projects (DISTINCT can not be used)
|
||||
" ORDER BY %s",
|
||||
Gbl.Hierarchy.Node[Hie_CRS].HieCod,
|
||||
AssignSubQuery,
|
||||
HidVisSubQuery,
|
||||
ReviewSubQuery,
|
||||
DptCodSubQuery,
|
||||
OrderBySubQuery[Projects->SelectedOrder]);
|
||||
break;
|
||||
case Prj_ORDER_DEPARTMENT:
|
||||
NumPrjsFromDB = (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get projects",
|
||||
"SELECT prj_projects.PrjCod"
|
||||
" FROM prj_projects LEFT JOIN dpt_departments"
|
||||
" ON prj_projects.DptCod=dpt_departments.DptCod"
|
||||
" LEFT JOIN prj_users"
|
||||
" ON prj_projects.PrjCod=prj_users.PrjCod"
|
||||
" WHERE prj_projects.CrsCod=%ld"
|
||||
"%s"
|
||||
"%s"
|
||||
"%s"
|
||||
"%s"
|
||||
" AND prj_projects.PrjCod=prj_users.PrjCod"
|
||||
" AND prj_users.UsrCod=%ld"
|
||||
"%s"
|
||||
" GROUP BY prj_projects.PrjCod" // To not repeat projects (DISTINCT can not be used)
|
||||
" ORDER BY %s",
|
||||
Gbl.Hierarchy.Node[Hie_CRS].HieCod,
|
||||
AssignSubQuery,
|
||||
HidVisSubQuery,
|
||||
ReviewSubQuery,
|
||||
DptCodSubQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
RolPrjSubQuery[Projects->Filter.RolPrj],
|
||||
OrderBySubQuery[Projects->SelectedOrder]);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Usr_WHO_ME: /* Get list of my projects */
|
||||
switch (Projects->SelectedOrder)
|
||||
{
|
||||
case Prj_ORDER_START_TIME:
|
||||
|
@ -449,10 +495,9 @@ unsigned Prj_DB_GetListProjects (MYSQL_RES **mysql_res,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
case Usr_WHO_SELECTED:
|
||||
case Usr_WHO_SELECTED: /* Get list of projects associated to selected users */
|
||||
if (UsrsSubQuery)
|
||||
{
|
||||
/* Get list of projects */
|
||||
switch (Projects->SelectedOrder)
|
||||
{
|
||||
case Prj_ORDER_START_TIME:
|
||||
|
@ -512,8 +557,7 @@ unsigned Prj_DB_GetListProjects (MYSQL_RES **mysql_res,
|
|||
}
|
||||
}
|
||||
break;
|
||||
case Usr_WHO_ALL:
|
||||
/* Get list of projects */
|
||||
case Usr_WHO_ALL: /* Get list of projects associated to any user */
|
||||
switch (Projects->SelectedOrder)
|
||||
{
|
||||
case Prj_ORDER_START_TIME:
|
||||
|
@ -530,6 +574,7 @@ unsigned Prj_DB_GetListProjects (MYSQL_RES **mysql_res,
|
|||
"%s"
|
||||
"%s"
|
||||
"%s"
|
||||
" GROUP BY prj_projects.PrjCod" // To not repeat projects (DISTINCT can not be used)
|
||||
" ORDER BY %s",
|
||||
Gbl.Hierarchy.Node[Hie_CRS].HieCod,
|
||||
AssignSubQuery,
|
||||
|
@ -553,6 +598,7 @@ unsigned Prj_DB_GetListProjects (MYSQL_RES **mysql_res,
|
|||
"%s"
|
||||
"%s"
|
||||
"%s"
|
||||
" GROUP BY prj_projects.PrjCod" // To not repeat projects (DISTINCT can not be used)
|
||||
" ORDER BY %s",
|
||||
Gbl.Hierarchy.Node[Hie_CRS].HieCod,
|
||||
AssignSubQuery,
|
||||
|
|
39
swad_text.c
39
swad_text.c
|
@ -14206,7 +14206,7 @@ const char *Txt_FORUM_WHICH_FORUM[For_NUM_FORUM_SETS] =
|
|||
#elif L==9 // pt
|
||||
"Fóruns deste site"
|
||||
#elif L==10 // tr
|
||||
"Forums of this location" // Çeviri lazim!
|
||||
"Bu konumdaki forumlar"
|
||||
#endif
|
||||
,
|
||||
[For_ALL_MY_FORUMS] =
|
||||
|
@ -14229,7 +14229,7 @@ const char *Txt_FORUM_WHICH_FORUM[For_NUM_FORUM_SETS] =
|
|||
#elif L==9 // pt
|
||||
"Todos os meus fóruns"
|
||||
#elif L==10 // tr
|
||||
"All my forums" // Çeviri lazim!
|
||||
"Tüm forumlarım"
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -57281,6 +57281,29 @@ const char *Txt_WHO[Usr_NUM_WHO] =
|
|||
"Eu"
|
||||
#elif L==10 // tr
|
||||
"Me" // Çeviri lazim!
|
||||
#endif
|
||||
,
|
||||
[Usr_WHO_NONE] =
|
||||
#if L==1 // ca
|
||||
"Cap usuari"
|
||||
#elif L==2 // de
|
||||
"Kein Benutzer"
|
||||
#elif L==3 // en
|
||||
"No user"
|
||||
#elif L==4 // es
|
||||
"Ningún usuario"
|
||||
#elif L==5 // fr
|
||||
"Aucun utilisateur"
|
||||
#elif L==6 // gn
|
||||
"Ndaipóri puruhára"
|
||||
#elif L==7 // it
|
||||
"Nessun utente"
|
||||
#elif L==8 // pl
|
||||
"Brak użytkownika"
|
||||
#elif L==9 // pt
|
||||
"Nenhum utilizador"
|
||||
#elif L==10 // tr
|
||||
"Kullanıcı yok"
|
||||
#endif
|
||||
,
|
||||
[Usr_WHO_SELECTED] =
|
||||
|
@ -57295,7 +57318,7 @@ const char *Txt_WHO[Usr_NUM_WHO] =
|
|||
#elif L==5 // fr
|
||||
"Utilisateurs sélectionnés"
|
||||
#elif L==6 // gn
|
||||
"Usuarios seleccionados" // Okoteve traducción
|
||||
"Umi puruhára ojeporavóva"
|
||||
#elif L==7 // it
|
||||
"Utenti selezionati"
|
||||
#elif L==8 // pl
|
||||
|
@ -57303,7 +57326,7 @@ const char *Txt_WHO[Usr_NUM_WHO] =
|
|||
#elif L==9 // pt
|
||||
"Usuários selecionados"
|
||||
#elif L==10 // tr
|
||||
"Selected users" // Çeviri lazim!
|
||||
"Seçilen kullanıcılar"
|
||||
#endif
|
||||
,
|
||||
[Usr_WHO_FOLLOWED] =
|
||||
|
@ -57318,7 +57341,7 @@ const char *Txt_WHO[Usr_NUM_WHO] =
|
|||
#elif L==5 // fr
|
||||
"Utilisateurs qui je suis"
|
||||
#elif L==6 // gn
|
||||
"Usuarios que sigo" // Okoteve traducción
|
||||
"Usuario-kuéra che asegíva"
|
||||
#elif L==7 // it
|
||||
"Utenti che sto seguenti"
|
||||
#elif L==8 // pl
|
||||
|
@ -57326,7 +57349,7 @@ const char *Txt_WHO[Usr_NUM_WHO] =
|
|||
#elif L==9 // pt
|
||||
"Usuários que estou seguindo"
|
||||
#elif L==10 // tr
|
||||
"Users I'm following" // Çeviri lazim!
|
||||
"Takip ettiğim kullanıcılar"
|
||||
#endif
|
||||
,
|
||||
[Usr_WHO_ALL] =
|
||||
|
@ -57341,7 +57364,7 @@ const char *Txt_WHO[Usr_NUM_WHO] =
|
|||
#elif L==5 // fr
|
||||
"Tous les utilisateurs"
|
||||
#elif L==6 // gn
|
||||
"Todos los usuarios" // Okoteve traducción
|
||||
"Mayma puruhára"
|
||||
#elif L==7 // it
|
||||
"Tutti gli utenti"
|
||||
#elif L==8 // pl
|
||||
|
@ -57349,7 +57372,7 @@ const char *Txt_WHO[Usr_NUM_WHO] =
|
|||
#elif L==9 // pt
|
||||
"Todos os usuários"
|
||||
#elif L==10 // tr
|
||||
"All users" // Çeviri lazim!
|
||||
"Tüm kullanıcılar"
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
@ -6469,6 +6469,7 @@ void Usr_PutWhoIcon (Usr_Who_t Who)
|
|||
static const char *Icon[Usr_NUM_WHO] =
|
||||
{
|
||||
[Usr_WHO_UNKNOWN ] = NULL,
|
||||
[Usr_WHO_NONE ] = "user-slash.svg",
|
||||
[Usr_WHO_ME ] = NULL,
|
||||
[Usr_WHO_SELECTED] = "search.svg",
|
||||
[Usr_WHO_FOLLOWED] = "user-check.svg",
|
||||
|
@ -6487,6 +6488,7 @@ void Usr_PutWhoIcon (Usr_Who_t Who)
|
|||
Txt_WHO[Who],
|
||||
"class=\"ICO_HIGHLIGHT PHOTOR15x20\"");
|
||||
break;
|
||||
case Usr_WHO_NONE:
|
||||
case Usr_WHO_SELECTED:
|
||||
case Usr_WHO_FOLLOWED:
|
||||
case Usr_WHO_ALL:
|
||||
|
|
|
@ -131,10 +131,11 @@ typedef enum
|
|||
Usr_OTHER,
|
||||
} Usr_MeOrOther_t;
|
||||
|
||||
#define Usr_NUM_WHO 5
|
||||
#define Usr_NUM_WHO 6
|
||||
typedef enum
|
||||
{
|
||||
Usr_WHO_UNKNOWN,
|
||||
Usr_WHO_NONE,
|
||||
Usr_WHO_ME,
|
||||
Usr_WHO_SELECTED,
|
||||
Usr_WHO_FOLLOWED,
|
||||
|
|
Loading…
Reference in New Issue
Block a user