diff --git a/swad_assignment.c b/swad_assignment.c
index a480b82d5..0744fee10 100644
--- a/swad_assignment.c
+++ b/swad_assignment.c
@@ -1176,9 +1176,13 @@ void Asg_RequestCreatOrEditAsg (void)
Box_StartBoxTable (NULL,Txt_New_assignment,NULL,
Hlp_ASSESSMENT_Assignments_new_assignment,Box_NOT_CLOSABLE,2);
else
- Box_StartBoxTable (NULL,Txt_Edit_assignment,NULL,
+ Box_StartBoxTable (NULL,
+ Asg.Title[0] ? Asg.Title :
+ Txt_Edit_assignment,
+ NULL,
Hlp_ASSESSMENT_Assignments_edit_assignment,Box_NOT_CLOSABLE,2);
+
/***** Assignment title *****/
fprintf (Gbl.F.Out,"
"
""
diff --git a/swad_attendance.c b/swad_attendance.c
index a84f5a34a..34da1c59a 100644
--- a/swad_attendance.c
+++ b/swad_attendance.c
@@ -1091,7 +1091,10 @@ void Att_RequestCreatOrEditAttEvent (void)
Box_StartBoxTable (NULL,Txt_New_event,NULL,
Hlp_USERS_Attendance_new_event,Box_NOT_CLOSABLE,2);
else
- Box_StartBoxTable (NULL,Txt_Edit_event,NULL,
+ Box_StartBoxTable (NULL,
+ Att.Title[0] ? Att.Title :
+ Txt_Edit_event,
+ NULL,
Hlp_USERS_Attendance_edit_event,Box_NOT_CLOSABLE,2);
/***** Attendance event title *****/
diff --git a/swad_changelog.h b/swad_changelog.h
index 7afb0d5c5..c147158b7 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -252,17 +252,19 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 17.11.4 (2017-09-30)"
+#define Log_PLATFORM_VERSION "SWAD 17.11.5 (2017-10-01)"
#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.11.4: Sep 29, 2017 Changes in edition of a project. (231521 lines)
- Version 17.11.3: Sep 29, 2017 Changes in layout of projects. (231517 lines)
- Version 17.11.2: Sep 29, 2017 Changes in layout of projects. (231511 lines)
- Version 17.11.1: Sep 29, 2017 Code refactoring in projects. (231510 lines)
+ Version 17.11.5: Oct 01, 2017 Changes in order of roles in projects.
+ Changes in edition of assignments, surveys and attendance events. (231536 lines)
+ Version 17.11.4: Sep 30, 2017 Changes in edition of a project. (231521 lines)
+ Version 17.11.3: Sep 30, 2017 Changes in layout of projects. (231517 lines)
+ Version 17.11.2: Sep 30, 2017 Changes in layout of projects. (231511 lines)
+ Version 17.11.1: Sep 30, 2017 Code refactoring in projects. (231510 lines)
Version 17.11: Sep 29, 2017 Select which projects to show: only my projects or all projects. (231531 lines)
Version 17.10.7: Sep 29, 2017 Icons to select which projects to show: only my projects or all projects. (231456 lines)
Version 17.10.6: Sep 25, 2017 Fixed bug when receiving projects. (231357 lines)
diff --git a/swad_project.c b/swad_project.c
index 0e8a65ee6..e769b4da7 100644
--- a/swad_project.c
+++ b/swad_project.c
@@ -61,6 +61,14 @@ typedef enum
#define Prj_INTERVAL_DEFAULT ((time_t) 365 * (time_t) 24 * (time_t) 60 * (time_t) 60) // 1 year
+const Prj_RoleInProject_t Prj_RolesToShow[] =
+ {
+ Prj_ROLE_TUT, // Tutor
+ Prj_ROLE_STD, // Student
+ Prj_ROLE_EVA, // Evaluator
+ };
+const unsigned Brw_NUM_ROLES_TO_SHOW = sizeof (Prj_RolesToShow) / sizeof (Prj_RolesToShow[0]);
+
/*****************************************************************************/
/***************************** Private variables *****************************/
/*****************************************************************************/
@@ -96,15 +104,14 @@ static void Prj_ShowTableAllProjectsTxtField (struct Project *Prj,
static void Prj_ShowOneProjectURL (const struct Project *Prj,
Prj_ProjectView_t ProjectView);
static void Prj_ShowTableAllProjectsURL (const struct Project *Prj);
-static void Prj_ShowOneProjectUsrs (const struct Project *Prj,
- Prj_ProjectView_t ProjectView,
- Prj_RoleInProject_t RoleInProject);
-static void Prj_ShowTableAllProjectsUsrs (const struct Project *Prj,
- 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 void Prj_ShowOneProjectMembers (struct Project *Prj,
+ Prj_ProjectView_t ProjectView);
+static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
+ Prj_ProjectView_t ProjectView,
+ Prj_RoleInProject_t RoleInProject);
+static void Prj_ShowTableAllProjectsMembersWithARole (const struct Project *Prj,
+ Prj_RoleInProject_t RoleInProject);
+
static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject,
MYSQL_RES **mysql_res);
@@ -408,7 +415,7 @@ static void Prj_ShowTableAllProjectsHead (void)
extern const char *Txt_Preassigned_QUESTION;
extern const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT];
Prj_Order_t Order;
- Prj_RoleInProject_t RoleInProject;
+ unsigned NumRoleToShow;
fprintf (Gbl.F.Out," |
");
for (Order = (Prj_Order_t) 0;
@@ -428,11 +435,11 @@ static void Prj_ShowTableAllProjectsHead (void)
fprintf (Gbl.F.Out,"%s | ",
Txt_Preassigned_QUESTION);
- for (RoleInProject = Prj_ROLE_STD;
- RoleInProject <= Prj_ROLE_EVA;
- RoleInProject++)
+ for (NumRoleToShow = 0;
+ NumRoleToShow < Brw_NUM_ROLES_TO_SHOW;
+ NumRoleToShow++)
fprintf (Gbl.F.Out,"%s | ",
- Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
+ Txt_PROJECT_ROLES_PLURAL_Abc[Prj_RolesToShow[NumRoleToShow]]);
fprintf (Gbl.F.Out,"
");
}
@@ -570,7 +577,6 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
extern const char *Txt_Required_knowledge;
extern const char *Txt_Required_materials;
extern const char *Txt_Preassigned_QUESTION;
- Prj_RoleInProject_t RoleInProject;
static unsigned UniqueId = 0;
/***** Get data of this project *****/
@@ -579,7 +585,7 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
/***** Write first row of data of this project *****/
/* Forms to remove/edit this project */
fprintf (Gbl.F.Out,""
- "",Gbl.RowEvenOdd);
@@ -591,7 +597,7 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
/* Start date/time */
UniqueId++;
- fprintf (Gbl.F.Out," | Hidden ? (Prj->Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
@@ -610,7 +616,7 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
/* End date/time */
UniqueId++;
- fprintf (Gbl.F.Out," | Hidden ? (Prj->Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
@@ -621,7 +627,7 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
fprintf (Gbl.F.Out,"\">"
""
" | ",
UniqueId,Prj->TimeUTC[Dat_END_TIME],
@@ -659,7 +665,7 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
/* Preassigned? */
fprintf (Gbl.F.Out,"
"
- ""
@@ -681,10 +687,7 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
Txt_No);
/* Project members */
- for (RoleInProject = Prj_ROLE_STD;
- RoleInProject <= Prj_ROLE_EVA;
- RoleInProject++)
- Prj_ShowOneProjectUsrs (Prj,ProjectView,RoleInProject);
+ Prj_ShowOneProjectMembers (Prj,ProjectView);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
}
@@ -702,7 +705,7 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
extern const char *Txt_Required_knowledge;
extern const char *Txt_Required_materials;
extern const char *Txt_Preassigned_QUESTION;
- Prj_RoleInProject_t RoleInProject;
+ unsigned NumRoleToShow;
static unsigned UniqueId = 0;
/***** Get data of this project *****/
@@ -733,7 +736,7 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
fprintf (Gbl.F.Out," | "
""
" | ",
UniqueId,
@@ -781,10 +784,10 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
Txt_No);
/* Project members */
- for (RoleInProject = Prj_ROLE_STD;
- RoleInProject <= Prj_ROLE_EVA;
- RoleInProject++)
- Prj_ShowTableAllProjectsUsrs (Prj,RoleInProject);
+ for (NumRoleToShow = 0;
+ NumRoleToShow < Brw_NUM_ROLES_TO_SHOW;
+ NumRoleToShow++)
+ Prj_ShowTableAllProjectsMembersWithARole (Prj,Prj_RolesToShow[NumRoleToShow]);
/***** End row *****/
fprintf (Gbl.F.Out,"
");
@@ -862,7 +865,7 @@ static void Prj_ShowOneProjectTxtField (struct Project *Prj,
/***** Write row with label and text *****/
fprintf (Gbl.F.Out,""
- ""
@@ -914,7 +917,7 @@ static void Prj_ShowOneProjectURL (const struct Project *Prj,
PutLink = (ProjectView == Prj_LIST_PROJECTS && Prj->URL[0]);
fprintf (Gbl.F.Out," |
"
- ""
@@ -954,70 +957,31 @@ static void Prj_ShowTableAllProjectsURL (const struct Project *Prj)
Prj->URL);
}
+/*****************************************************************************/
+/************** Show projects members when showing one project ***************/
+/*****************************************************************************/
+
+static void Prj_ShowOneProjectMembers (struct Project *Prj,
+ Prj_ProjectView_t ProjectView)
+ {
+ unsigned NumRoleToShow;
+
+ for (NumRoleToShow = 0;
+ NumRoleToShow < Brw_NUM_ROLES_TO_SHOW;
+ NumRoleToShow++)
+ Prj_ShowOneProjectMembersWithARole (Prj,ProjectView,
+ Prj_RolesToShow[NumRoleToShow]);
+ }
+
/*****************************************************************************/
/************************* Show users row in a project ***********************/
/*****************************************************************************/
-static void Prj_ShowOneProjectUsrs (const struct Project *Prj,
- Prj_ProjectView_t ProjectView,
- Prj_RoleInProject_t RoleInProject)
+static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
+ Prj_ProjectView_t ProjectView,
+ Prj_RoleInProject_t RoleInProject)
{
extern const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT];
-
- /***** Row with label and listing of users *****/
- fprintf (Gbl.F.Out," |
");
- switch (ProjectView)
- {
- case Prj_LIST_PROJECTS:
- fprintf (Gbl.F.Out,"%s: | "
- "",
- Gbl.RowEvenOdd,
- Prj->Hidden ? "ASG_LABEL_LIGHT" :
- "ASG_LABEL",
- Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject],
- Gbl.RowEvenOdd,
- Prj->Hidden ? "DAT_LIGHT" :
- "DAT");
- break;
- case Prj_PRINT_ONE_PROJECT:
- fprintf (Gbl.F.Out," | %s: | "
- "",
- Prj->Hidden ? "ASG_LABEL_LIGHT" :
- "ASG_LABEL",
- Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject],
- Prj->Hidden ? "DAT_LIGHT" :
- "DAT");
- break;
- case Prj_EDIT_ONE_PROJECT:
- fprintf (Gbl.F.Out," | %s: | "
- "",
- Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
- break;
- }
- Prj_ShowOneProjectWriteUsrs (Prj->PrjCod,ProjectView,RoleInProject);
- fprintf (Gbl.F.Out," | "
- "
");
- }
-
-static void Prj_ShowTableAllProjectsUsrs (const struct Project *Prj,
- Prj_RoleInProject_t RoleInProject)
- {
- /***** Listing of users *****/
- fprintf (Gbl.F.Out,"",
- Gbl.RowEvenOdd,
- Prj->Hidden ? "DAT_LIGHT" :
- "DAT");
- Prj_ShowTableAllProjectsWriteUsrs (Prj->PrjCod,RoleInProject);
- fprintf (Gbl.F.Out," | ");
- }
-
-/*****************************************************************************/
-/*************** Write list of users with a role in a project ****************/
-/*****************************************************************************/
-
-static void Prj_ShowOneProjectWriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
- Prj_RoleInProject_t RoleInProject)
- {
extern const char *Txt_Remove;
extern const char *Txt_Add_USER;
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT];
@@ -1043,9 +1007,40 @@ static void Prj_ShowOneProjectWriteUsrs (long PrjCod,Prj_ProjectView_t ProjectVi
};
/***** Get users in project from database *****/
- NumUsrs = Prj_GetUsrsInPrj (PrjCod,RoleInProject,&mysql_res);
+ NumUsrs = Prj_GetUsrsInPrj (Prj->PrjCod,RoleInProject,&mysql_res);
- /***** Start table *****/
+ /***** Start row with label and listing of users *****/
+ fprintf (Gbl.F.Out,"");
+ switch (ProjectView)
+ {
+ case Prj_LIST_PROJECTS:
+ fprintf (Gbl.F.Out,"%s: | "
+ "",
+ Gbl.RowEvenOdd,
+ Prj->Hidden ? "ASG_LABEL_LIGHT" :
+ "ASG_LABEL",
+ Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject],
+ Gbl.RowEvenOdd,
+ Prj->Hidden ? "DAT_LIGHT" :
+ "DAT");
+ break;
+ case Prj_PRINT_ONE_PROJECT:
+ fprintf (Gbl.F.Out," | %s: | "
+ "",
+ Prj->Hidden ? "ASG_LABEL_LIGHT" :
+ "ASG_LABEL",
+ Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject],
+ Prj->Hidden ? "DAT_LIGHT" :
+ "DAT");
+ break;
+ case Prj_EDIT_ONE_PROJECT:
+ fprintf (Gbl.F.Out," | %s: | "
+ "",
+ Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
+ break;
+ }
+
+ /***** Start table with all members with this role *****/
Tbl_StartTable (2);
/***** Write users *****/
@@ -1104,7 +1099,7 @@ static void Prj_ShowOneProjectWriteUsrs (long PrjCod,Prj_ProjectView_t ProjectVi
{
fprintf (Gbl.F.Out," |
"
"");
- Gbl.Prjs.PrjCodToEdit = PrjCod; // Used to pass project code as a parameter
+ Gbl.Prjs.PrjCodToEdit = Prj->PrjCod; // Used to pass project code as a parameter
sprintf (Gbl.Title,Txt_Add_USER,Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
Lay_PutContextualLink (ActionReqAddUsr[RoleInProject],NULL,Prj_PutParams,
"plus64x64.png",
@@ -1119,15 +1114,19 @@ static void Prj_ShowOneProjectWriteUsrs (long PrjCod,Prj_ProjectView_t ProjectVi
" |
");
}
- /***** End table *****/
+ /***** End table with all members with this role *****/
Tbl_EndTable ();
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
+
+ /***** End row with label and listing of users *****/
+ fprintf (Gbl.F.Out,""
+ "");
}
-static void Prj_ShowTableAllProjectsWriteUsrs (long PrjCod,
- Prj_RoleInProject_t RoleInProject)
+static void Prj_ShowTableAllProjectsMembersWithARole (const struct Project *Prj,
+ Prj_RoleInProject_t RoleInProject)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@@ -1135,13 +1134,19 @@ static void Prj_ShowTableAllProjectsWriteUsrs (long PrjCod,
unsigned NumUsrs;
/***** Get users in project from database *****/
- NumUsrs = Prj_GetUsrsInPrj (PrjCod,RoleInProject,&mysql_res);
+ NumUsrs = Prj_GetUsrsInPrj (Prj->PrjCod,RoleInProject,&mysql_res);
+
+ /***** Start column with list of all members with this role *****/
+ fprintf (Gbl.F.Out,"",
+ Gbl.RowEvenOdd,
+ Prj->Hidden ? "DAT_LIGHT" :
+ "DAT");
if (NumUsrs)
{
+ /***** Write users *****/
fprintf (Gbl.F.Out,"");
- /***** Write users *****/
for (NumUsr = 0;
NumUsr < NumUsrs;
NumUsr++)
@@ -1176,6 +1181,9 @@ static void Prj_ShowTableAllProjectsWriteUsrs (long PrjCod,
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
+
+ /***** End column with list of all members with this role *****/
+ fprintf (Gbl.F.Out," | ");
}
/*****************************************************************************/
@@ -2170,7 +2178,7 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject)
extern const char *Txt_Create_project;
extern const char *Txt_Save;
extern const char *Txt_Members;
- Prj_RoleInProject_t RoleInProject;
+ unsigned NumRoleToShow;
/***** Start box and form *****/
if (ItsANewProject)
@@ -2197,10 +2205,11 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject)
{
Box_StartBoxTable (NULL,Txt_Members,NULL,
NULL,Box_NOT_CLOSABLE,2);
- for (RoleInProject = Prj_ROLE_STD;
- RoleInProject <= Prj_ROLE_EVA;
- RoleInProject++)
- Prj_ShowOneProjectUsrs (Prj,Prj_EDIT_ONE_PROJECT,RoleInProject);
+ for (NumRoleToShow = 0;
+ NumRoleToShow < Brw_NUM_ROLES_TO_SHOW;
+ NumRoleToShow++)
+ Prj_ShowOneProjectMembersWithARole (Prj,Prj_EDIT_ONE_PROJECT,
+ Prj_RolesToShow[NumRoleToShow]);
Box_EndBoxTable ();
}
diff --git a/swad_survey.c b/swad_survey.c
index 8c1321738..3dc308fd1 100644
--- a/swad_survey.c
+++ b/swad_survey.c
@@ -1824,7 +1824,10 @@ void Svy_RequestCreatOrEditSvy (void)
Box_StartBoxTable (NULL,Txt_New_survey,NULL,
Hlp_ASSESSMENT_Surveys_new_survey,Box_NOT_CLOSABLE,2);
else
- Box_StartBoxTable (NULL,Txt_Edit_survey,NULL,
+ Box_StartBoxTable (NULL,
+ Svy.Title[0] ? Svy.Title :
+ Txt_Edit_survey,
+ NULL,
Hlp_ASSESSMENT_Surveys_edit_survey,Box_NOT_CLOSABLE,2);
/***** Scope of the survey *****/