Version19.186

This commit is contained in:
acanas 2020-04-14 22:45:10 +02:00
parent 333d3337da
commit 44f94d1075
12 changed files with 965 additions and 255 deletions

View File

@ -28,7 +28,7 @@
OBJS = swad_account.o swad_action.o swad_agenda.o swad_alert.o \
swad_announcement.o swad_API.o swad_assignment.o swad_attendance.o \
swad_banner.o swad_box.o swad_button.o \
swad_banner.o swad_box.o swad_building.o swad_button.o \
swad_calendar.o swad_centre.o swad_centre_config.o swad_chat.o \
swad_config.o swad_connected.o swad_cookie.o swad_country.o \
swad_country_config.o swad_course.o \

View File

@ -13331,4 +13331,11 @@ SELECT my_courses.CrsCod,COUNT(*) AS N FROM (SELECT CrsCod,UsrCod,Role FROM crs_
SELECT my_courses.CrsCod,COUNT(*) AS N FROM (SELECT CrsCod FROM crs_usr WHERE UsrCod=1346 AND Role=5) AS my_courses LEFT JOIN log ON (my_courses.CrsCod=log.CrsCod) WHERE log.UsrCod=1346 AND log.Role=5 GROUP BY my_courses.CrsCod ORDER BY N DESC,my_courses.CrsCod DESC;
--------------------
SELECT COUNT(*) FROM usr_data WHERE InsCod=25037;
UPDATE usr_data SET InsCod=1130 WHERE InsCod=25037;

View File

@ -154,6 +154,17 @@ CREATE TABLE IF NOT EXISTS birthdays_today (
UNIQUE INDEX(UsrCod),
INDEX(Today));
--
-- Table buildings: buildings in a centre
--
CREATE TABLE IF NOT EXISTS buildings (
BldCod INT NOT NULL AUTO_INCREMENT,
CtrCod INT NOT NULL,
ShortName VARCHAR(511) NOT NULL,
FullName VARCHAR(2047) NOT NULL,
Location VARCHAR(2047) NOT NULL,
UNIQUE INDEX(BldCod),
INDEX(CtrCod));
--
-- Table centres: centres (faculties, schools...)
--
CREATE TABLE IF NOT EXISTS centres (

View File

@ -30,6 +30,7 @@
#include "swad_announcement.h"
#include "swad_attendance.h"
#include "swad_banner.h"
#include "swad_building.h"
#include "swad_calendar.h"
#include "swad_centre_config.h"
#include "swad_config.h"
@ -315,6 +316,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
// Actions in menu:
[ActSeeCtrInf ] = {1151, 0,TabCtr,ActSeeCtrInf , 0, 0, 0,0x3C7, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtrCfg_ShowConfiguration ,"info" },
[ActSeeDeg ] = {1011, 1,TabCtr,ActSeeDeg , 0, 0, 0,0x3C7, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Deg_ShowDegsOfCurrentCtr ,"graduation-cap" },
[ActSeeBld ] = {1838, 2,TabCtr,ActSeeBld , 0, 0, 0,0x3C7, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Bld_SeeBuildings ,"building" },
[ActSeeRoo ] = {1744, 2,TabCtr,ActSeeRoo , 0, 0, 0,0x3C7, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Roo_SeeRooms ,"classroom" },
// Actions not in menu:
@ -350,13 +352,20 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActChgDegWWW ] = { 554,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Deg_ChangeDegWWW ,Deg_ContEditAfterChgDeg ,NULL},
[ActChgDegSta ] = {1207,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Deg_ChangeDegStatus ,Deg_ContEditAfterChgDeg ,NULL},
[ActEdiRoo ] = {1745,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Roo_EditRooms ,NULL},
[ActNewRoo ] = {1746,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_RecFormNewRoom ,Roo_ContEditAfterChgRoom ,NULL},
[ActRemRoo ] = {1747,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_RemoveRoom ,Roo_ContEditAfterChgRoom ,NULL},
[ActRenRooSho ] = {1748,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_RenameRoomShort ,Roo_ContEditAfterChgRoom ,NULL},
[ActRenRooFul ] = {1749,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_RenameRoomFull ,Roo_ContEditAfterChgRoom ,NULL},
[ActEdiBld ] = {1839,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Bld_EditBuildings ,NULL},
[ActNewBld ] = {1840,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Bld_RecFormNewBuilding ,Bld_ContEditAfterChgBuilding ,NULL},
[ActRemBld ] = {1841,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Bld_RemoveBuilding ,Bld_ContEditAfterChgBuilding ,NULL},
[ActRenBldSho ] = {1842,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Bld_RenameBuildingShort ,Bld_ContEditAfterChgBuilding ,NULL},
[ActRenBldFul ] = {1843,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Bld_RenameBuildingFull ,Bld_ContEditAfterChgBuilding ,NULL},
[ActRenBldLoc ] = {1844,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Bld_ChangeBuildingLocation ,Bld_ContEditAfterChgBuilding ,NULL},
[ActEdiRoo ] = {1745,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Roo_EditRooms ,NULL},
[ActNewRoo ] = {1746,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_RecFormNewRoom ,Roo_ContEditAfterChgRoom ,NULL},
[ActRemRoo ] = {1747,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_RemoveRoom ,Roo_ContEditAfterChgRoom ,NULL},
[ActRenRooSho ] = {1748,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_RenameRoomShort ,Roo_ContEditAfterChgRoom ,NULL},
[ActRenRooFul ] = {1749,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_RenameRoomFull ,Roo_ContEditAfterChgRoom ,NULL},
[ActChgRooMaxUsr ] = {1750,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_ChangeCapacity ,Roo_ContEditAfterChgRoom ,NULL},
[ActRenRooLoc ] = {1751,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_ChangeRoomLocation ,Roo_ContEditAfterChgRoom ,NULL},
[ActRenRooLoc ] = {1751,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_ChangeRoomLocation ,Roo_ContEditAfterChgRoom ,NULL},
// TabDeg ******************************************************************
// Actions in menu:
@ -3575,6 +3584,13 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActReqRemSevTstQst, // #1835
ActRemSevTstQst, // #1836
ActReqAssTst, // #1837
ActSeeBld, // #1838
ActEdiBld, // #1839
ActNewBld, // #1840
ActRemBld, // #1841
ActRenBldSho, // #1842
ActRenBldFul, // #1843
ActRenBldLoc, // #1844
};
/*****************************************************************************/

View File

@ -64,7 +64,7 @@ typedef enum
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_MAX_ACTION_COD 1837
#define Act_MAX_ACTION_COD 1844
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
@ -293,48 +293,56 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
// Actions in menu
#define ActSeeCtrInf (ActRenHld + 1)
#define ActSeeDeg (ActRenHld + 2)
#define ActSeeRoo (ActRenHld + 3)
#define ActSeeBld (ActRenHld + 3)
#define ActSeeRoo (ActRenHld + 4)
// Secondary actions
#define ActPrnCtrInf (ActRenHld + 4)
#define ActChgCtrInsCfg (ActRenHld + 5)
#define ActRenCtrShoCfg (ActRenHld + 6)
#define ActRenCtrFulCfg (ActRenHld + 7)
#define ActChgCtrPlcCfg (ActRenHld + 8)
#define ActChgCtrLatCfg (ActRenHld + 9)
#define ActChgCtrLgtCfg (ActRenHld + 10)
#define ActChgCtrAltCfg (ActRenHld + 11)
#define ActChgCtrWWWCfg (ActRenHld + 12)
#define ActReqCtrLog (ActRenHld + 13)
#define ActRecCtrLog (ActRenHld + 14)
#define ActRemCtrLog (ActRenHld + 15)
#define ActReqCtrPho (ActRenHld + 16)
#define ActRecCtrPho (ActRenHld + 17)
#define ActChgCtrPhoAtt (ActRenHld + 18)
#define ActPrnCtrInf (ActRenHld + 5)
#define ActChgCtrInsCfg (ActRenHld + 6)
#define ActRenCtrShoCfg (ActRenHld + 7)
#define ActRenCtrFulCfg (ActRenHld + 8)
#define ActChgCtrPlcCfg (ActRenHld + 9)
#define ActChgCtrLatCfg (ActRenHld + 10)
#define ActChgCtrLgtCfg (ActRenHld + 11)
#define ActChgCtrAltCfg (ActRenHld + 12)
#define ActChgCtrWWWCfg (ActRenHld + 13)
#define ActReqCtrLog (ActRenHld + 14)
#define ActRecCtrLog (ActRenHld + 15)
#define ActRemCtrLog (ActRenHld + 16)
#define ActReqCtrPho (ActRenHld + 17)
#define ActRecCtrPho (ActRenHld + 18)
#define ActChgCtrPhoAtt (ActRenHld + 19)
#define ActSeeDegTyp (ActRenHld + 19)
#define ActEdiDegTyp (ActRenHld + 20)
#define ActNewDegTyp (ActRenHld + 21)
#define ActRemDegTyp (ActRenHld + 22)
#define ActRenDegTyp (ActRenHld + 23)
#define ActSeeDegTyp (ActRenHld + 20)
#define ActEdiDegTyp (ActRenHld + 21)
#define ActNewDegTyp (ActRenHld + 22)
#define ActRemDegTyp (ActRenHld + 23)
#define ActRenDegTyp (ActRenHld + 24)
#define ActEdiDeg (ActRenHld + 24)
#define ActReqDeg (ActRenHld + 25)
#define ActNewDeg (ActRenHld + 26)
#define ActRemDeg (ActRenHld + 27)
#define ActRenDegSho (ActRenHld + 28)
#define ActRenDegFul (ActRenHld + 29)
#define ActChgDegTyp (ActRenHld + 30)
#define ActChgDegWWW (ActRenHld + 31)
#define ActChgDegSta (ActRenHld + 32)
#define ActEdiDeg (ActRenHld + 25)
#define ActReqDeg (ActRenHld + 26)
#define ActNewDeg (ActRenHld + 27)
#define ActRemDeg (ActRenHld + 28)
#define ActRenDegSho (ActRenHld + 29)
#define ActRenDegFul (ActRenHld + 30)
#define ActChgDegTyp (ActRenHld + 31)
#define ActChgDegWWW (ActRenHld + 32)
#define ActChgDegSta (ActRenHld + 33)
#define ActEdiRoo (ActRenHld + 33)
#define ActNewRoo (ActRenHld + 34)
#define ActRemRoo (ActRenHld + 35)
#define ActRenRooSho (ActRenHld + 36)
#define ActRenRooFul (ActRenHld + 37)
#define ActChgRooMaxUsr (ActRenHld + 38)
#define ActRenRooLoc (ActRenHld + 39)
#define ActEdiBld (ActRenHld + 34)
#define ActNewBld (ActRenHld + 35)
#define ActRemBld (ActRenHld + 36)
#define ActRenBldSho (ActRenHld + 37)
#define ActRenBldFul (ActRenHld + 38)
#define ActRenBldLoc (ActRenHld + 39)
#define ActEdiRoo (ActRenHld + 40)
#define ActNewRoo (ActRenHld + 41)
#define ActRemRoo (ActRenHld + 42)
#define ActRenRooSho (ActRenHld + 43)
#define ActRenRooFul (ActRenHld + 44)
#define ActChgRooMaxUsr (ActRenHld + 45)
#define ActRenRooLoc (ActRenHld + 46)
/*****************************************************************************/
/********************************* Degree tab ********************************/

View File

@ -497,7 +497,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.185 (2020-04-14)"
#define Log_PLATFORM_VERSION "SWAD 19.186 (2020-04-14)"
#define CSS_FILE "swad19.146.css"
#define JS_FILE "swad19.172.1.js"
/*
@ -548,13 +548,16 @@ Funci
// TODO: Oresti Baños: cambiar ojos por candados en descriptores para prohibir/permitir y dejar los ojos para poder elegir descriptores
// TODO: Integrar pull requests con traducciones del alemán del usuario eruedin en GitHub
Version 19.186: Apr 14, 2020 New module swad_building for buildings in a centre. (287372 lines)
1 change necessary in database:
CREATE TABLE IF NOT EXISTS buildings (BldCod INT NOT NULL AUTO_INCREMENT,CtrCod INT NOT NULL,ShortName VARCHAR(511) NOT NULL,FullName VARCHAR(2047) NOT NULL,Location VARCHAR(2047) NOT NULL,UNIQUE INDEX(BldCod),INDEX(CtrCod));
Version 19.185: Apr 14, 2020 Module swad_classroom is renamed as swad_room.
Improvement in querying the database in the usage report. (285813 lines)
5 changes necessary in database:
RENAME TABLE classrooms TO rooms;
ALTER TABLE rooms CHANGE COLUMN ClaCod RooCod INT NOT NULL AUTO_INCREMENT;
ALTER TABLE rooms DROP INDEX ClaCod,ADD UNIQUE INDEX(RooCod);
ALTER TABLE crs_grp CHANGE COLUMN ClaCod RooCod INT NOT NULL DEFAULT -1;
ALTER TABLE crs_grp DROP INDEX ClaCod,ADD INDEX(RooCod);

View File

@ -416,6 +416,29 @@ mysql> DESCRIBE birthdays_today;
"UNIQUE INDEX(UsrCod),"
"INDEX(Today))");
/***** Table buildings *****/
/*
mysql> DESCRIBE buildings;
+-----------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+----------------+
| BldCod | int(11) | NO | PRI | NULL | auto_increment |
| CtrCod | int(11) | NO | MUL | NULL | |
| ShortName | varchar(511) | NO | | NULL | |
| FullName | varchar(2047) | NO | | NULL | |
| Location | varchar(2047) | NO | | NULL | |
+-----------+---------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS buildings ("
"BldCod INT NOT NULL AUTO_INCREMENT,"
"CtrCod INT NOT NULL,"
"ShortName VARCHAR(511) NOT NULL," // Bld_MAX_BYTES_SHRT_NAME
"FullName VARCHAR(2047) NOT NULL," // Bld_MAX_BYTES_FULL_NAME
"Location VARCHAR(2047) NOT NULL," // Bld_MAX_BYTES_LOCATION
"UNIQUE INDEX(BldCod),"
"INDEX(CtrCod))");
/***** Table centres *****/
/*
mysql> DESCRIBE centres;

View File

@ -627,6 +627,48 @@ const char *Hlp_CENTRE_Degrees =
"CENTRE.Degrees.en";
#endif
const char *Hlp_CENTRE_Buildings =
#if L==1
"CENTRE.Buildings.es";
#elif L==2
"CENTRE.Buildings.en";
#elif L==3
"CENTRE.Buildings.en";
#elif L==4
"CENTRE.Buildings.es";
#elif L==5
"CENTRE.Buildings.en";
#elif L==6
"CENTRE.Buildings.es";
#elif L==7
"CENTRE.Buildings.en";
#elif L==8
"CENTRE.Buildings.en";
#elif L==9
"CENTRE.Buildings.en";
#endif
const char *Hlp_CENTRE_Buildings_edit =
#if L==1
"CENTRE.Buildings.es#editar";
#elif L==2
"CENTRE.Buildings.en#edit";
#elif L==3
"CENTRE.Buildings.en#edit";
#elif L==4
"CENTRE.Buildings.es#editar";
#elif L==5
"CENTRE.Buildings.en#edit";
#elif L==6
"CENTRE.Buildings.es#editar";
#elif L==7
"CENTRE.Buildings.en#edit";
#elif L==8
"CENTRE.Buildings.en#edit";
#elif L==9
"CENTRE.Buildings.en#edit";
#endif
const char *Hlp_CENTRE_Rooms =
#if L==1
"CENTRE.Rooms.es";

View File

@ -94,7 +94,8 @@ static const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_
[TabCtr] = {
[ 0] = ActSeeCtrInf,
[ 1] = ActSeeDeg,
[ 2] = ActSeeRoo,
[ 2] = ActSeeBld,
[ 3] = ActSeeRoo,
},
[TabDeg] = {
[ 0] = ActSeeDegInf,

View File

@ -490,7 +490,7 @@ void Roo_FreeListRooms (struct Roo_Rooms *Rooms)
static void Roo_ListRoomsForEdition (const struct Roo_Rooms *Rooms)
{
unsigned NumCla;
unsigned NumRoom;
struct Roo_Room *Room;
char StrCapacity[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
@ -499,11 +499,11 @@ static void Roo_ListRoomsForEdition (const struct Roo_Rooms *Rooms)
Roo_PutHeadRooms ();
/***** Write all the rooms *****/
for (NumCla = 0;
NumCla < Rooms->Num;
NumCla++)
for (NumRoom = 0;
NumRoom < Rooms->Num;
NumRoom++)
{
Room = &Rooms->Lst[NumCla];
Room = &Rooms->Lst[NumRoom];
HTM_TR_Begin (NULL);

File diff suppressed because it is too large Load Diff

View File

@ -3567,6 +3567,27 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActSeeBld] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"List buildings in a centre"
#elif L==4 // es
"Listar edificios de un centro"
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActSeeRoo] =
@ -4197,6 +4218,132 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActEdiBld] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"Edit buildings"
#elif L==4 // es
"Editar edificios"
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActNewBld] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"Request the creation of a building"
#elif L==4 // es
"Solicitar la creaci&oacute;n de un edificio"
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActRemBld] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"Remove a building"
#elif L==4 // es
"Eliminar edificio"
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActRenBldSho] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"Change short name of a building"
#elif L==4 // es
"Cambiar nombre breve de edificio"
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActRenBldFul] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"Change full name of a building"
#elif L==4 // es
"Cambiar nombre completo de edificio"
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActRenBldLoc] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"Change location of a building"
#elif L==4 // es
"Cambiar ubicaci&oacute;n de un edificio"
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActEdiRoo] =