Version 17.2.2

This commit is contained in:
Antonio Cañas Vargas 2017-09-17 18:55:02 +02:00
parent e8fa04ae43
commit 44d65b3b91
3 changed files with 119 additions and 35 deletions

View File

@ -259,6 +259,7 @@
// 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.2.2: Sep 17, 2017 New option for projects. Not finished. (? lines)
Version 17.2.1: Sep 17, 2017 New option for projects. Not finished. (229884 lines)
Version 17.2: Sep 17, 2017 New option for projects. Not finished. (229575 lines)
12 changes necessary in database:

View File

@ -74,7 +74,7 @@ static void Prj_PutFormToSelectWhichGroupsToShow (void);
static void Prj_ParamsWhichGroupsToShow (void);
static void Prj_ShowOneProject (long PrjCod,bool PrintView);
static void Prj_WritePrjAuthor (struct Project *Prj);
static void Prj_WriteAssignmentFolder (struct Project *Prj,bool PrintView);
static void Prj_WriteProjectFolder (struct Project *Prj,bool PrintView);
static void Prj_GetParamPrjOrder (void);
static void Prj_PutFormsToRemEditOnePrj (long PrjCod,bool Hidden);
@ -190,7 +190,7 @@ static void Prj_PutHeadForSeeing (bool PrintView)
{
extern const char *Txt_START_END_TIME_HELP[Dat_NUM_START_END_TIME];
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Assignment;
extern const char *Txt_Project;
extern const char *Txt_Upload_files_QUESTION;
extern const char *Txt_Folder;
Dat_StartEndTime_t Order;
@ -234,7 +234,7 @@ static void Prj_PutHeadForSeeing (bool PrintView)
"%s"
"</th>"
"</tr>",
Txt_Assignment,
Txt_Project,
Txt_Upload_files_QUESTION,
Txt_Folder);
}
@ -446,7 +446,7 @@ static void Prj_ShowOneProject (long PrjCod,bool PrintView)
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,"\">");
if (Prj.SendWork == Prj_SEND_WORK)
Prj_WriteAssignmentFolder (&Prj,PrintView);
Prj_WriteProjectFolder (&Prj,PrintView);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
@ -500,7 +500,7 @@ static void Prj_WritePrjAuthor (struct Project *Prj)
/*********************** Write the folder of a project ***********************/
/*****************************************************************************/
static void Prj_WriteAssignmentFolder (struct Project *Prj,bool PrintView)
static void Prj_WriteProjectFolder (struct Project *Prj,bool PrintView)
{
extern const char *Txt_Upload_file_or_create_folder_in_FOLDER;
extern const char *Txt_Folder;
@ -940,7 +940,7 @@ void Prj_ReqRemProject (void)
void Prj_RemoveProject (void)
{
extern const char *Txt_Assignment_X_removed;
extern const char *Txt_Project_X_removed;
char Query[512];
struct Project Prj;
@ -965,7 +965,7 @@ void Prj_RemoveProject (void)
DB_QueryDELETE (Query,"can not remove project");
/***** Write message to show the change made *****/
sprintf (Gbl.Alert.Txt,Txt_Assignment_X_removed,
sprintf (Gbl.Alert.Txt,Txt_Project_X_removed,
Prj.Title);
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
@ -979,7 +979,7 @@ void Prj_RemoveProject (void)
void Prj_HideProject (void)
{
extern const char *Txt_Assignment_X_is_now_hidden;
extern const char *Txt_Project_X_is_now_hidden;
char Query[512];
struct Project Prj;
@ -997,7 +997,7 @@ void Prj_HideProject (void)
DB_QueryUPDATE (Query,"can not hide project");
/***** Write message to show the change made *****/
sprintf (Gbl.Alert.Txt,Txt_Assignment_X_is_now_hidden,
sprintf (Gbl.Alert.Txt,Txt_Project_X_is_now_hidden,
Prj.Title);
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
@ -1011,7 +1011,7 @@ void Prj_HideProject (void)
void Prj_ShowProject (void)
{
extern const char *Txt_Assignment_X_is_now_visible;
extern const char *Txt_Project_X_is_now_visible;
char Query[512];
struct Project Prj;
@ -1029,7 +1029,7 @@ void Prj_ShowProject (void)
DB_QueryUPDATE (Query,"can not show project");
/***** Write message to show the change made *****/
sprintf (Gbl.Alert.Txt,Txt_Assignment_X_is_now_visible,
sprintf (Gbl.Alert.Txt,Txt_Project_X_is_now_visible,
Prj.Title);
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
@ -1070,7 +1070,7 @@ void Prj_RequestCreatOrEditPrj (void)
extern const char *Txt_Create_project;
extern const char *Txt_Save;
struct Project Prj;
bool ItsANewAssignment;
bool ItsANewProject;
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Get parameters *****/
@ -1079,10 +1079,10 @@ void Prj_RequestCreatOrEditPrj (void)
Gbl.Prjs.CurrentPage = Pag_GetParamPagNum (Pag_PROJECTS);
/***** Get the code of the project *****/
ItsANewAssignment = ((Prj.PrjCod = Prj_GetParamPrjCod ()) == -1L);
ItsANewProject = ((Prj.PrjCod = Prj_GetParamPrjCod ()) == -1L);
/***** Get from the database the data of the project *****/
if (ItsANewAssignment)
if (ItsANewProject)
{
/* Initialize to empty project */
Prj.PrjCod = -1L;
@ -1104,7 +1104,7 @@ void Prj_RequestCreatOrEditPrj (void)
}
/***** Start form *****/
if (ItsANewAssignment)
if (ItsANewProject)
{
Act_FormStart (ActNewPrj);
Gbl.Prjs.PrjCodToEdit = -1L;
@ -1117,7 +1117,7 @@ void Prj_RequestCreatOrEditPrj (void)
Prj_PutParams ();
/***** Start box and table *****/
if (ItsANewAssignment)
if (ItsANewProject)
Box_StartBoxTable (NULL,Txt_New_project,NULL,
Hlp_ASSESSMENT_Projects_new_project,Box_NOT_CLOSABLE,2);
else
@ -1167,7 +1167,7 @@ void Prj_RequestCreatOrEditPrj (void)
"<textarea id=\"Txt\" name=\"Txt\""
" cols=\"60\" rows=\"10\">",
The_ClassForm[Gbl.Prefs.Theme],Txt_Description);
if (!ItsANewAssignment)
if (!ItsANewProject)
fprintf (Gbl.F.Out,"%s",Txt);
fprintf (Gbl.F.Out,"</textarea>"
"</td>"
@ -1177,7 +1177,7 @@ void Prj_RequestCreatOrEditPrj (void)
Prj_ShowLstGrpsToEditProject (Prj.PrjCod);
/***** End table, send button and end box *****/
if (ItsANewAssignment)
if (ItsANewProject)
Box_EndBoxTableWithButton (Btn_CREATE_BUTTON,Txt_Create_project);
else
Box_EndBoxTableWithButton (Btn_CONFIRM_BUTTON,Txt_Save);
@ -1263,15 +1263,15 @@ void Prj_RecFormProject (void)
extern const char *Txt_You_can_not_disable_file_uploading_once_folders_have_been_created;
struct Project OldPrj; // Current assigment data in database
struct Project NewPrj; // Project data received from form
bool ItsANewAssignment;
bool NewAssignmentIsCorrect = true;
bool ItsANewProject;
bool NewProjectIsCorrect = true;
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Get the code of the project *****/
NewPrj.PrjCod = Prj_GetParamPrjCod ();
ItsANewAssignment = (NewPrj.PrjCod < 0);
ItsANewProject = (NewPrj.PrjCod < 0);
if (ItsANewAssignment)
if (ItsANewProject)
{
/***** Reset old (current, not existing) project data *****/
OldPrj.PrjCod = -1L;
@ -1311,7 +1311,7 @@ void Prj_RecFormProject (void)
/* If title of project was in database... */
if (Prj_CheckIfSimilarProjectsExists ("Title",NewPrj.Title,NewPrj.PrjCod))
{
NewAssignmentIsCorrect = false;
NewProjectIsCorrect = false;
sprintf (Gbl.Alert.Txt,Txt_Already_existed_a_project_with_the_title_X,
NewPrj.Title);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
@ -1324,7 +1324,7 @@ void Prj_RecFormProject (void)
{
if (Prj_CheckIfSimilarProjectsExists ("Folder",NewPrj.Folder,NewPrj.PrjCod)) // If folder of project was in database...
{
NewAssignmentIsCorrect = false;
NewProjectIsCorrect = false;
sprintf (Gbl.Alert.Txt,Txt_Already_existed_a_project_with_the_folder_X,
NewPrj.Folder);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
@ -1332,7 +1332,7 @@ void Prj_RecFormProject (void)
}
else // Folder name not valid
{
NewAssignmentIsCorrect = false;
NewProjectIsCorrect = false;
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
}
}
@ -1342,7 +1342,7 @@ void Prj_RecFormProject (void)
{
if (Brw_CheckIfExistsFolderAssigmentForAnyUsr (OldPrj.Folder))
{
NewAssignmentIsCorrect = false;
NewProjectIsCorrect = false;
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_disable_file_uploading_once_folders_have_been_created);
}
}
@ -1351,17 +1351,17 @@ void Prj_RecFormProject (void)
}
else // If there is not a project title
{
NewAssignmentIsCorrect = false;
NewProjectIsCorrect = false;
Ale_ShowAlert (Ale_WARNING,Txt_You_must_specify_the_title_of_the_project);
}
/***** Create a new project or update an existing one *****/
if (NewAssignmentIsCorrect)
if (NewProjectIsCorrect)
{
/* Get groups for this projects */
Grp_GetParCodsSeveralGrps ();
if (ItsANewAssignment)
if (ItsANewProject)
{
Prj_CreateProject (&NewPrj,Txt); // Add new project to database
@ -1373,8 +1373,8 @@ void Prj_RecFormProject (void)
{
if (OldPrj.Folder[0] && NewPrj.Folder[0])
if (strcmp (OldPrj.Folder,NewPrj.Folder)) // Folder name has changed
NewAssignmentIsCorrect = Brw_UpdateFoldersAssigmentsIfExistForAllUsrs (OldPrj.Folder,NewPrj.Folder);
if (NewAssignmentIsCorrect)
NewProjectIsCorrect = Brw_UpdateFoldersAssigmentsIfExistForAllUsrs (OldPrj.Folder,NewPrj.Folder);
if (NewProjectIsCorrect)
{
Prj_UpdateProject (&NewPrj,Txt);
@ -1777,8 +1777,7 @@ unsigned Prj_GetNumCoursesWithProjects (Sco_Scope_t Scope)
/*****************************************************************************/
/************************** Get number of projects ***************************/
/*****************************************************************************/
// Returns the number of projects
// in this location (all the platform, current degree or current course)
// Returns the number of projects in this location
unsigned Prj_GetNumProjects (Sco_Scope_t Scope)
{

View File

@ -3858,7 +3858,7 @@ const char *Txt_Banner =
const char *Txt_Banner_X_removed = // Warning: it is very important to include %s in the following sentences
#if L==1
"Banner <strong>%s</strong> eliminado."; // Necessita traduccio
"Banner <strong>%s</strong> eliminat.";
#elif L==2
"Werbebanner <strong>%s</strong> entfernt.";
#elif L==3
@ -3874,7 +3874,7 @@ const char *Txt_Banner_X_removed = // Warning: it is very important to include %
#elif L==8
"Banner <strong>%s</strong> usuniety.";
#elif L==9
"Banner <strong>%s</strong> removed."; // Necessita de tradução
"Banner <strong>%s</strong> removido.";
#endif
const char *Txt_Banners =
@ -30638,6 +30638,90 @@ const char *Txt_Private_available_to_certain_users_identified =
"Privado, dispon&iacute;vel para alguns usu&aacute;rios identificados";
#endif
const char *Txt_Project =
#if L==1
"Projecte";
#elif L==2
"Projekt";
#elif L==3
"Project";
#elif L==4
"Proyecto";
#elif L==5
"Projet";
#elif L==6
"Proyecto"; // Okoteve traducción
#elif L==7
"Progetto";
#elif L==8
"Projekt";
#elif L==9
"Projeto";
#endif
const char *Txt_Project_X_is_now_hidden = // Warning: it is very important to include %s in the following sentences
#if L==1
"El projecte <strong>%s</strong> ara est&agrave; ocult.";
#elif L==2
"Die Projekt <strong>%s</strong> ist jetzt ausgeblendet.";
#elif L==3
"Project <strong>%s</strong> is now hidden.";
#elif L==4
"El proyecto <strong>%s</strong> ahora est&aacute; oculto.";
#elif L==5
"Le project <strong>%s</strong> est maintenant cach&eacute;.";
#elif L==6
"El proyecto <strong>%s</strong> ahora est&aacute; oculto."; // Okoteve traducción
#elif L==7
"Il progetto <strong>%s</strong> &egrave; ora nascosto.";
#elif L==8
"Projekt <strong>%s</strong> jest ukryte.";
#elif L==9
"O projeto <strong>%s</strong> &eacute; agora oculto.";
#endif
const char *Txt_Project_X_is_now_visible = // Warning: it is very important to include %s in the following sentences
#if L==1
"El projecte <strong>%s</strong> ara est&agrave; visible.";
#elif L==2
"Die Projekt <strong>%s</strong> ist jetzt sichtbar.";
#elif L==3
"Project <strong>%s</strong> is now visible.";
#elif L==4
"El proyecto <strong>%s</strong> ahora est&aacute; visible.";
#elif L==5
"Le project <strong>%s</strong> est maintenant visible.";
#elif L==6
"El proyecto <strong>%s</strong> ahora est&aacute; visible."; // Okoteve traducción
#elif L==7
"Il progetto <strong>%s</strong> &egrave; ora nascosto.";
#elif L==8
"Projekt <strong>%s</strong> jest teraz widoczne.";
#elif L==9
"O projeto <strong>%s</strong> &eacute; agora vis&iacute;vel.";
#endif
const char *Txt_Project_X_removed = // Warning: it is very important to include %s in the following sentences
#if L==1
"Projecte <strong>%s</strong> eliminat.";
#elif L==2
"Projekt <strong>%s</strong> entfernt.";
#elif L==3
"Project <strong>%s</strong> removed.";
#elif L==4
"Proyecto <strong>%s</strong> eliminado.";
#elif L==5
"Projet <strong>%s</strong> supprim&eacute;.";
#elif L==6
"Proyecto <strong>%s</strong> eliminado."; // Okoteve traducción
#elif L==7
"Progetto <strong>%s</strong> rimosso.";
#elif L==8
"Projekt <strong>%s</strong> usuniety.";
#elif L==9
"Projeto <strong>%s</strong> removido.";
#endif
const char *Txt_Projects =
#if L==1
"Projectes";