Version 22.32: Sep 29, 2022 Code refactoring in program resources, assignments and projects.

This commit is contained in:
acanas 2022-09-29 00:04:41 +02:00
parent 051849f6e6
commit 5c093ff11e
18 changed files with 153 additions and 87 deletions

View File

@ -627,7 +627,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActUnlAllPrj ] = {1778,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_UnloSelectedPrjsEdition ,NULL}, [ActUnlAllPrj ] = {1778,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_UnloSelectedPrjsEdition ,NULL},
[ActFrmNewPrj ] = {1675,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestCreatePrj ,NULL}, [ActFrmNewPrj ] = {1675,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestCreatePrj ,NULL},
[ActEdiOnePrj ] = {1676,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestEditPrj ,NULL}, [ActEdiOnePrj ] = {1676,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestEditPrj ,NULL},
[ActSeeOnePrj ] = {1949,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ShowProjectWithFileBrowser ,NULL}, [ActSeeOnePrj ] = {1949,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ShowFileBrowserOrWorks ,NULL},
[ActPrnOnePrj ] = {1677,-1,TabUnk,ActSeePrj ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Prj_PrintOneProject ,NULL}, [ActPrnOnePrj ] = {1677,-1,TabUnk,ActSeePrj ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Prj_PrintOneProject ,NULL},
[ActNewPrj ] = {1678,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReceiveFormProject ,NULL}, [ActNewPrj ] = {1678,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReceiveFormProject ,NULL},
[ActChgPrj ] = {1679,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReceiveFormProject ,NULL}, [ActChgPrj ] = {1679,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReceiveFormProject ,NULL},

View File

@ -284,9 +284,20 @@ static void Asg_PutIconsListAssignments (void *Assignments)
{ {
/***** Put icon to create a new assignment *****/ /***** Put icon to create a new assignment *****/
if (Assignments) if (Assignments)
{
if (Asg_CheckIfICanCreateAssignments ()) if (Asg_CheckIfICanCreateAssignments ())
Asg_PutIconToCreateNewAsg (Assignments); Asg_PutIconToCreateNewAsg (Assignments);
/***** Link to get resource link *****/
if (Gbl.Usrs.Me.Role.Logged == Rol_TCH || // Only if I am a teacher
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) // or a superuser
{
((struct Asg_Assignments *) Assignments)->AsgCod = -1L;
Ico_PutContextualIconToGetLink (ActReqLnkAsg,NULL,
Asg_PutParams,Assignments);
}
}
/***** Put icon to show a figure *****/ /***** Put icon to show a figure *****/
Fig_PutIconToShowFigure (Fig_ASSIGNMENTS); Fig_PutIconToShowFigure (Fig_ASSIGNMENTS);
} }

View File

@ -53,8 +53,7 @@ void AsgRsc_GetLinkToAssignment (void)
Assignments.CurrentPage = Pag_GetParamPagNum (Pag_ASSIGNMENTS); Assignments.CurrentPage = Pag_GetParamPagNum (Pag_ASSIGNMENTS);
/***** Get assignment code *****/ /***** Get assignment code *****/
if ((Assignments.AsgCod = Asg_GetParamAsgCod ()) <= 0) Assignments.AsgCod = Asg_GetParamAsgCod ();
Err_WrongAssignmentExit ();
/***** Get assignment title *****/ /***** Get assignment title *****/
AsgRsc_GetTitleFromAsgCod (Assignments.AsgCod,Title,sizeof (Title) - 1); AsgRsc_GetTitleFromAsgCod (Assignments.AsgCod,Title,sizeof (Title) - 1);
@ -67,7 +66,8 @@ void AsgRsc_GetLinkToAssignment (void)
Title); Title);
/***** Show selected assignment in a box *****/ /***** Show selected assignment in a box *****/
Asg_ShowOneAssignmentInBox (&Assignments); if (Assignments.AsgCod > 0)
Asg_ShowOneAssignmentInBox (&Assignments);
/***** Show current assignments, if any *****/ /***** Show current assignments, if any *****/
Asg_ShowAllAssignments (&Assignments); Asg_ShowAllAssignments (&Assignments);
@ -126,6 +126,7 @@ void AsgRsc_WriteAssignmentInCrsProgram (long AsgCod,bool PutFormToGo,
void AsgRsc_GetTitleFromAsgCod (long AsgCod,char *Title,size_t TitleSize) void AsgRsc_GetTitleFromAsgCod (long AsgCod,char *Title,size_t TitleSize)
{ {
extern const char *Txt_Assignments;
char TitleFromDB[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1]; char TitleFromDB[Asg_MAX_BYTES_ASSIGNMENT_TITLE + 1];
if (AsgCod > 0) if (AsgCod > 0)
@ -135,5 +136,6 @@ void AsgRsc_GetTitleFromAsgCod (long AsgCod,char *Title,size_t TitleSize)
Str_Copy (Title,TitleFromDB,TitleSize); Str_Copy (Title,TitleFromDB,TitleSize);
} }
else else
Str_Copy (Title,"?",TitleSize); /***** Generic title for all assignments *****/
Str_Copy (Title,Txt_Assignments,TitleSize);
} }

View File

@ -112,6 +112,7 @@ void AttRsc_WriteAttEventInCrsProgram (long AttCod,bool PutFormToGo,
void AttRsc_GetTitleFromAttCod (long AttCod,char *Title,size_t TitleSize) void AttRsc_GetTitleFromAttCod (long AttCod,char *Title,size_t TitleSize)
{ {
extern const char *Txt_Control_of_class_attendance;
char TitleFromDB[Att_MAX_BYTES_ATTENDANCE_EVENT_TITLE + 1]; char TitleFromDB[Att_MAX_BYTES_ATTENDANCE_EVENT_TITLE + 1];
if (AttCod > 0) if (AttCod > 0)
@ -121,5 +122,6 @@ void AttRsc_GetTitleFromAttCod (long AttCod,char *Title,size_t TitleSize)
Str_Copy (Title,TitleFromDB,TitleSize); Str_Copy (Title,TitleFromDB,TitleSize);
} }
else else
Str_Copy (Title,"?",TitleSize); /***** Generic title for all attendance events *****/
Str_Copy (Title,Txt_Control_of_class_attendance,TitleSize);
} }

View File

@ -1986,7 +1986,10 @@ void Brw_GetParAndInitFileBrowser (void)
Brw_SetFullPathInTree (); Brw_SetFullPathInTree ();
/***** Get other parameters *****/ /***** Get other parameters *****/
if (Brw_GetIfCrsAssigWorksFileBrowser ()) if (Brw_GetIfProjectFileBrowser ())
/* Get project code */
Prj_SetPrjCod (Prj_GetParamPrjCod ());
else if (Brw_GetIfCrsAssigWorksFileBrowser ())
{ {
/* Get lists of the selected users if not already got */ /* Get lists of the selected users if not already got */
Usr_GetListsSelectedEncryptedUsrsCods (&Gbl.Usrs.Selected); Usr_GetListsSelectedEncryptedUsrsCods (&Gbl.Usrs.Selected);
@ -3320,7 +3323,7 @@ void Brw_ShowAgainFileBrowserOrWorks (void)
else if (Brw_GetIfCrsAssigWorksFileBrowser ()) else if (Brw_GetIfCrsAssigWorksFileBrowser ())
Brw_ShowFileBrowsersAsgWrkCrs (); Brw_ShowFileBrowsersAsgWrkCrs ();
else if (Brw_GetIfProjectFileBrowser ()) else if (Brw_GetIfProjectFileBrowser ())
Prj_ShowProjectWithFileBrowser (); Prj_ShowOneProject ();
else else
Brw_ShowFileBrowserNormal (); Brw_ShowFileBrowserNormal ();

View File

@ -196,25 +196,48 @@ void BrwRsc_WriteMrkFileNameInCrsProgram (long FilCod,bool PutFormToGo,
} }
/*****************************************************************************/ /*****************************************************************************/
/********************** Get file name from file code *************************/ /******************** Get document name from file code ***********************/
/*****************************************************************************/ /*****************************************************************************/
void BrwRsc_GetFileNameFromFilCod (long FilCod,char *FileName,size_t FileNameSize) void BrwRsc_GetDocTitleFromFilCod (long FilCod,char *Title,size_t TitleSize)
{ {
extern const char *Txt_Documents;
struct Brw_FileMetadata FileMetadata; struct Brw_FileMetadata FileMetadata;
if (FilCod > 0) if (FilCod > 0)
{ {
/***** Return nothing on error *****/ /***** Get file name *****/
FileName[0] = '\0'; // Return nothing on error
/***** Get file metadata *****/
FileMetadata.FilCod = FilCod; FileMetadata.FilCod = FilCod;
Brw_GetFileMetadataByCod (&FileMetadata); Brw_GetFileNameByCod (&FileMetadata);
/***** Copy file name into summary string *****/ /***** Copy file name into title *****/
Str_Copy (FileName,FileMetadata.FilFolLnk.Name,FileNameSize); Str_Copy (Title,FileMetadata.FilFolLnk.Name,TitleSize);
} }
else else
Str_Copy (FileName,"?",FileNameSize); /***** Generic title for all documents *****/
Str_Copy (Title,Txt_Documents,TitleSize);
}
/*****************************************************************************/
/******************* Get marks file name from file code **********************/
/*****************************************************************************/
void BrwRsc_GetMrkTitleFromFilCod (long FilCod,char *Title,size_t TitleSize)
{
extern const char *Txt_Marks_area;
struct Brw_FileMetadata FileMetadata;
if (FilCod > 0)
{
/***** Get file name *****/
FileMetadata.FilCod = FilCod;
Brw_GetFileNameByCod (&FileMetadata);
/***** Copy file name into title *****/
Str_Copy (Title,FileMetadata.FilFolLnk.Name,TitleSize);
}
else
/***** Generic title for marks area *****/
Str_Copy (Title,Txt_Marks_area,TitleSize);
} }

View File

@ -38,6 +38,7 @@ void BrwRsc_WriteDocFileNameInCrsProgram (long FilCod,bool PutFormToGo,
const char *Icon,const char *IconTitle); const char *Icon,const char *IconTitle);
void BrwRsc_WriteMrkFileNameInCrsProgram (long FilCod,bool PutFormToGo, void BrwRsc_WriteMrkFileNameInCrsProgram (long FilCod,bool PutFormToGo,
const char *Icon,const char *IconTitle); const char *Icon,const char *IconTitle);
void BrwRsc_GetFileNameFromFilCod (long FilCod,char *FileName,size_t FileNameSize); void BrwRsc_GetDocTitleFromFilCod (long FilCod,char *Title,size_t TitleSize);
void BrwRsc_GetMrkTitleFromFilCod (long FilCod,char *Title,size_t TitleSize);
#endif #endif

View File

@ -125,6 +125,7 @@ void CfeRsc_WriteCallForExamInCrsProgram (long ExaCod,bool PutFormToGo,
void CfeRsc_GetTitleFromExaCod (long ExaCod,char *Title,size_t TitleSize) void CfeRsc_GetTitleFromExaCod (long ExaCod,char *Title,size_t TitleSize)
{ {
extern const char *Txt_Call_for_exam; extern const char *Txt_Call_for_exam;
extern const char *Txt_Calls_for_exams;
struct Cfe_CallsForExams CallsForExams; struct Cfe_CallsForExams CallsForExams;
char SessionAndDate[Cfe_MAX_BYTES_SESSION_AND_DATE]; char SessionAndDate[Cfe_MAX_BYTES_SESSION_AND_DATE];
@ -145,5 +146,6 @@ void CfeRsc_GetTitleFromExaCod (long ExaCod,char *Title,size_t TitleSize)
Cfe_FreeMemCallForExam (&CallsForExams); Cfe_FreeMemCallForExam (&CallsForExams);
} }
else else
Str_Copy (Title,"?",TitleSize); /***** Generic title for all calls for exams *****/
Str_Copy (Title,Txt_Calls_for_exams,TitleSize);
} }

View File

@ -606,10 +606,11 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
TODO: Attach pdf files in multimedia. TODO: Attach pdf files in multimedia.
*/ */
#define Log_PLATFORM_VERSION "SWAD 22.31 (2022-09-28)" #define Log_PLATFORM_VERSION "SWAD 22.32 (2022-09-29)"
#define CSS_FILE "swad22.22.1.css" #define CSS_FILE "swad22.22.1.css"
#define JS_FILE "swad21.100.js" #define JS_FILE "swad21.100.js"
/* /*
Version 22.32: Sep 29, 2022 Code refactoring in program resources, assignments and projects. (332628 lines)
Version 22.31: Sep 28, 2022 New action to view one project. Version 22.31: Sep 28, 2022 New action to view one project.
Code refactoring in program resources. (332570 lines) Code refactoring in program resources. (332570 lines)
Version 22.30: Sep 28, 2022 New module swad_project_resource. (332490 lines) Version 22.30: Sep 28, 2022 New module swad_project_resource. (332490 lines)

View File

@ -118,6 +118,7 @@ void ExaRsc_WriteExamInCrsProgram (long ExaCod,bool PutFormToGo,
void ExaRsc_GetTitleFromExaCod (long ExaCod,char *Title,size_t TitleSize) void ExaRsc_GetTitleFromExaCod (long ExaCod,char *Title,size_t TitleSize)
{ {
extern const char *Txt_Exams;
char TitleFromDB[Exa_MAX_BYTES_TITLE + 1]; char TitleFromDB[Exa_MAX_BYTES_TITLE + 1];
if (ExaCod > 0) if (ExaCod > 0)
@ -127,5 +128,6 @@ void ExaRsc_GetTitleFromExaCod (long ExaCod,char *Title,size_t TitleSize)
Str_Copy (Title,TitleFromDB,TitleSize); Str_Copy (Title,TitleFromDB,TitleSize);
} }
else else
Str_Copy (Title,"?",TitleSize); /***** Generic title for all exams *****/
Str_Copy (Title,Txt_Exams,TitleSize);
} }

View File

@ -134,6 +134,7 @@ void ForRsc_WriteThreadInCrsProgram (long ThrCod,bool PutFormToGo,
void ForRsc_GetTitleFromThrCod (long ThrCod,char *Title,size_t TitleSize) void ForRsc_GetTitleFromThrCod (long ThrCod,char *Title,size_t TitleSize)
{ {
extern const char *Txt_Forum;
char Subject[Cns_MAX_BYTES_SUBJECT + 1]; char Subject[Cns_MAX_BYTES_SUBJECT + 1];
if (ThrCod > 0) if (ThrCod > 0)
@ -143,5 +144,5 @@ void ForRsc_GetTitleFromThrCod (long ThrCod,char *Title,size_t TitleSize)
Str_Copy (Title,Subject,TitleSize); Str_Copy (Title,Subject,TitleSize);
} }
else else
Str_Copy (Title,"?",TitleSize); Str_Copy (Title,Txt_Forum,TitleSize);
} }

View File

@ -30,6 +30,7 @@
#include "swad_form.h" #include "swad_form.h"
#include "swad_game.h" #include "swad_game.h"
#include "swad_game_database.h" #include "swad_game_database.h"
#include "swad_game_resource.h"
#include "swad_program_database.h" #include "swad_program_database.h"
/*****************************************************************************/ /*****************************************************************************/
@ -115,6 +116,7 @@ void GamRsc_WriteGameInCrsProgram (long GamCod,bool PutFormToGo,
void GamRsc_GetTitleFromGamCod (long GamCod,char *Title,size_t TitleSize) void GamRsc_GetTitleFromGamCod (long GamCod,char *Title,size_t TitleSize)
{ {
extern const char *Txt_Games;
char TitleFromDB[Gam_MAX_BYTES_TITLE + 1]; char TitleFromDB[Gam_MAX_BYTES_TITLE + 1];
if (GamCod > 0) if (GamCod > 0)
@ -124,5 +126,6 @@ void GamRsc_GetTitleFromGamCod (long GamCod,char *Title,size_t TitleSize)
Str_Copy (Title,TitleFromDB,TitleSize); Str_Copy (Title,TitleFromDB,TitleSize);
} }
else else
Str_Copy (Title,"?",TitleSize); /***** Generic title for all games *****/
Str_Copy (Title,Txt_Games,TitleSize);
} }

View File

@ -1022,7 +1022,7 @@ static void PrgRsc_WriteEmptyLinkInCrsProgram (__attribute__((unused)) long Cod,
} }
/*****************************************************************************/ /*****************************************************************************/
/* Get the title for a new resource from link title */ /************* Get the title for a new resource from link title **************/
/*****************************************************************************/ /*****************************************************************************/
static void PrgRsc_GetResourceTitleFromLink (struct Prg_Item *Item) static void PrgRsc_GetResourceTitleFromLink (struct Prg_Item *Item)
@ -1036,8 +1036,8 @@ static void PrgRsc_GetResourceTitleFromLink (struct Prg_Item *Item)
[PrgRsc_EXAM ] = ExaRsc_GetTitleFromExaCod, [PrgRsc_EXAM ] = ExaRsc_GetTitleFromExaCod,
[PrgRsc_GAME ] = GamRsc_GetTitleFromGamCod, [PrgRsc_GAME ] = GamRsc_GetTitleFromGamCod,
[PrgRsc_SURVEY ] = SvyRsc_GetTitleFromSvyCod, [PrgRsc_SURVEY ] = SvyRsc_GetTitleFromSvyCod,
[PrgRsc_DOCUMENT ] = BrwRsc_GetFileNameFromFilCod, [PrgRsc_DOCUMENT ] = BrwRsc_GetDocTitleFromFilCod,
[PrgRsc_MARKS ] = BrwRsc_GetFileNameFromFilCod, [PrgRsc_MARKS ] = BrwRsc_GetMrkTitleFromFilCod,
[PrgRsc_ATTENDANCE_EVENT] = AttRsc_GetTitleFromAttCod, [PrgRsc_ATTENDANCE_EVENT] = AttRsc_GetTitleFromAttCod,
[PrgRsc_FORUM_THREAD ] = ForRsc_GetTitleFromThrCod, [PrgRsc_FORUM_THREAD ] = ForRsc_GetTitleFromThrCod,
}; };

View File

@ -150,8 +150,6 @@ static long Prj_PrjCod = -1L;
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_SetPrjCod (long PrjCod);
static void Prj_ReqUsrsToSelect (void *Projects); static void Prj_ReqUsrsToSelect (void *Projects);
static void Prj_GetSelectedUsrsAndShowTheirPrjs (struct Prj_Projects *Projects); static void Prj_GetSelectedUsrsAndShowTheirPrjs (struct Prj_Projects *Projects);
static void Prj_ShowPrjsInCurrentPage (void *Projects); static void Prj_ShowPrjsInCurrentPage (void *Projects);
@ -182,10 +180,10 @@ static void Prj_PutIconToCreateNewPrj (struct Prj_Projects *Projects);
static void Prj_PutButtonToCreateNewPrj (struct Prj_Projects *Projects); static void Prj_PutButtonToCreateNewPrj (struct Prj_Projects *Projects);
static void Prj_PutIconToShowAllData (struct Prj_Projects *Projects); static void Prj_PutIconToShowAllData (struct Prj_Projects *Projects);
static void Prj_ShowOneProject (struct Prj_Projects *Projects, static void Prj_ShowProject (struct Prj_Projects *Projects,
unsigned NumIndex, unsigned NumIndex,
struct Prj_Project *Prj, struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView); Prj_ProjectView_t ProjectView);
static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults); static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults);
static void Prj_PutWarningIcon (void); static void Prj_PutWarningIcon (void);
static void Prj_PutIconToToggleProject (unsigned UniqueId, static void Prj_PutIconToToggleProject (unsigned UniqueId,
@ -267,7 +265,7 @@ static void Prj_PutIconOffLockedUnlocked (const struct Prj_Project *Prj);
/******* Set/get project code (used to pass parameter to file browser) *******/ /******* Set/get project code (used to pass parameter to file browser) *******/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_SetPrjCod (long PrjCod) void Prj_SetPrjCod (long PrjCod)
{ {
Prj_PrjCod = PrjCod; Prj_PrjCod = PrjCod;
} }
@ -383,7 +381,7 @@ static void Prj_GetSelectedUsrsAndShowTheirPrjs (struct Prj_Projects *Projects)
{ {
Usr_GetSelectedUsrsAndGoToAct (&Gbl.Usrs.Selected, Usr_GetSelectedUsrsAndGoToAct (&Gbl.Usrs.Selected,
Prj_ShowPrjsInCurrentPage,Projects, // when user(s) selected Prj_ShowPrjsInCurrentPage,Projects, // when user(s) selected
Prj_ReqUsrsToSelect,Projects); // when no user selected Prj_ReqUsrsToSelect,Projects); // when no user selected
} }
/*****************************************************************************/ /*****************************************************************************/
@ -529,7 +527,7 @@ static void Prj_ShowPrjsInCurrentPage (void *Projects)
} }
/* Show project */ /* Show project */
Prj_ShowOneProject ((struct Prj_Projects *) Projects, Prj_ShowProject ((struct Prj_Projects *) Projects,
NumIndex,&Prj,Prj_LIST_PROJECTS); NumIndex,&Prj,Prj_LIST_PROJECTS);
} }
@ -1143,19 +1141,45 @@ static void Prj_PutIconToShowAllData (struct Prj_Projects *Projects)
} }
/*****************************************************************************/ /*****************************************************************************/
/***** Show a project and (if possible) a file browser with its documents ****/ /************* Show a project followed by the list of projects ***************/
/*****************************************************************************/ /*****************************************************************************/
void Prj_ShowProjectWithFileBrowser (void) void Prj_ShowOneProject (void)
{
struct Prj_Projects Projects;
/***** Reset projects *****/
Prj_ResetProjects (&Projects);
/***** Get parameters *****/
Prj_GetParams (&Projects);
Projects.PrjCod = Prj_GetParamPrjCod ();
/***** Show project and (if possible) its file browser *****/
Prj_ShowOneProjectWithFileBrowser (&Projects);
/***** Show projects again *****/
Prj_ShowProjects (&Projects);
}
/*****************************************************************************/
/*** Show one project and (if possible) a file browser with its documents ****/
/*****************************************************************************/
void Prj_ShowOneProjectWithFileBrowser (struct Prj_Projects *Projects)
{ {
extern const char *Hlp_ASSESSMENT_Projects; extern const char *Hlp_ASSESSMENT_Projects;
struct Prj_Project Prj; struct Prj_Project Prj;
/***** Trivial check: show project only if code > 0 *****/
if (Projects->PrjCod <= 0)
return;
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
Prj_AllocMemProject (&Prj); Prj_AllocMemProject (&Prj);
/***** Get project data *****/ /***** Get project data *****/
Prj_SetPrjCod (Prj.PrjCod = Prj_GetParamPrjCod ()); Prj.PrjCod = Projects->PrjCod;
Prj_GetDataOfProjectByCod (&Prj); Prj_GetDataOfProjectByCod (&Prj);
/***** Begin box *****/ /***** Begin box *****/
@ -1163,8 +1187,17 @@ void Prj_ShowProjectWithFileBrowser (void)
NULL,NULL, NULL,NULL,
Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE); Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE);
/***** Show the project *****/ /***** Begin table *****/
Prj_ShowOneUniqueProject (&Prj); HTM_TABLE_BeginWidePadding (2);
/***** Write project head *****/
Prj_ShowProjectsHead (Projects,Prj_FILE_BROWSER_PROJECT);
/***** Show project *****/
Prj_ShowProject (Projects,0,&Prj,Prj_FILE_BROWSER_PROJECT);
/***** End table *****/
HTM_TABLE_End ();
/***** Show project file browsers *****/ /***** Show project file browsers *****/
if (Prj_CheckIfICanViewProjectFiles (Prj.PrjCod)) if (Prj_CheckIfICanViewProjectFiles (Prj.PrjCod))
@ -1177,30 +1210,6 @@ void Prj_ShowProjectWithFileBrowser (void)
Prj_FreeMemProject (&Prj); Prj_FreeMemProject (&Prj);
} }
/*****************************************************************************/
/***************** View / edit file browser of one project *******************/
/*****************************************************************************/
void Prj_ShowOneUniqueProject (struct Prj_Project *Prj)
{
struct Prj_Projects Projects;
/***** Reset projects *****/
Prj_ResetProjects (&Projects);
/***** Begin table *****/
HTM_TABLE_BeginWidePadding (2);
/***** Write project head *****/
Prj_ShowProjectsHead (&Projects,Prj_FILE_BROWSER_PROJECT);
/***** Show project *****/
Prj_ShowOneProject (&Projects,0,Prj,Prj_FILE_BROWSER_PROJECT);
/***** End table *****/
HTM_TABLE_End ();
}
/*****************************************************************************/ /*****************************************************************************/
/********************** Show print view of one project ***********************/ /********************** Show print view of one project ***********************/
/*****************************************************************************/ /*****************************************************************************/
@ -1233,7 +1242,7 @@ void Prj_PrintOneProject (void)
Prj_ShowProjectsHead (&Projects,Prj_PRINT_ONE_PROJECT); Prj_ShowProjectsHead (&Projects,Prj_PRINT_ONE_PROJECT);
/***** Write project *****/ /***** Write project *****/
Prj_ShowOneProject (&Projects,0,&Prj,Prj_PRINT_ONE_PROJECT); Prj_ShowProject (&Projects,0,&Prj,Prj_PRINT_ONE_PROJECT);
/***** End table *****/ /***** End table *****/
HTM_TABLE_End (); HTM_TABLE_End ();
@ -1246,10 +1255,10 @@ void Prj_PrintOneProject (void)
/***************************** Show one project ******************************/ /***************************** Show one project ******************************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowOneProject (struct Prj_Projects *Projects, static void Prj_ShowProject (struct Prj_Projects *Projects,
unsigned NumIndex, unsigned NumIndex,
struct Prj_Project *Prj, struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView) Prj_ProjectView_t ProjectView)
{ {
extern const char *Txt_Actions[Act_NUM_ACTIONS]; extern const char *Txt_Actions[Act_NUM_ACTIONS];
extern const char *Txt_Assigned_QUESTION; extern const char *Txt_Assigned_QUESTION;

View File

@ -172,6 +172,7 @@ struct Prj_Project
/***************************** Public prototypes *****************************/ /***************************** Public prototypes *****************************/
/*****************************************************************************/ /*****************************************************************************/
void Prj_SetPrjCod (long PrjCod);
long Prj_GetPrjCod (void); long Prj_GetPrjCod (void);
void Prj_ResetProjects (struct Prj_Projects *Projects); void Prj_ResetProjects (struct Prj_Projects *Projects);
@ -187,8 +188,8 @@ void Prj_PutParams (struct Prj_Filter *Filter,
long PrjCod); long PrjCod);
void Prj_GetParams (struct Prj_Projects *Projects); void Prj_GetParams (struct Prj_Projects *Projects);
void Prj_ShowProjectWithFileBrowser (void); void Prj_ShowOneProject (void);
void Prj_ShowOneUniqueProject (struct Prj_Project *Prj); void Prj_ShowOneProjectWithFileBrowser (struct Prj_Projects *Projects);
void Prj_PrintOneProject (void); void Prj_PrintOneProject (void);

View File

@ -43,7 +43,7 @@ void PrjRsc_GetLinkToProject (void)
struct Prj_Projects Projects; struct Prj_Projects Projects;
char Title[Prj_MAX_BYTES_TITLE + 1]; char Title[Prj_MAX_BYTES_TITLE + 1];
/***** Reset projects context *****/ /***** Reset projects *****/
Prj_ResetProjects (&Projects); Prj_ResetProjects (&Projects);
/***** Get parameters *****/ /***** Get parameters *****/
@ -60,6 +60,9 @@ void PrjRsc_GetLinkToProject (void)
Ale_ShowAlert (Ale_SUCCESS,Txt_Link_to_resource_X_copied_into_clipboard, Ale_ShowAlert (Ale_SUCCESS,Txt_Link_to_resource_X_copied_into_clipboard,
Title); Title);
/***** Show project and (if possible) its file browser *****/
Prj_ShowOneProjectWithFileBrowser (&Projects);
/***** Show projects again *****/ /***** Show projects again *****/
Prj_ShowProjects (&Projects); Prj_ShowProjects (&Projects);
} }

View File

@ -116,6 +116,7 @@ void SvyRsc_WriteSurveyInCrsProgram (long SvyCod,bool PutFormToGo,
void SvyRsc_GetTitleFromSvyCod (long SvyCod,char *Title,size_t TitleSize) void SvyRsc_GetTitleFromSvyCod (long SvyCod,char *Title,size_t TitleSize)
{ {
extern const char *Txt_Surveys;
char TitleFromDB[Svy_MAX_BYTES_SURVEY_TITLE + 1]; char TitleFromDB[Svy_MAX_BYTES_SURVEY_TITLE + 1];
if (SvyCod > 0) if (SvyCod > 0)
@ -125,5 +126,6 @@ void SvyRsc_GetTitleFromSvyCod (long SvyCod,char *Title,size_t TitleSize)
Str_Copy (Title,TitleFromDB,TitleSize); Str_Copy (Title,TitleFromDB,TitleSize);
} }
else else
Str_Copy (Title,"?",TitleSize); /***** Generic title for all surveys *****/
Str_Copy (Title,Txt_Surveys,TitleSize);
} }

View File

@ -4135,7 +4135,7 @@ const char *Txt_Calls_for_exams =
#elif L==9 // pt #elif L==9 // pt
"Chamadas para exames"; "Chamadas para exames";
#elif L==10 // tr #elif L==10 // tr
"Calls for exams"; // Çeviri lazim! "S&inodot;nav &ccedil;a&gbreve;r&inodot;lar&inodot;";
#endif #endif
const char *Txt_Can_not_create_the_folder_X_because_it_would_exceed_the_disk_quota = // Warning: it is very important to include %s in the following sentences const char *Txt_Can_not_create_the_folder_X_because_it_would_exceed_the_disk_quota = // Warning: it is very important to include %s in the following sentences
@ -11099,7 +11099,7 @@ const char *Txt_Document =
#elif L==5 // fr #elif L==5 // fr
"Document"; "Document";
#elif L==6 // gn #elif L==6 // gn
"Documento"; // Okoteve traducción "Terakuatia";
#elif L==7 // it #elif L==7 // it
"Documento"; "Documento";
#elif L==8 // pl #elif L==8 // pl
@ -11149,7 +11149,7 @@ const char *Txt_Documents =
#elif L==7 // it #elif L==7 // it
"Documenti"; "Documenti";
#elif L==8 // pl #elif L==8 // pl
"Documents"; // Potrzebujesz tlumaczenie "Dokumenty";
#elif L==9 // pt #elif L==9 // pt
"Documentos"; "Documentos";
#elif L==10 // tr #elif L==10 // tr
@ -12877,7 +12877,7 @@ const char *Txt_Exam =
#elif L==5 // fr #elif L==5 // fr
"Examen"; "Examen";
#elif L==6 // gn #elif L==6 // gn
"Kuaara'&atilde;"; "Aranduchauka";
#elif L==7 // it #elif L==7 // it
"Esame"; "Esame";
#elif L==8 // pl #elif L==8 // pl
@ -13041,7 +13041,7 @@ const char *Txt_EXAM_Open =
#elif L==5 // fr #elif L==5 // fr
"Ouvert"; "Ouvert";
#elif L==6 // gn #elif L==6 // gn
"Abierto"; // Okoteve traducción "Ojei";
#elif L==7 // it #elif L==7 // it
"Aperto"; "Aperto";
#elif L==8 // pl #elif L==8 // pl
@ -13158,7 +13158,7 @@ const char *Txt_EXAMS_ORDER[Exa_NUM_ORDERS] =
#elif L==5 // fr #elif L==5 // fr
"Examen" "Examen"
#elif L==6 // gn #elif L==6 // gn
"Kuaara'&atilde;" "Aranduchauka"
#elif L==7 // it #elif L==7 // it
"Esame" "Esame"
#elif L==8 // pl #elif L==8 // pl
@ -24133,7 +24133,7 @@ const char *Txt_MSG_Open =
#elif L==5 // fr #elif L==5 // fr
"Ouvert"; "Ouvert";
#elif L==6 // gn #elif L==6 // gn
"Abierto"; // Okoteve traducción "Ojei";
#elif L==7 // it #elif L==7 // it
"Aperto"; "Aperto";
#elif L==8 // pl #elif L==8 // pl
@ -25053,7 +25053,7 @@ const char *Txt_New_institution =
#elif L==5 // fr #elif L==5 // fr
"Nouvel &eacute;tablissement (universit&eacute;, coll&egrave;ge, &eacute;cole, acad&eacute;mie, organisation, entreprise...)"; "Nouvel &eacute;tablissement (universit&eacute;, coll&egrave;ge, &eacute;cole, acad&eacute;mie, organisation, entreprise...)";
#elif L==6 // gn #elif L==6 // gn
"Nueva instituci&oacute;n (universidad, instituto, colegio, academia, organizaci&oacute;n, empresa...)"; // Okoteve traducción "Nueva instituci&oacute;n (universidad, instituto, mbo'ehao, academia, organizaci&oacute;n, empresa...)"; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Nuova istituzione (universit&agrave;, istituto, scuola, accademia, organizzazione, societ&agrave;...)"; "Nuova istituzione (universit&agrave;, istituto, scuola, accademia, organizzazione, societ&agrave;...)";
#elif L==8 // pl #elif L==8 // pl
@ -25720,7 +25720,7 @@ const char *Txt_Nickname =
#elif L==5 // fr #elif L==5 // fr
"Surnom"; "Surnom";
#elif L==6 // gn #elif L==6 // gn
"Apodo"; // Okoteve traducción "Hero";
#elif L==7 // it #elif L==7 // it
"Nome-utente"; "Nome-utente";
#elif L==8 // pl #elif L==8 // pl
@ -28035,7 +28035,7 @@ const char *Txt_NOTIFY_EVENTS_SINGULAR[Ntf_NUM_NOTIFY_EVENTS] =
#elif L==5 // fr #elif L==5 // fr
"Fichier de document" "Fichier de document"
#elif L==6 // gn #elif L==6 // gn
"Documento" // Okoteve traducción "Terakuatia"
#elif L==7 // it #elif L==7 // it
"Documento" "Documento"
#elif L==8 // pl #elif L==8 // pl
@ -35778,7 +35778,7 @@ const char *Txt_RESOURCE_TYPES[PrgRsc_NUM_TYPES] =
#elif L==5 // fr #elif L==5 // fr
"Examen" "Examen"
#elif L==6 // gn #elif L==6 // gn
"Kuaara'&atilde;" "Aranduchauka"
#elif L==7 // it #elif L==7 // it
"Esame" "Esame"
#elif L==8 // pl #elif L==8 // pl
@ -35847,7 +35847,7 @@ const char *Txt_RESOURCE_TYPES[PrgRsc_NUM_TYPES] =
#elif L==5 // fr #elif L==5 // fr
"Document" "Document"
#elif L==6 // gn #elif L==6 // gn
"Documento" // Okoteve traducción "Terakuatia"
#elif L==7 // it #elif L==7 // it
"Documento" "Documento"
#elif L==8 // pl #elif L==8 // pl
@ -44749,7 +44749,7 @@ const char *Txt_STAT_COLOR_TYPES[Sta_NUM_COLOR_TYPES] =
#elif L==5 // fr #elif L==5 // fr
"couleur" "couleur"
#elif L==6 // gn #elif L==6 // gn
"color" // Okoteve traducción "sa'y"
#elif L==7 // it #elif L==7 // it
"colore" "colore"
#elif L==8 // pl #elif L==8 // pl