From dfa4f837adcc5aebb5a75a8eebb86eaec52d42e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Tue, 28 Feb 2017 00:59:01 +0100 Subject: [PATCH] Version 16.143 --- swad_changelog.h | 5 +- swad_country.c | 294 ++++++++++++++++++++++++++++++--------------- swad_country.h | 2 + swad_institution.c | 4 +- swad_search.c | 78 ++++++++---- swad_search.h | 25 ++-- swad_text.c | 42 +++++++ 7 files changed, 310 insertions(+), 140 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index 6335e655..98a8f7b2 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -196,19 +196,18 @@ // TODO: Un administrador de institución, ¿debería poder cambiar la contraseña de un usuario de esa institución? No lo tengo claro. -// TODO: Register anonymously searches from users for system admins - /*****************************************************************************/ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.142.1 (2017-02-27)" +#define Log_PLATFORM_VERSION "SWAD 16.143 (2017-02-28)" #define CSS_FILE "swad16.139.6.css" #define JS_FILE "swad16.141.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 16.143: Feb 28, 2017 Search countries. (213231 lines) Version 16.142.1: Feb 27, 2017 Public activity is renamed as timeline. (213085 lines) Version 16.142: Feb 27, 2017 Searches are registered anonymously. (213077 lines) 1 change necessary in database: diff --git a/swad_country.c b/swad_country.c index c7182879..cea09fd4 100644 --- a/swad_country.c +++ b/swad_country.c @@ -66,6 +66,9 @@ extern struct Globals Gbl; static void Cty_Configuration (bool PrintView); static void Cty_PutIconToPrint (void); +static void Cty_PutHeadCountriesForSeeing (bool OrderSelectable); +static void Cty_ListOneCountryForSeeing (struct Country *Cty,unsigned NumCty); + static bool Cty_CheckIfICanEditCountries (void); static void Cty_PutIconsListCountries (void); @@ -83,7 +86,7 @@ static bool Cty_CheckIfNumericCountryCodeExists (long CtyCod); static bool Cty_CheckIfAlpha2CountryCodeExists (const char Alpha2[2 + 1]); static bool Cty_CheckIfCountryNameExists (Txt_Language_t Language,const char *Name,long CtyCod); static void Cty_PutFormToCreateCountry (void); -static void Cty_PutHeadCountries (void); +static void Cty_PutHeadCountriesForEdition (void); static void Cty_CreateCountry (struct Country *Cty); /*****************************************************************************/ @@ -508,119 +511,32 @@ void Cty_ListCountries2 (void) { extern const char *Hlp_SYSTEM_Countries; extern const char *Txt_Countries; - extern const char *Txt_COUNTRIES_HELP_ORDER[2]; - extern const char *Txt_COUNTRIES_ORDER[2]; - extern const char *Txt_Institutions_ABBREVIATION; - extern const char *Txt_Centres_ABBREVIATION; - extern const char *Txt_Degrees_ABBREVIATION; - extern const char *Txt_Courses_ABBREVIATION; - extern const char *Txt_Teachers_ABBREVIATION; - extern const char *Txt_Students_ABBREVIATION; extern const char *Txt_Other_countries; extern const char *Txt_Country_unspecified; - Cty_Order_t Order; unsigned NumCty; - const char *BgColor; /***** Table head *****/ Lay_StartRoundFrameTable (NULL,Txt_Countries, Cty_PutIconsListCountries,Hlp_SYSTEM_Countries,2); - fprintf (Gbl.F.Out,""); - for (Order = Cty_ORDER_BY_COUNTRY; - Order <= Cty_ORDER_BY_NUM_USRS; - Order++) - { - fprintf (Gbl.F.Out,"", - Order == Cty_ORDER_BY_COUNTRY ? "LEFT_MIDDLE" : - "RIGHT_MIDDLE"); - Act_FormStart (ActSeeCty); - Par_PutHiddenParamUnsigned ("Order",(unsigned) Order); - Act_LinkFormSubmit (Txt_COUNTRIES_HELP_ORDER[Order],"TIT_TBL",NULL); - if (Order == Gbl.Ctys.SelectedOrder) - fprintf (Gbl.F.Out,""); - fprintf (Gbl.F.Out,"%s",Txt_COUNTRIES_ORDER[Order]); - if (Order == Gbl.Ctys.SelectedOrder) - fprintf (Gbl.F.Out,""); - fprintf (Gbl.F.Out,""); - Act_FormEnd (); - fprintf (Gbl.F.Out,""); - } - fprintf (Gbl.F.Out,"" - "%s" - "" - "" - "%s" - "" - "" - "%s" - "" - "" - "%s" - "" - "" - "%s+
%s" - "" - "", - Txt_Institutions_ABBREVIATION, - Txt_Centres_ABBREVIATION, - Txt_Degrees_ABBREVIATION, - Txt_Courses_ABBREVIATION, - Txt_Teachers_ABBREVIATION,Txt_Students_ABBREVIATION); + Cty_PutHeadCountriesForSeeing (true); // Order selectable /***** Write all the countries and their number of users and institutions *****/ for (NumCty = 0; NumCty < Gbl.Ctys.Num; NumCty++) - { - BgColor = (Gbl.Ctys.Lst[NumCty].CtyCod == Gbl.CurrentCty.Cty.CtyCod) ? "LIGHT_BLUE" : - Gbl.ColorRows[Gbl.RowEvenOdd]; - - /***** Country map (and link to WWW if exists) *****/ - fprintf (Gbl.F.Out,"" - "", - BgColor); - Cty_DrawCountryMapAndNameWithLink (&Gbl.Ctys.Lst[NumCty],ActSeeIns, - "DAT_N","COUNTRY_MAP_SMALL"); - fprintf (Gbl.F.Out,""); - - /* Write stats of this country */ - fprintf (Gbl.F.Out,"" - "%u" - "" - "" - "%u" - "" - "" - "%u" - "" - "" - "%u" - "" - "" - "%u" - "" - "" - "%u" - "" - "", - BgColor,Gbl.Ctys.Lst[NumCty].NumUsrsWhoClaimToBelongToCty, - BgColor,Gbl.Ctys.Lst[NumCty].NumInss, - BgColor,Gbl.Ctys.Lst[NumCty].NumCtrs, - BgColor,Gbl.Ctys.Lst[NumCty].NumDegs, - BgColor,Gbl.Ctys.Lst[NumCty].NumCrss, - BgColor,Gbl.Ctys.Lst[NumCty].NumUsrs); - Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; - } + Cty_ListOneCountryForSeeing (&Gbl.Ctys.Lst[NumCty],NumCty + 1); /***** Separation row *****/ fprintf (Gbl.F.Out,"" - "" + "" " " "" ""); /***** Write users and institutions in other countries *****/ fprintf (Gbl.F.Out,"" + "" + "" "" "%s" "" @@ -653,6 +569,8 @@ void Cty_ListCountries2 (void) /***** Write users and institutions with unknown country *****/ fprintf (Gbl.F.Out,"" + "" + "" "" "%s" "" @@ -690,7 +608,7 @@ void Cty_ListCountries2 (void) if (Gbl.Action.Act == ActSeeCty) { fprintf (Gbl.F.Out,"
" + " style=\"width:600px; margin:12px auto;\">" "
"); } @@ -698,6 +616,127 @@ void Cty_ListCountries2 (void) Cty_FreeListCountries (); } +/*****************************************************************************/ +/******************* Write header with fields of a country *******************/ +/*****************************************************************************/ + +static void Cty_PutHeadCountriesForSeeing (bool OrderSelectable) + { + extern const char *Txt_COUNTRIES_HELP_ORDER[2]; + extern const char *Txt_COUNTRIES_ORDER[2]; + extern const char *Txt_Institutions_ABBREVIATION; + extern const char *Txt_Centres_ABBREVIATION; + extern const char *Txt_Degrees_ABBREVIATION; + extern const char *Txt_Courses_ABBREVIATION; + extern const char *Txt_Teachers_ABBREVIATION; + extern const char *Txt_Students_ABBREVIATION; + Cty_Order_t Order; + + fprintf (Gbl.F.Out,"" + ""); + for (Order = Cty_ORDER_BY_COUNTRY; + Order <= Cty_ORDER_BY_NUM_USRS; + Order++) + { + fprintf (Gbl.F.Out,"", + Order == Cty_ORDER_BY_COUNTRY ? "LEFT_MIDDLE" : + "RIGHT_MIDDLE"); + if (OrderSelectable) + { + Act_FormStart (ActSeeCty); + Par_PutHiddenParamUnsigned ("Order",(unsigned) Order); + Act_LinkFormSubmit (Txt_COUNTRIES_HELP_ORDER[Order],"TIT_TBL",NULL); + if (Order == Gbl.Ctys.SelectedOrder) + fprintf (Gbl.F.Out,""); + } + fprintf (Gbl.F.Out,"%s",Txt_COUNTRIES_ORDER[Order]); + if (OrderSelectable) + { + if (Order == Gbl.Ctys.SelectedOrder) + fprintf (Gbl.F.Out,""); + fprintf (Gbl.F.Out,""); + Act_FormEnd (); + } + fprintf (Gbl.F.Out,""); + } + fprintf (Gbl.F.Out,"" + "%s" + "" + "" + "%s" + "" + "" + "%s" + "" + "" + "%s" + "" + "" + "%s+
%s" + "" + "", + Txt_Institutions_ABBREVIATION, + Txt_Centres_ABBREVIATION, + Txt_Degrees_ABBREVIATION, + Txt_Courses_ABBREVIATION, + Txt_Teachers_ABBREVIATION,Txt_Students_ABBREVIATION); + } + +/*****************************************************************************/ +/************************ List one country for seeing ************************/ +/*****************************************************************************/ + +static void Cty_ListOneCountryForSeeing (struct Country *Cty,unsigned NumCty) + { + const char *BgColor; + + BgColor = (Cty->CtyCod == Gbl.CurrentCty.Cty.CtyCod) ? "LIGHT_BLUE" : + Gbl.ColorRows[Gbl.RowEvenOdd]; + + /***** Number of country in this list *****/ + fprintf (Gbl.F.Out,"" + "" + "%u" + "", + BgColor,NumCty); + + /***** Country map (and link to WWW if exists) *****/ + fprintf (Gbl.F.Out,"", + BgColor); + Cty_DrawCountryMapAndNameWithLink (Cty,ActSeeIns, + "DAT_N","COUNTRY_MAP_SMALL"); + fprintf (Gbl.F.Out,""); + + /* Write stats of this country */ + fprintf (Gbl.F.Out,"" + "%u" + "" + "" + "%u" + "" + "" + "%u" + "" + "" + "%u" + "" + "" + "%u" + "" + "" + "%u" + "" + "", + BgColor,Cty->NumUsrsWhoClaimToBelongToCty, + BgColor,Cty->NumInss, + BgColor,Cty->NumCtrs, + BgColor,Cty->NumDegs, + BgColor,Cty->NumCrss, + BgColor,Cty->NumUsrs); + + Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; + } + /*****************************************************************************/ /********************** Check if I can edit countries ************************/ /*****************************************************************************/ @@ -870,11 +909,11 @@ void Cty_WriteScriptGoogleGeochart (void) /***** Write end of the script *****/ fprintf (Gbl.F.Out," ]);\n" " var options = {\n" - " width:500,\n" - " height:300,\n" + " width:600,\n" + " height:360,\n" " backgroundColor:'white',\n" " datalessRegionColor:'white',\n" - " colorAxis:{colors:['white','#4D88A1'],minValue:0,maxValue:%u}};\n" + " colorAxis:{colors:['#EAF1F4','#4D88A1'],minValue:0,maxValue:%u}};\n" " var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));\n" " chart.draw(data, options);\n" " };\n" @@ -1463,7 +1502,7 @@ static void Cty_ListCountriesForEdition (void) Lay_StartRoundFrameTable (NULL,Txt_Countries,NULL,Hlp_SYSTEM_Countries,2); /***** Table head *****/ - Cty_PutHeadCountries (); + Cty_PutHeadCountriesForEdition (); /***** Write all the countries *****/ for (NumCty = 0; @@ -1856,7 +1895,7 @@ static void Cty_PutFormToCreateCountry (void) Lay_StartRoundFrameTable (NULL,Txt_New_country,NULL,Hlp_SYSTEM_Countries,2); /***** Write heading *****/ - Cty_PutHeadCountries (); + Cty_PutHeadCountriesForEdition (); /***** Firts columns for CtyCod *****/ fprintf (Gbl.F.Out,"" @@ -1943,7 +1982,7 @@ static void Cty_PutFormToCreateCountry (void) /******************* Write header with fields of a country *******************/ /*****************************************************************************/ -static void Cty_PutHeadCountries (void) +static void Cty_PutHeadCountriesForEdition (void) { extern const char *Txt_Numeric_BR_code_BR_ISO_3166_1; extern const char *Txt_Alphabetic_BR_code_BR_ISO_3166_1; @@ -2254,3 +2293,58 @@ unsigned Cty_GetNumCtysWithUsrs (Rol_Role_t Role,const char *SubQuery) SubQuery,(unsigned) Role); return (unsigned) DB_QueryCOUNT (Query,"can not get number of countries with users"); } + +/*****************************************************************************/ +/***************************** List countries found **************************/ +/*****************************************************************************/ +// Returns number of countries found + +unsigned Cty_ListCtysFound (const char *Query) + { + extern const char *Txt_country; + extern const char *Txt_countries; + MYSQL_RES *mysql_res; + MYSQL_ROW row; + unsigned NumCtys; + unsigned NumCty; + struct Country Cty; + + /***** Query database *****/ + if ((NumCtys = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get countries"))) + { + /***** Write heading *****/ + /* Number of countries found */ + sprintf (Gbl.Title,"%u %s", + NumCtys,NumCtys == 1 ? Txt_country : + Txt_countries); + Lay_StartRoundFrameTable (NULL,Gbl.Title,NULL,NULL,2); + Cty_PutHeadCountriesForSeeing (false); // Order not selectable + + /***** List the countries (one row per country) *****/ + for (NumCty = 1; + NumCty <= NumCtys; + NumCty++) + { + /* Get next country */ + row = mysql_fetch_row (mysql_res); + + /* Get country code (row[0]) */ + Cty.CtyCod = Str_ConvertStrCodToLongCod (row[0]); + + /* Get data of country */ + Cty_GetDataOfCountryByCod (&Cty,Cty_GET_EXTRA_DATA); + + /* Write data of this country */ + Cty_ListOneCountryForSeeing (&Cty,NumCty); + } + + /***** End table *****/ + Lay_EndRoundFrameTable (); + } + + /***** Free structure that stores the query result *****/ + DB_FreeMySQLResult (&mysql_res); + + return NumCtys; + } + diff --git a/swad_country.h b/swad_country.h index 9f00207b..263ecb1c 100644 --- a/swad_country.h +++ b/swad_country.h @@ -112,4 +112,6 @@ unsigned Cty_GetNumCtysWithDegs (const char *SubQuery); unsigned Cty_GetNumCtysWithCrss (const char *SubQuery); unsigned Cty_GetNumCtysWithUsrs (Rol_Role_t Role,const char *SubQuery); +unsigned Cty_ListCtysFound (const char *Query); + #endif diff --git a/swad_institution.c b/swad_institution.c index a020987b..e106f810 100644 --- a/swad_institution.c +++ b/swad_institution.c @@ -2435,7 +2435,7 @@ unsigned Ins_ListInssFound (const char *Query) Lay_StartRoundFrameTable (NULL,Gbl.Title,NULL,NULL,2); Ins_PutHeadInstitutionsForSeeing (false); // Order not selectable - /***** List the institutions (one row per centre) *****/ + /***** List the institutions (one row per institution) *****/ for (NumIns = 1; NumIns <= NumInss; NumIns++) @@ -2449,7 +2449,7 @@ unsigned Ins_ListInssFound (const char *Query) /* Get data of institution */ Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_EXTRA_DATA); - /* Write data of this centre */ + /* Write data of this institution */ Ins_ListOneInstitutionForSeeing (&Ins,NumIns); } diff --git a/swad_search.c b/swad_search.c index 7acd1755..69ed7979 100644 --- a/swad_search.c +++ b/swad_search.c @@ -66,6 +66,7 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Sco static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch); static void Sch_GetParamSearch (char *SearchStr,size_t MaxLength); static void Sch_SearchInDB (void); +static unsigned Sch_SearchCountriesInDB (const char *RangeQuery); static unsigned Sch_SearchInstitutionsInDB (const char *RangeQuery); static unsigned Sch_SearchCentresInDB (const char *RangeQuery); static unsigned Sch_SearchDegreesInDB (const char *RangeQuery); @@ -202,6 +203,7 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Sco extern const char *Txt_Scope; extern const char *Txt_SEARCH_X_in_Y; extern const char *Txt_all; + extern const char *Txt_countries; extern const char *Txt_institutions; extern const char *Txt_centres; extern const char *Txt_degrees; @@ -216,6 +218,7 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Sco { "", // Sch_SEARCH_UNKNOWN Txt_all, // Sch_SEARCH_ALL + Txt_countries, // Sch_SEARCH_COUNTRIES Txt_institutions, // Sch_SEARCH_INSTITS Txt_centres, // Sch_SEARCH_CENTRES Txt_degrees, // Sch_SEARCH_DEGREES @@ -296,6 +299,7 @@ static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch) { 0x000, // Sch_SEARCH_UNKNOWN 0x1FF, // Sch_SEARCH_ALL + 0x1FF, // Sch_SEARCH_COUNTRIES 0x1FF, // Sch_SEARCH_INSTITS 0x1FF, // Sch_SEARCH_CENTRES 0x1FF, // Sch_SEARCH_DEGREES @@ -318,31 +322,17 @@ static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch) void Sch_PutFormToSearchInPageTopHeading (void) { - Act_Action_t ActionSearch; - - /***** Set scope *****/ - /* - Gbl.Scope.Allowed = 1 << Sco_SCOPE_SYS | - 1 << Sco_SCOPE_CTY | - 1 << Sco_SCOPE_INS | - 1 << Sco_SCOPE_CTR | - 1 << Sco_SCOPE_DEG | - 1 << Sco_SCOPE_CRS; - Gbl.Scope.Default = Sco_SCOPE_SYS; - Sco_GetScope ("ScopeSch"); */ - - /***** Set action *****/ - ActionSearch = (Gbl.CurrentCrs.Crs.CrsCod > 0 ? ActCrsSch : - (Gbl.CurrentDeg.Deg.DegCod > 0 ? ActDegSch : - (Gbl.CurrentCtr.Ctr.CtrCod > 0 ? ActCtrSch : - (Gbl.CurrentIns.Ins.InsCod > 0 ? ActInsSch : - (Gbl.CurrentCty.Cty.CtyCod > 0 ? ActCtySch : - ActSysSch))))); + Act_Action_t ActionSearch = + (Gbl.CurrentCrs.Crs.CrsCod > 0 ? ActCrsSch : + (Gbl.CurrentDeg.Deg.DegCod > 0 ? ActDegSch : + (Gbl.CurrentCtr.Ctr.CtrCod > 0 ? ActCtrSch : + (Gbl.CurrentIns.Ins.InsCod > 0 ? ActInsSch : + (Gbl.CurrentCty.Cty.CtyCod > 0 ? ActCtySch : + ActSysSch))))); /***** Put form *****/ fprintf (Gbl.F.Out,"
"); Act_FormStart (ActionSearch); - // Sco_PutParamScope ("ScopeSch",Gbl.Scope.Current); Sco_PutParamScope ("ScopeSch",Sco_SCOPE_SYS); Sch_PutInputStringToSearch ("head_search_text"); Sch_PutMagnifyingGlassButton ("search-white64x64.png"); @@ -574,7 +564,7 @@ static void Sch_SearchInDB (void) RangeQuery[0] = '\0'; break; case Sco_SCOPE_CTY: - sprintf (RangeQuery," AND institutions.CtyCod='%ld'", + sprintf (RangeQuery," AND countries.CtyCod='%ld'", Gbl.CurrentCty.Cty.CtyCod); break; case Sco_SCOPE_INS: @@ -600,7 +590,8 @@ static void Sch_SearchInDB (void) switch (Gbl.Search.WhatToSearch) { case Sch_SEARCH_ALL: - NumResults = Sch_SearchInstitutionsInDB (RangeQuery); + NumResults = Sch_SearchCountriesInDB (RangeQuery); + NumResults += Sch_SearchInstitutionsInDB (RangeQuery); NumResults += Sch_SearchCentresInDB (RangeQuery); NumResults += Sch_SearchDegreesInDB (RangeQuery); NumResults += Sch_SearchCoursesInDB (RangeQuery); @@ -611,6 +602,9 @@ static void Sch_SearchInDB (void) NumResults += Sch_SearchDocumentsInMyCoursesInDB (RangeQuery); NumResults += Sch_SearchMyDocumentsInDB (RangeQuery); break; + case Sch_SEARCH_COUNTRIES: + NumResults = Sch_SearchCountriesInDB (RangeQuery); + break; case Sch_SEARCH_INSTITS: NumResults = Sch_SearchInstitutionsInDB (RangeQuery); break; @@ -653,6 +647,44 @@ static void Sch_SearchInDB (void) Lay_ShowAlert (Lay_INFO,Txt_No_results); } +/*****************************************************************************/ +/************************ Search countries in database ***********************/ +/*****************************************************************************/ +// Returns number of countries found + +static unsigned Sch_SearchCountriesInDB (const char *RangeQuery) + { + extern const char *Txt_STR_LANG_ID[1 + Txt_NUM_LANGUAGES]; + char SearchQuery[Sch_MAX_LENGTH_SEARCH_QUERY + 1]; + char Query[1024 + Sch_MAX_LENGTH_SEARCH_QUERY * 2]; + char FieldName[4+1+2+1]; // Example: Name_en + + /***** Check scope *****/ + if (Gbl.Scope.Current != Sco_SCOPE_INS && + Gbl.Scope.Current != Sco_SCOPE_CTR && + Gbl.Scope.Current != Sco_SCOPE_DEG && + Gbl.Scope.Current != Sco_SCOPE_CRS) + /***** Check user's permission *****/ + if (Sch_CheckIfIHavePermissionToSearch (Sch_SEARCH_COUNTRIES)) + { + /***** Split countries string into words *****/ + sprintf (FieldName,"Name_%s",Txt_STR_LANG_ID[Gbl.Prefs.Language]); + if (Sch_BuildSearchQuery (SearchQuery,FieldName,NULL,NULL)) + { + /***** Query database and list institutions found *****/ + sprintf (Query,"SELECT CtyCod" + " FROM countries" + " WHERE %s%s" + " ORDER BY Name_%s", + SearchQuery,RangeQuery, + Txt_STR_LANG_ID[Gbl.Prefs.Language]); + return Cty_ListCtysFound (Query); + } + } + + return 0; + } + /*****************************************************************************/ /********************** Search institutions in database **********************/ /*****************************************************************************/ diff --git a/swad_search.h b/swad_search.h index e30c1840..83d1bc6a 100644 --- a/swad_search.h +++ b/swad_search.h @@ -40,22 +40,23 @@ /******************************** Public types *******************************/ /*****************************************************************************/ -#define Sch_NUM_WHAT_TO_SEARCH 13 +#define Sch_NUM_WHAT_TO_SEARCH 14 typedef enum { Sch_SEARCH_UNKNOWN = 0, Sch_SEARCH_ALL = 1, - Sch_SEARCH_INSTITS = 2, - Sch_SEARCH_CENTRES = 3, - Sch_SEARCH_DEGREES = 4, - Sch_SEARCH_COURSES = 5, - Sch_SEARCH_USERS = 6, - Sch_SEARCH_TEACHERS = 7, - Sch_SEARCH_STUDENTS = 8, - Sch_SEARCH_GUESTS = 9, - Sch_SEARCH_OPEN_DOCUMENTS = 10, - Sch_SEARCH_DOCUM_IN_MY_COURSES = 11, - Sch_SEARCH_MY_DOCUMENTS = 12, + Sch_SEARCH_COUNTRIES = 2, + Sch_SEARCH_INSTITS = 3, + Sch_SEARCH_CENTRES = 4, + Sch_SEARCH_DEGREES = 5, + Sch_SEARCH_COURSES = 6, + Sch_SEARCH_USERS = 7, + Sch_SEARCH_TEACHERS = 8, + Sch_SEARCH_STUDENTS = 9, + Sch_SEARCH_GUESTS = 10, + Sch_SEARCH_OPEN_DOCUMENTS = 11, + Sch_SEARCH_DOCUM_IN_MY_COURSES = 12, + Sch_SEARCH_MY_DOCUMENTS = 13, } Sch_WhatToSearch_t; #define Sch_WHAT_TO_SEARCH_DEFAULT Sch_SEARCH_ALL diff --git a/swad_text.c b/swad_text.c index 4d75cbc3..aca9b6ca 100644 --- a/swad_text.c +++ b/swad_text.c @@ -5360,6 +5360,27 @@ const char *Txt_Countries = "Países"; #endif +const char *Txt_countries = +#if L==1 + "països"; +#elif L==2 + "Länder"; +#elif L==3 + "countries"; +#elif L==4 + "países"; +#elif L==5 + "pays"; +#elif L==6 + "tetã"; +#elif L==7 + "paesi"; +#elif L==8 + "kraje"; +#elif L==9 + "países"; +#endif + const char *Txt_COUNTRIES_HELP_ORDER[2] = { #if L==1 @@ -5488,6 +5509,27 @@ const char *Txt_Country = "País"; #endif +const char *Txt_country = +#if L==1 + "país"; +#elif L==2 + "Land"; +#elif L==3 + "country"; +#elif L==4 + "país"; +#elif L==5 + "pays;"; +#elif L==6 + "tetã"; +#elif L==7 + "paese"; +#elif L==8 + "kraj"; +#elif L==9 + "país"; +#endif + const char *Txt_Country_of_your_institution = #if L==1 "País de la seva institució";