mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-01 14:25:27 +02:00
Version18.114
This commit is contained in:
parent
03dc50cad4
commit
a3faef8f22
1715
js/swad18.92.js
1715
js/swad18.92.js
File diff suppressed because it is too large
Load Diff
|
@ -455,10 +455,11 @@ En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 18.113 (2019-04-17)"
|
#define Log_PLATFORM_VERSION "SWAD 18.114 (2019-04-17)"
|
||||||
#define CSS_FILE "swad18.112.1.css"
|
#define CSS_FILE "swad18.112.1.css"
|
||||||
#define JS_FILE "swad18.92.js"
|
#define JS_FILE "swad18.114.js"
|
||||||
/*
|
/*
|
||||||
|
Version 18.114: Apr 17, 2019 Project locking/unlocking is made via AJAX. (243023 lines)
|
||||||
Version 18.113: Apr 17, 2019 Individual locking of the edition of each project through a padlock icon. Only the teacher of the subject can lock / unlock each project. Suggested by Pedro Villar Castro. (243000 lines)
|
Version 18.113: Apr 17, 2019 Individual locking of the edition of each project through a padlock icon. Only the teacher of the subject can lock / unlock each project. Suggested by Pedro Villar Castro. (243000 lines)
|
||||||
ALTER TABLE projects ADD COLUMN Locked ENUM('N','Y') NOT NULL DEFAULT 'N' AFTER DptCod;
|
ALTER TABLE projects ADD COLUMN Locked ENUM('N','Y') NOT NULL DEFAULT 'N' AFTER DptCod;
|
||||||
|
|
||||||
|
|
18
swad_icon.c
18
swad_icon.c
|
@ -288,24 +288,6 @@ void Ico_PutContextualIconToPrint (Act_Action_t NextAction,void (*FuncParams) (v
|
||||||
Txt_Print);
|
Txt_Print);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ico_PutContextualIconToLock (Act_Action_t NextAction,void (*FuncParams) (void))
|
|
||||||
{
|
|
||||||
extern const char *Txt_Lock;
|
|
||||||
|
|
||||||
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,FuncParams,
|
|
||||||
"unlock.svg",
|
|
||||||
Txt_Lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Ico_PutContextualIconToUnlock (Act_Action_t NextAction,void (*FuncParams) (void))
|
|
||||||
{
|
|
||||||
extern const char *Txt_Unlock;
|
|
||||||
|
|
||||||
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,FuncParams,
|
|
||||||
"lock.svg",
|
|
||||||
Txt_Unlock);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**************** Show an icon inside a div (without text) *******************/
|
/**************** Show an icon inside a div (without text) *******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -65,8 +65,6 @@ void Ico_PutContextualIconToView (Act_Action_t NextAction,void (*FuncParams) (vo
|
||||||
void Ico_PutContextualIconToUnhide (Act_Action_t NextAction,const char *Anchor,void (*FuncParams) (void));
|
void Ico_PutContextualIconToUnhide (Act_Action_t NextAction,const char *Anchor,void (*FuncParams) (void));
|
||||||
void Ico_PutContextualIconToHide (Act_Action_t NextAction,const char *Anchor,void (*FuncParams) (void));
|
void Ico_PutContextualIconToHide (Act_Action_t NextAction,const char *Anchor,void (*FuncParams) (void));
|
||||||
void Ico_PutContextualIconToPrint (Act_Action_t NextAction,void (*FuncParams) (void));
|
void Ico_PutContextualIconToPrint (Act_Action_t NextAction,void (*FuncParams) (void));
|
||||||
void Ico_PutContextualIconToLock (Act_Action_t NextAction,void (*FuncParams) (void));
|
|
||||||
void Ico_PutContextualIconToUnlock (Act_Action_t NextAction,void (*FuncParams) (void));
|
|
||||||
|
|
||||||
void Ico_PutDivIcon (const char *DivClass,const char *Icon,const char *Title);
|
void Ico_PutDivIcon (const char *DivClass,const char *Icon,const char *Title);
|
||||||
void Ico_PutDivIconLink (const char *DivClass,const char *Icon,const char *Title);
|
void Ico_PutDivIconLink (const char *DivClass,const char *Icon,const char *Title);
|
||||||
|
|
|
@ -740,7 +740,8 @@ void Par_GetMainParameters (void)
|
||||||
Gbl.Action.Act == ActFavSocNotGbl || Gbl.Action.Act == ActFavSocNotUsr ||
|
Gbl.Action.Act == ActFavSocNotGbl || Gbl.Action.Act == ActFavSocNotUsr ||
|
||||||
Gbl.Action.Act == ActUnfSocNotGbl || Gbl.Action.Act == ActUnfSocNotUsr ||
|
Gbl.Action.Act == ActUnfSocNotGbl || Gbl.Action.Act == ActUnfSocNotUsr ||
|
||||||
Gbl.Action.Act == ActFavSocComGbl || Gbl.Action.Act == ActFavSocComUsr ||
|
Gbl.Action.Act == ActFavSocComGbl || Gbl.Action.Act == ActFavSocComUsr ||
|
||||||
Gbl.Action.Act == ActUnfSocComGbl || Gbl.Action.Act == ActUnfSocComUsr)
|
Gbl.Action.Act == ActUnfSocComGbl || Gbl.Action.Act == ActUnfSocComUsr ||
|
||||||
|
Gbl.Action.Act == ActLckPrj || Gbl.Action.Act == ActUnlPrj)
|
||||||
{
|
{
|
||||||
Gbl.Action.UsesAJAX = true;
|
Gbl.Action.UsesAJAX = true;
|
||||||
Gbl.Action.IsAJAXAutoRefresh = false;
|
Gbl.Action.IsAJAXAutoRefresh = false;
|
||||||
|
|
|
@ -180,6 +180,7 @@ static void Prj_PutFormsToRemEditOnePrj (const struct Project *Prj,
|
||||||
|
|
||||||
static bool Prj_CheckIfICanEditProject (long PrjCod);
|
static bool Prj_CheckIfICanEditProject (long PrjCod);
|
||||||
static bool Prj_CheckIfICanLockProject (void);
|
static bool Prj_CheckIfICanLockProject (void);
|
||||||
|
static void Prj_FormLockUnlock (const struct Project *Prj);
|
||||||
|
|
||||||
static void Prj_ResetProject (struct Project *Prj);
|
static void Prj_ResetProject (struct Project *Prj);
|
||||||
|
|
||||||
|
@ -2228,14 +2229,10 @@ static void Prj_PutFormsToRemEditOnePrj (const struct Project *Prj,
|
||||||
|
|
||||||
/***** Put form to lock project *****/
|
/***** Put form to lock project *****/
|
||||||
if (Prj_CheckIfICanLockProject ())
|
if (Prj_CheckIfICanLockProject ())
|
||||||
switch (Prj->Locked)
|
|
||||||
{
|
{
|
||||||
case Prj_LOCKED:
|
fprintf (Gbl.F.Out,"<div id=\"prj_lck_%ld\">",Prj->PrjCod);
|
||||||
Ico_PutContextualIconToUnlock (ActUnlPrj,Prj_PutCurrentParams);
|
Prj_FormLockUnlock (Prj);
|
||||||
break;
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
case Prj_UNLOCKED:
|
|
||||||
Ico_PutContextualIconToLock (ActLckPrj,Prj_PutCurrentParams);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2292,6 +2289,53 @@ static bool Prj_CheckIfICanLockProject (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*********************** Form to lock/unlock a project ***********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Prj_FormLockUnlock (const struct Project *Prj)
|
||||||
|
{
|
||||||
|
extern const char *Txt_Lock_Unlock[Prj_NUM_LOCKED_UNLOCKED];
|
||||||
|
char *OnSubmit;
|
||||||
|
static const Act_Action_t Prj_LockActions[Prj_NUM_LOCKED_UNLOCKED] =
|
||||||
|
{
|
||||||
|
ActUnlPrj, // Prj_LOCKED
|
||||||
|
ActLckPrj, // Prj_UNLOCKED
|
||||||
|
};
|
||||||
|
static const char *Prj_LockIcons[Prj_NUM_LOCKED_UNLOCKED] =
|
||||||
|
{
|
||||||
|
"lock.svg", // Prj_LOCKED
|
||||||
|
"unlock.svg", // Prj_UNLOCKED
|
||||||
|
};
|
||||||
|
/*
|
||||||
|
+---------------------+
|
||||||
|
| div (parent of form)|
|
||||||
|
| +-----------------+ |
|
||||||
|
| | this form | |
|
||||||
|
| | +-------------+ | |
|
||||||
|
| | | icon | | |
|
||||||
|
| | +-------------+ | |
|
||||||
|
| +-----------------+ |
|
||||||
|
+---------------------+
|
||||||
|
*/
|
||||||
|
|
||||||
|
/***** Form and icon to mark note as favourite *****/
|
||||||
|
/* Form with icon */
|
||||||
|
if (asprintf (&OnSubmit,"updateDivLockUnlockProject(this,"
|
||||||
|
"'act=%ld&ses=%s&PrjCod=%ld');"
|
||||||
|
" return false;", // return false is necessary to not submit form
|
||||||
|
Act_GetActCod (Prj_LockActions[Prj->Locked]),
|
||||||
|
Gbl.Session.Id,
|
||||||
|
Prj->PrjCod) < 0)
|
||||||
|
Lay_NotEnoughMemoryExit ();
|
||||||
|
Frm_StartFormOnSubmit (ActUnk,OnSubmit);
|
||||||
|
Ico_PutIconLink (Prj_LockIcons[Prj->Locked],Txt_Lock_Unlock[Prj->Locked]);
|
||||||
|
Frm_EndForm ();
|
||||||
|
|
||||||
|
/* Free allocated memory for subquery */
|
||||||
|
free ((void *) OnSubmit);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************************** List all the projects ****************************/
|
/************************** List all the projects ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2896,7 +2940,7 @@ void Prj_ShowProject (void)
|
||||||
|
|
||||||
void Prj_LockProjectEdition (void)
|
void Prj_LockProjectEdition (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_edition_of_project_X_is_now_locked;
|
// extern const char *Txt_The_edition_of_project_X_is_now_locked;
|
||||||
struct Project Prj;
|
struct Project Prj;
|
||||||
|
|
||||||
/***** Allocate memory for the project *****/
|
/***** Allocate memory for the project *****/
|
||||||
|
@ -2913,14 +2957,16 @@ void Prj_LockProjectEdition (void)
|
||||||
if (Prj_CheckIfICanEditProject (Prj.PrjCod))
|
if (Prj_CheckIfICanEditProject (Prj.PrjCod))
|
||||||
{
|
{
|
||||||
/***** Hide project *****/
|
/***** Hide project *****/
|
||||||
DB_QueryUPDATE ("can not hide project",
|
DB_QueryUPDATE ("can not lock project",
|
||||||
"UPDATE projects SET Locked='Y'"
|
"UPDATE projects SET Locked='Y'"
|
||||||
" WHERE PrjCod=%ld AND CrsCod=%ld",
|
" WHERE PrjCod=%ld AND CrsCod=%ld",
|
||||||
Prj.PrjCod,Gbl.Hierarchy.Crs.CrsCod);
|
Prj.PrjCod,Gbl.Hierarchy.Crs.CrsCod);
|
||||||
|
Prj.Locked = Prj_LOCKED;
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Txt_The_edition_of_project_X_is_now_locked,
|
// Ale_ShowAlert (Ale_SUCCESS,Txt_The_edition_of_project_X_is_now_locked,
|
||||||
Prj.Title);
|
// Prj.Title);
|
||||||
|
Prj_FormLockUnlock (&Prj);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Lay_NoPermissionExit ();
|
Lay_NoPermissionExit ();
|
||||||
|
@ -2928,8 +2974,11 @@ void Prj_LockProjectEdition (void)
|
||||||
/***** Free memory of the project *****/
|
/***** Free memory of the project *****/
|
||||||
Prj_FreeMemProject (&Prj);
|
Prj_FreeMemProject (&Prj);
|
||||||
|
|
||||||
|
/***** All the output is made, so don't write anymore *****/
|
||||||
|
Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true;
|
||||||
|
|
||||||
/***** Show projects again *****/
|
/***** Show projects again *****/
|
||||||
Prj_ShowProjectsInCurrentPage ();
|
// Prj_ShowProjectsInCurrentPage ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2938,7 +2987,7 @@ void Prj_LockProjectEdition (void)
|
||||||
|
|
||||||
void Prj_UnlockProjectEdition (void)
|
void Prj_UnlockProjectEdition (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_edition_of_project_X_is_now_unlocked;
|
// extern const char *Txt_The_edition_of_project_X_is_now_unlocked;
|
||||||
struct Project Prj;
|
struct Project Prj;
|
||||||
|
|
||||||
/***** Allocate memory for the project *****/
|
/***** Allocate memory for the project *****/
|
||||||
|
@ -2955,14 +3004,16 @@ void Prj_UnlockProjectEdition (void)
|
||||||
if (Prj_CheckIfICanEditProject (Prj.PrjCod))
|
if (Prj_CheckIfICanEditProject (Prj.PrjCod))
|
||||||
{
|
{
|
||||||
/***** Show project *****/
|
/***** Show project *****/
|
||||||
DB_QueryUPDATE ("can not show project",
|
DB_QueryUPDATE ("can not unlock project",
|
||||||
"UPDATE projects SET Locked='N'"
|
"UPDATE projects SET Locked='N'"
|
||||||
" WHERE PrjCod=%ld AND CrsCod=%ld",
|
" WHERE PrjCod=%ld AND CrsCod=%ld",
|
||||||
Prj.PrjCod,Gbl.Hierarchy.Crs.CrsCod);
|
Prj.PrjCod,Gbl.Hierarchy.Crs.CrsCod);
|
||||||
|
Prj.Locked = Prj_UNLOCKED;
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Txt_The_edition_of_project_X_is_now_unlocked,
|
// Ale_ShowAlert (Ale_SUCCESS,Txt_The_edition_of_project_X_is_now_unlocked,
|
||||||
Prj.Title);
|
// Prj.Title);
|
||||||
|
Prj_FormLockUnlock (&Prj);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Lay_NoPermissionExit ();
|
Lay_NoPermissionExit ();
|
||||||
|
@ -2970,8 +3021,11 @@ void Prj_UnlockProjectEdition (void)
|
||||||
/***** Free memory of the project *****/
|
/***** Free memory of the project *****/
|
||||||
Prj_FreeMemProject (&Prj);
|
Prj_FreeMemProject (&Prj);
|
||||||
|
|
||||||
|
/***** All the output is made, so don't write anymore *****/
|
||||||
|
Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true;
|
||||||
|
|
||||||
/***** Show projects again *****/
|
/***** Show projects again *****/
|
||||||
Prj_ShowProjectsInCurrentPage ();
|
// Prj_ShowProjectsInCurrentPage ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -57,13 +57,15 @@ typedef enum
|
||||||
#define Prj_FILTER_PREASSIGNED_DEFAULT (1 << Prj_PREASSIGNED) // on
|
#define Prj_FILTER_PREASSIGNED_DEFAULT (1 << Prj_PREASSIGNED) // on
|
||||||
#define Prj_FILTER_NONPREASSIG_DEFAULT (1 << Prj_NONPREASSIG) // on
|
#define Prj_FILTER_NONPREASSIG_DEFAULT (1 << Prj_NONPREASSIG) // on
|
||||||
|
|
||||||
|
/* Locked/unlocked project */
|
||||||
|
#define Prj_NUM_LOCKED_UNLOCKED 2
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Prj_LOCKED = 0,
|
Prj_LOCKED = 0,
|
||||||
Prj_UNLOCKED = 1,
|
Prj_UNLOCKED = 1,
|
||||||
} Prj_Locked_t;
|
} Prj_Locked_t;
|
||||||
|
|
||||||
/* Hidden projects / visible projects */
|
/* Hidden/visible project */
|
||||||
#define Prj_NUM_HIDDEN_VISIBL 2
|
#define Prj_NUM_HIDDEN_VISIBL 2
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
|
105
swad_text.c
105
swad_text.c
|
@ -17581,26 +17581,48 @@ const char *Txt_Locations =
|
||||||
"Localizações";
|
"Localizações";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Lock =
|
const char *Txt_Lock_Unlock[Prj_NUM_LOCKED_UNLOCKED] =
|
||||||
|
{
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Tancar";
|
"Desbloquejar"
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Abschließen";
|
"Aufschließen"
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Lock";
|
"Unlock"
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Bloquear";
|
"Desbloquear"
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"Verrouiller";
|
"Déverouiller"
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
"Bloquear"; // Okoteve traducción
|
"Desbloquear" // Okoteve traducción
|
||||||
#elif L==7 // it
|
#elif L==7 // it
|
||||||
"Bloccare";
|
"Sbloccare"
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Zablokować";
|
"Odblokować"
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Trancar";
|
"Desbloquear"
|
||||||
#endif
|
#endif
|
||||||
|
,
|
||||||
|
#if L==1 // ca
|
||||||
|
"Tancar"
|
||||||
|
#elif L==2 // de
|
||||||
|
"Abschließen"
|
||||||
|
#elif L==3 // en
|
||||||
|
"Lock"
|
||||||
|
#elif L==4 // es
|
||||||
|
"Bloquear"
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Verrouiller"
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Bloquear" // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Bloccare"
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Zablokować"
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Bloquear"
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
const char *Txt_LOG_More_info =
|
const char *Txt_LOG_More_info =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
|
@ -44011,48 +44033,6 @@ const char *Txt_The_department_X_has_been_renamed_as_Y = // Warning: it is very
|
||||||
"O departamento <strong>%s</strong> foi renomeado como <strong>%s</strong>.";
|
"O departamento <strong>%s</strong> foi renomeado como <strong>%s</strong>.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_edition_of_project_X_is_now_locked = // Warning: it is very important to include %s in the following sentences
|
|
||||||
#if L==1 // ca
|
|
||||||
"L'edició del projecte <strong>%s</strong> ara està bloquejada.";
|
|
||||||
#elif L==2 // de
|
|
||||||
"Die Edition des Projekts <strong>%s</strong> ist jetzt gesperrt.";
|
|
||||||
#elif L==3 // en
|
|
||||||
"The edition of the project <strong>%s</strong> is now locked.";
|
|
||||||
#elif L==4 // es
|
|
||||||
"La edición del proyecto <strong>%s</strong> ahora está bloqueada.";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"L'édition du projet <strong>%s</strong> est maintenant verrouillée.";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"La edición del proyecto <strong>%s</strong> ahora está bloqueada."; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"L'edizione del progetto <strong>%s</strong> è ora chiusa a chiave.";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Edycja projektu <strong>%s</strong> jest teraz zablokowana.";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"A edição do projeto <strong>%s</strong> está agora bloqueada.";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_The_edition_of_project_X_is_now_unlocked = // Warning: it is very important to include %s in the following sentences
|
|
||||||
#if L==1 // ca
|
|
||||||
"L'edició del projecte <strong>%s</strong> ara està desbloquejada.";
|
|
||||||
#elif L==2 // de
|
|
||||||
"Die Edition des Projekts <strong>%s</strong> ist jetzt freigeschaltet.";
|
|
||||||
#elif L==3 // en
|
|
||||||
"The edition of the project <strong>%s</strong> is now unlocked.";
|
|
||||||
#elif L==4 // es
|
|
||||||
"La edición del proyecto <strong>%s</strong> ahora está desbloqueada.";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"L'édition du projet <strong>%s</strong> est maintenant ouverte.";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"La edición del proyecto <strong>%s</strong> ahora está desbloqueada."; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"L'edizione del progetto <strong>%s</strong> è ora chiusa a chiave.";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Edycja projektu <strong>%s</strong> jest teraz odblokowana.";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"A edição do projeto <strong>%s</strong> está agora desbloqueada.";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_The_email_X_has_been_confirmed = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_The_email_X_has_been_confirmed = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"El correo <strong>%s</strong> ha sido confirmado."; // Necessita traduccio
|
"El correo <strong>%s</strong> ha sido confirmado."; // Necessita traduccio
|
||||||
|
@ -51434,27 +51414,6 @@ const char *Txt_unknown_TIME =
|
||||||
"desconhecido";
|
"desconhecido";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Unlock =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Desbloquejar";
|
|
||||||
#elif L==2 // de
|
|
||||||
"Aufschließen";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Unlock";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Desbloquear";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"Déverouiller";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Desbloquear"; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Sbloccare";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Odblokować";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Desbloquear";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_unread_MESSAGE =
|
const char *Txt_unread_MESSAGE =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"no leído"; // Necessita traduccio
|
"no leído"; // Necessita traduccio
|
||||||
|
|
Loading…
Reference in New Issue
Block a user