From 2a04ef351da35b0b6d532326b625a0083c81dec2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Sat, 7 Oct 2017 22:08:38 +0200 Subject: [PATCH] Version 17.21 --- sql/swad.sql | 8 +- swad_changelog.h | 16 +++- swad_database.c | 10 ++- swad_file_browser.c | 17 ++-- swad_project.c | 186 +++++++++++++++++++------------------------- swad_project.h | 4 +- swad_text.c | 72 ++++++++--------- 7 files changed, 156 insertions(+), 157 deletions(-) diff --git a/sql/swad.sql b/sql/swad.sql index 74313b81a..777d36c6a 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -948,8 +948,8 @@ CREATE TABLE IF NOT EXISTS projects ( Preassigned ENUM('N','Y') NOT NULL DEFAULT 'N', NumStds INT NOT NULL DEFAULT 1, Proposal ENUM('new','modified','unmodified') NOT NULL DEFAULT 'new', - StartTime DATETIME NOT NULL, - EndTime DATETIME NOT NULL, + CreatTime DATETIME NOT NULL, + ModifTime DATETIME NOT NULL, Title VARCHAR(2047) NOT NULL, Description TEXT NOT NULL, Knowledge TEXT NOT NULL, @@ -957,7 +957,9 @@ CREATE TABLE IF NOT EXISTS projects ( URL VARCHAR(255) NOT NULL, UNIQUE INDEX(PrjCod), INDEX(CrsCod,Hidden), - INDEX(CrsCod,DptCod)); + INDEX(CrsCod,CreatTime), + INDEX(CrsCod,ModifTime), + INDEX(CrsCod,DptCod); -- -- Table sessions: stores the information of open sessions -- diff --git a/swad_changelog.h b/swad_changelog.h index 3eafa85a2..b9046231c 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -256,13 +256,27 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 17.20.7 (2017-10-07)" +#define Log_PLATFORM_VERSION "SWAD 17.21 (2017-10-07)" #define CSS_FILE "swad17.0.css" #define JS_FILE "swad17.17.1.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.21: Oct 07, 2017 Start and end dates in projects are replaced by time of creation and time of modification. (233106 lines) + 8 changes necessary in database: +ALTER TABLE projects ADD COLUMN CreatTime DATETIME AFTER EndTime; +ALTER TABLE projects ADD COLUMN ModifTime DATETIME AFTER CreatTime; +UPDATE projects SET CreatTime=StartTime; +UPDATE projects SET ModifTime=CreatTime; +ALTER TABLE projects CHANGE COLUMN CreatTime CreatTime DATETIME NOT NULL; +ALTER TABLE projects CHANGE COLUMN ModifTime ModifTime DATETIME NOT NULL; +ALTER TABLE projects ADD INDEX(CrsCod,CreatTime); +ALTER TABLE projects ADD INDEX(CrsCod,ModifTime); + 2 more changes necessary in database: +ALTER TABLE projects DROP COLUMN StartTime; +ALTER TABLE projects DROP COLUMN EndTime; + Version 17.20.7: Oct 07, 2017 Only publishers can remove subtrees in project documents. (233105 lines) Version 17.20.6: Oct 07, 2017 Fixed bug in project documents. (233027 lines) Version 17.20.5: Oct 07, 2017 Title of project is now a link to show the project and its documents. (233024 lines) diff --git a/swad_database.c b/swad_database.c index d8c58dee5..8fb8af89e 100644 --- a/swad_database.c +++ b/swad_database.c @@ -2016,8 +2016,8 @@ mysql> DESCRIBE projects; | Preassigned | enum('N','Y') | NO | | N | | | NumStds | int(11) | NO | | 1 | | | Proposal | enum('new','modified','unmodified') | NO | | new | | -| StartTime | datetime | NO | | NULL | | -| EndTime | datetime | NO | | NULL | | +| CreatTime | datetime | NO | | NULL | | +| ModifTime | datetime | NO | | NULL | | | Title | varchar(2047) | NO | | NULL | | | Description | text | NO | | NULL | | | Knowledge | text | NO | | NULL | | @@ -2034,8 +2034,8 @@ mysql> DESCRIBE projects; "Preassigned ENUM('N','Y') NOT NULL DEFAULT 'N'," "NumStds INT NOT NULL DEFAULT 1," "Proposal ENUM('new','modified','unmodified') NOT NULL DEFAULT 'new'," - "StartTime DATETIME NOT NULL," - "EndTime DATETIME NOT NULL," + "CreatTime DATETIME NOT NULL," + "ModifTime DATETIME NOT NULL," "Title VARCHAR(2047) NOT NULL," // Prj_MAX_BYTES_PROJECT_TITLE "Description TEXT NOT NULL," // Cns_MAX_BYTES_TEXT "Knowledge TEXT NOT NULL," // Cns_MAX_BYTES_TEXT @@ -2043,6 +2043,8 @@ mysql> DESCRIBE projects; "URL VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "UNIQUE INDEX(PrjCod)," "INDEX(CrsCod,Hidden)," + "INDEX(CrsCod,CreatTime)," + "INDEX(CrsCod,ModifTime)," "INDEX(CrsCod,DptCod))"); /***** Table sessions *****/ diff --git a/swad_file_browser.c b/swad_file_browser.c index 68721be59..1d9087e17 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -3929,18 +3929,25 @@ static void Brw_PutIconsFileBrowser (void) break; case Brw_ICON_VIEW: Ico_PutContextualIconToView (Brw_ActFromAdmToSee[Gbl.FileBrowser.Type], - Brw_PutHiddenParamFullTreeIfSelected); + Brw_PutHiddenParamFullTreeIfSelected); break; case Brw_ICON_EDIT: Ico_PutContextualIconToEdit (Brw_ActFromSeeToAdm[Gbl.FileBrowser.Type], - Brw_PutHiddenParamFullTreeIfSelected); + Brw_PutHiddenParamFullTreeIfSelected); break; } /***** Put icon to show a figure *****/ - if (Gbl.FileBrowser.Type != Brw_ADMI_WORKS_CRS && - Gbl.FileBrowser.Type != Brw_ADMI_ASSIG_CRS) - Brw_PutIconShowFigure (); + switch (Gbl.FileBrowser.Type) + { + case Brw_ADMI_WORKS_CRS: + case Brw_ADMI_ASSIG_CRS: + case Brw_ADMI_DOCUM_PRJ: + break; + default: + Brw_PutIconShowFigure (); + break; + } } static void Brw_PutIconShowFigure (void) diff --git a/swad_project.c b/swad_project.c index 7b5008535..3138ff082 100644 --- a/swad_project.c +++ b/swad_project.c @@ -60,8 +60,6 @@ typedef enum Prj_EDIT_ONE_PROJECT, } Prj_ProjectView_t; -#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 @@ -647,42 +645,38 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie } fprintf (Gbl.F.Out,""); - /* Start date/time */ + /* Creation date/time */ UniqueId++; - fprintf (Gbl.F.Out,"Hidden ? (Prj->Open ? "DATE_GREEN_LIGHT" : - "DATE_RED_LIGHT") : - (Prj->Open ? "DATE_GREEN" : - "DATE_RED")); + Prj->Hidden ? "DATE_BLUE_LIGHT" : + "DATE_BLUE"); if (ProjectView == Prj_LIST_PROJECTS) fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); fprintf (Gbl.F.Out,"\">" "" "", - UniqueId,Prj->TimeUTC[Dat_START_TIME], + UniqueId,Prj->CreatTime, (unsigned) Gbl.Prefs.DateFormat,Txt_Today); - /* End date/time */ + /* Modification date/time */ UniqueId++; - fprintf (Gbl.F.Out,"Hidden ? (Prj->Open ? "DATE_GREEN_LIGHT" : - "DATE_RED_LIGHT") : - (Prj->Open ? "DATE_GREEN" : - "DATE_RED")); + Prj->Hidden ? "DATE_BLUE_LIGHT" : + "DATE_BLUE"); if (ProjectView == Prj_LIST_PROJECTS) fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); fprintf (Gbl.F.Out,"\">" "" "", - UniqueId,Prj->TimeUTC[Dat_END_TIME], + UniqueId,Prj->ModifTime, (unsigned) Gbl.Prefs.DateFormat,Txt_Today); /* Project title */ @@ -878,36 +872,32 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj) /***** Start date/time *****/ UniqueId++; - fprintf (Gbl.F.Out,"" + fprintf (Gbl.F.Out,"" "" "", UniqueId, Gbl.RowEvenOdd, - Prj->Hidden ? (Prj->Open ? "DATE_GREEN_LIGHT" : - "DATE_RED_LIGHT") : - (Prj->Open ? "DATE_GREEN" : - "DATE_RED"), - UniqueId,Prj->TimeUTC[Dat_START_TIME], + Prj->Hidden ? "DATE_BLUE_LIGHT" : + "DATE_BLUE", + UniqueId,Prj->CreatTime, (unsigned) Gbl.Prefs.DateFormat,Txt_Today); /***** End date/time *****/ UniqueId++; - fprintf (Gbl.F.Out,"" + fprintf (Gbl.F.Out,"" "" "", UniqueId, Gbl.RowEvenOdd, - Prj->Hidden ? (Prj->Open ? "DATE_GREEN_LIGHT" : - "DATE_RED_LIGHT") : - (Prj->Open ? "DATE_GREEN" : - "DATE_RED"), - UniqueId,Prj->TimeUTC[Dat_END_TIME], + Prj->Hidden ? "DATE_BLUE_LIGHT" : + "DATE_BLUE", + UniqueId,Prj->ModifTime, (unsigned) Gbl.Prefs.DateFormat,Txt_Today); /***** Project title *****/ @@ -1905,24 +1895,24 @@ void Prj_GetListProjects (void) switch (Gbl.Prjs.SelectedOrder) { case Prj_ORDER_START_TIME: - sprintf (OrderBySubQuery,"projects.StartTime DESC," - "projects.EndTime DESC," + sprintf (OrderBySubQuery,"projects.CreatTime DESC," + "projects.ModifTime DESC," "projects.Title"); break; case Prj_ORDER_END_TIME: - sprintf (OrderBySubQuery,"projects.EndTime DESC," - "projects.StartTime DESC," + sprintf (OrderBySubQuery,"projects.ModifTime DESC," + "projects.CreatTime DESC," "projects.Title"); break; case Prj_ORDER_TITLE: sprintf (OrderBySubQuery,"projects.Title," - "projects.StartTime DESC," - "projects.EndTime DESC"); + "projects.CreatTime DESC," + "projects.ModifTime DESC"); break; case Prj_ORDER_DEPARTMENT: sprintf (OrderBySubQuery,"departments.FullName," - "projects.StartTime DESC," - "projects.EndTime DESC," + "projects.CreatTime DESC," + "projects.ModifTime DESC," "projects.Title"); break; } @@ -2054,9 +2044,8 @@ void Prj_GetDataOfProjectByCod (struct Project *Prj) { /***** Build query *****/ sprintf (Query,"SELECT PrjCod,CrsCod,DptCod,Hidden,Preassigned,NumStds,Proposal," - "UNIX_TIMESTAMP(StartTime)," - "UNIX_TIMESTAMP(EndTime)," - "NOW() BETWEEN StartTime AND EndTime," + "UNIX_TIMESTAMP(CreatTime)," + "UNIX_TIMESTAMP(ModifTime)," "Title,Description,Knowledge,Materials,URL" " FROM projects" " WHERE PrjCod=%ld AND CrsCod=%ld", @@ -2069,14 +2058,13 @@ void Prj_GetDataOfProjectByCod (struct Project *Prj) row[ 4]: Preassigned row[ 5]: NumStds row[ 6]: Proposal - row[ 7]: UNIX_TIMESTAMP(StartTime) - row[ 8]: UNIX_TIMESTAMP(EndTime) - row[ 9]: NOW() BETWEEN StartTime AND EndTime - row[10]: Title - row[11]: Description - row[12]: Knowledge - row[13]: Materials - row[14]: URL + row[ 7]: UNIX_TIMESTAMP(CreatTime) + row[ 8]: UNIX_TIMESTAMP(ModifTime) + row[ 9]: Title + row[10]: Description + row[11]: Knowledge + row[12]: Materials + row[13]: URL */ /***** Get data of project *****/ @@ -2117,14 +2105,13 @@ static void Prj_GetDataOfProject (struct Project *Prj,const char *Query) row[ 4]: Preassigned row[ 5]: NumStds row[ 6]: Proposal - row[ 7]: UNIX_TIMESTAMP(StartTime) - row[ 8]: UNIX_TIMESTAMP(EndTime) - row[ 9]: NOW() BETWEEN StartTime AND EndTime - row[10]: Title - row[11]: Description - row[12]: Knowledge - row[13]: Materials - row[14]: URL + row[ 7]: UNIX_TIMESTAMP(CreatTime) + row[ 8]: UNIX_TIMESTAMP(ModifTime) + row[ 9]: Title + row[10]: Description + row[11]: Knowledge + row[12]: Materials + row[13]: URL */ /* Get code of the project (row[0]) */ @@ -2161,33 +2148,30 @@ static void Prj_GetDataOfProject (struct Project *Prj,const char *Query) break; } - /* Get start date (row[7] holds the start UTC time) */ - Prj->TimeUTC[Dat_START_TIME] = Dat_GetUNIXTimeFromStr (row[7]); + /* Get creation date/time (row[7] holds the creation UTC time) */ + Prj->CreatTime = Dat_GetUNIXTimeFromStr (row[7]); - /* Get end date (row[8] holds the end UTC time) */ - Prj->TimeUTC[Dat_END_TIME ] = Dat_GetUNIXTimeFromStr (row[8]); + /* Get modification date/time (row[8] holds the modification UTC time) */ + Prj->ModifTime = Dat_GetUNIXTimeFromStr (row[8]); - /* Get whether the project is open or closed (row[9]) */ - Prj->Open = (row[9][0] == '1'); - - /* Get the title of the project (row[10]) */ - Str_Copy (Prj->Title,row[10], + /* Get the title of the project (row[9]) */ + Str_Copy (Prj->Title,row[9], Prj_MAX_BYTES_PROJECT_TITLE); - /* Get the description of the project (row[11]) */ - Str_Copy (Prj->Description,row[11], + /* Get the description of the project (row[10]) */ + Str_Copy (Prj->Description,row[10], Cns_MAX_BYTES_TEXT); - /* Get the required knowledge for the project (row[12]) */ - Str_Copy (Prj->Knowledge,row[12], + /* Get the required knowledge for the project (row[11]) */ + Str_Copy (Prj->Knowledge,row[11], Cns_MAX_BYTES_TEXT); - /* Get the required materials for the project (row[13]) */ - Str_Copy (Prj->Materials,row[13], + /* Get the required materials for the project (row[12]) */ + Str_Copy (Prj->Materials,row[12], Cns_MAX_BYTES_TEXT); - /* Get the URL of the project (row[14]) */ - Str_Copy (Prj->URL,row[14], + /* Get the URL of the project (row[13]) */ + Str_Copy (Prj->URL,row[13], Cns_MAX_BYTES_WWW); } @@ -2208,9 +2192,8 @@ static void Prj_ResetProject (struct Project *Prj) Prj->Preassigned = Prj_PREASSIGNED_DEFAULT; Prj->NumStds = 1; Prj->Proposal = Prj_PROPOSAL_DEFAULT; - Prj->TimeUTC[Dat_START_TIME] = - Prj->TimeUTC[Dat_END_TIME ] = (time_t) 0; - Prj->Open = false; + Prj->CreatTime = + Prj->ModifTime = (time_t) 0; Prj->Title[0] = '\0'; Prj->DptCod = -1L; // Unknown department Prj->Description[0] = '\0'; @@ -2483,10 +2466,8 @@ static void Prj_RequestCreatOrEditPrj (long PrjCod) { /* Initialize to empty project */ Prj_ResetProject (&Prj); - Prj.TimeUTC[Dat_START_TIME] = Gbl.StartExecutionTimeUTC; - Prj.TimeUTC[Dat_END_TIME ] = Gbl.StartExecutionTimeUTC + - Prj_INTERVAL_DEFAULT; - Prj.Open = true; + Prj.CreatTime = Gbl.StartExecutionTimeUTC; + Prj.ModifTime = Gbl.StartExecutionTimeUTC; Prj.DptCod = Gbl.Usrs.Me.UsrDat.Tch.DptCod; // Default: my department } else @@ -2583,9 +2564,6 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject) The_ClassForm[Gbl.Prefs.Theme],Txt_Title, Prj_MAX_CHARS_PROJECT_TITLE,Prj->Title); - /* Project start and end dates */ - Dat_PutFormStartEndClientLocalDateTimes (Prj->TimeUTC,Dat_FORM_SECONDS_ON); - /* Department */ fprintf (Gbl.F.Out,"" "" @@ -2804,10 +2782,6 @@ void Prj_RecFormProject (void) if (ICanEditProject) { - /* Get start/end date-times */ - Prj.TimeUTC[Dat_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC"); - Prj.TimeUTC[Dat_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" ); - /* Get project title */ Par_GetParToText ("Title",Prj.Title,Prj_MAX_BYTES_PROJECT_TITLE); @@ -2840,13 +2814,6 @@ void Prj_RecFormProject (void) /* Get degree WWW */ Par_GetParToText ("URL",Prj.URL,Cns_MAX_BYTES_WWW); - /***** Adjust dates *****/ - if (Prj.TimeUTC[Dat_START_TIME] == 0) - Prj.TimeUTC[Dat_START_TIME] = Gbl.StartExecutionTimeUTC; - if (Prj.TimeUTC[Dat_END_TIME] == 0) - Prj.TimeUTC[Dat_END_TIME] = Prj.TimeUTC[Dat_START_TIME] + - Prj_INTERVAL_DEFAULT; - /***** Check if title is correct *****/ if (!Prj.Title[0]) // If there is not a project title { @@ -2859,17 +2826,19 @@ void Prj_RecFormProject (void) { if (ItsANewProject) { + /* Create project */ Prj_CreateProject (&Prj); // Add new project to database - /***** Write success message *****/ + /* Write success message */ sprintf (Gbl.Alert.Txt,Txt_Created_new_project_X,Prj.Title); Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt); } else if (NewProjectIsCorrect) { + /* Update project */ Prj_UpdateProject (&Prj); - /***** Write success message *****/ + /* Write success message */ Ale_ShowAlert (Ale_SUCCESS,Txt_The_project_has_been_modified); } } @@ -2897,10 +2866,14 @@ static void Prj_CreateProject (struct Project *Prj) Cns_MAX_BYTES_TEXT * 3 + Cns_MAX_BYTES_WWW]; + /***** Set dates to now *****/ + Prj->CreatTime = + Prj->ModifTime = Gbl.StartExecutionTimeUTC; + /***** Create a new project *****/ sprintf (Query,"INSERT INTO projects" " (CrsCod,DptCod,Hidden,Preassigned,NumStds,Proposal," - "StartTime,EndTime," + "CreatTime,ModifTime," "Title,Description,Knowledge,Materials,URL)" " VALUES" " (%ld,%ld,'%c','%c',%u,'%s'," @@ -2914,8 +2887,8 @@ static void Prj_CreateProject (struct Project *Prj) 'N', Prj->NumStds, Prj_Proposal_DB[Prj->Proposal], - Prj->TimeUTC[Dat_START_TIME], - Prj->TimeUTC[Dat_END_TIME ], + Prj->CreatTime, + Prj->ModifTime, Prj->Title, Prj->Description, Prj->Knowledge, @@ -2945,11 +2918,13 @@ static void Prj_UpdateProject (struct Project *Prj) Cns_MAX_BYTES_TEXT*3 + Cns_MAX_BYTES_WWW]; + /***** Adjust date of last edition to now *****/ + Prj->ModifTime = Gbl.StartExecutionTimeUTC; + /***** Update the data of the project *****/ sprintf (Query,"UPDATE projects SET " "DptCod=%ld,Hidden='%c',Preassigned='%c',NumStds=%u,Proposal='%s'," - "StartTime=FROM_UNIXTIME(%ld)," - "EndTime=FROM_UNIXTIME(%ld)," + "ModifTime=FROM_UNIXTIME(%ld)," "Title='%s'," "Description='%s',Knowledge='%s',Materials='%s',URL='%s'" " WHERE PrjCod=%ld AND CrsCod=%ld", @@ -2960,8 +2935,7 @@ static void Prj_UpdateProject (struct Project *Prj) 'N', Prj->NumStds, Prj_Proposal_DB[Prj->Proposal], - Prj->TimeUTC[Dat_START_TIME], - Prj->TimeUTC[Dat_END_TIME ], + Prj->ModifTime, Prj->Title, Prj->Description, Prj->Knowledge, diff --git a/swad_project.h b/swad_project.h index 88a1601b4..7bf5298b4 100644 --- a/swad_project.h +++ b/swad_project.h @@ -75,8 +75,8 @@ struct Project Prj_Preassigned_t Preassigned; unsigned NumStds; Prj_Proposal_t Proposal; - time_t TimeUTC[Dat_NUM_START_END_TIME]; - bool Open; + time_t CreatTime; + time_t ModifTime; char Title[Prj_MAX_BYTES_PROJECT_TITLE + 1]; long DptCod; char *Description; diff --git a/swad_text.c b/swad_text.c index f870e665f..9e91e2c91 100644 --- a/swad_text.c +++ b/swad_text.c @@ -30919,44 +30919,44 @@ const char *Txt_PROJECT_ORDER[Prj_NUM_ORDERS] = { // Prj_ORDER_START_TIME #if L==1 - "Inici" + "Data de creació" #elif L==2 - "Start" + "Datum der Erstellung" #elif L==3 - "Start" + "Date of creation" #elif L==4 - "Inicio" + "Fecha de creación" #elif L==5 - "Début" + "Date de création" #elif L==6 - "Ñepyrũ" + "Fecha de creación" // Okoteve traducción #elif L==7 - "Inizio" + "Data di creazione" #elif L==8 - "Początek" + "Data utworzenia" #elif L==9 - "Início" + "Data da criação" #endif , // Prj_ORDER_END_TIME #if L==1 - "Final" + "Última edició" #elif L==2 - "Ende" + "Letzte Ausgabe" #elif L==3 - "End" + "Last edition" #elif L==4 - "Final" + "Última edición" #elif L==5 - "Fin" + "Dernière édition" #elif L==6 - "Paha" + "Última edición" // Okoteve traducción #elif L==7 - "Fine" + "Ultima edizione" #elif L==8 - "Koniec" + "Ostatnie wydanie" #elif L==9 - "Fim" + "Última edição" #endif , // Prj_ORDER_TITLE @@ -31006,44 +31006,44 @@ const char *Txt_PROJECT_ORDER_HELP[Prj_NUM_ORDERS] = { // Prj_ORDER_START_TIME #if L==1 - "Ordenar per data de començament" + "Ordenar per data de creació" #elif L==2 - "Sortieren nach Startdatum" + "Sortieren nach Erstellungsdatum" #elif L==3 - "Sort by start date" + "Sort by date of creation" #elif L==4 - "Ordenar por fecha de comienzo" + "Ordenar por fecha de creación" #elif L==5 - "Trier par date de début" + "Trier par date de création" #elif L==6 - "Ordenar por fecha de comienzo" // Okoteve traducción + "Ordenar por fecha de creación" // Okoteve traducción #elif L==7 - "Ordina per data di inizio" + "Ordina per data di creazione" #elif L==8 - "Sortuj wedlug daty rozpoczecia" + "Sortuj według daty utworzenia" #elif L==9 - "Classificar por data de início" + "Classificar por data de criação" #endif , // Prj_ORDER_END_TIME #if L==1 - "Ordenar per data de finalització" + "Ordenar per data de l'última edició" #elif L==2 - "Sortieren nach Enddatum" + "Sortieren nach letzten Ausgabe" #elif L==3 - "Sort by end date" + "Sort by date of last edition" #elif L==4 - "Ordenar por fecha de finalización" + "Ordenar por fecha de última edición" #elif L==5 - "Trier par date de fin" + "Trier par date de dernière édition" #elif L==6 - "Ordenar por fecha de finalización" // Okoteve traducción + "Ordenar por fecha de última edición" // Okoteve traducción #elif L==7 - "Ordina per data di fine" + "Ordina per data dell'ultima edizione" #elif L==8 - "Sortuj wedlug daty zakonczenia" + "Sortuj według daty ostatniej edycji" #elif L==9 - "Classificar por data de término" + "Classificar por data da última edição" #endif , // Prj_ORDER_TITLE