diff --git a/swad_changelog.h b/swad_changelog.h
index 0017c7ce3..93f2b11b1 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -39,11 +39,12 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 14.59.1 (2015/01/19)"
+#define Log_PLATFORM_VERSION "SWAD 14.59.2 (2015/01/19)"
// 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 | tail -1
/*
+ Version 14.59.2: Jan 19, 2015 See/admin documents of degree, centre and institution (not finished). (174864 lines)
Version 14.59.1: Jan 19, 2015 See/admin documents of degree, centre and institution (not finished). (174711 lines)
Version 14.59: Jan 19, 2015 See/admin documents of degree, centre and institution (not finished). (174559 lines)
Version 14.58.1: Jan 18, 2015 Fixed minor bugs in layout. (174178 lines)
diff --git a/swad_file_browser.c b/swad_file_browser.c
index 48278af7e..2e490687b 100644
--- a/swad_file_browser.c
+++ b/swad_file_browser.c
@@ -3087,6 +3087,12 @@ static void Brw_UpdateGrpLastAccZone (const char *FieldNameDB,long GrpCod)
static void Brw_WriteSubtitleOfFileBrowser (void)
{
+ extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_institution;
+ extern const char *Txt_accessible_for_reading_and_writing_by_administrators_of_the_institution;
+ extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_centre;
+ extern const char *Txt_accessible_for_reading_and_writing_by_administrators_of_the_centre;
+ extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_degree;
+ extern const char *Txt_accessible_for_reading_and_writing_by_administrators_of_the_degree;
extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_course;
extern const char *Txt_accessible_only_for_reading_by_students_of_the_group_and_teachers_of_the_course;
extern const char *Txt_accessible_for_reading_and_writing_by_teachers_of_the_course;
@@ -3120,14 +3126,29 @@ static void Brw_WriteSubtitleOfFileBrowser (void)
/***** Write subtitle *****/
switch (Gbl.FileBrowser.Type)
{
- case Brw_FILE_BRW_SEE_DOCUMENTS_DEG:
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
- case Brw_FILE_BRW_SEE_DOCUMENTS_CTR:
- case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
case Brw_FILE_BRW_SEE_DOCUMENTS_INS:
+ sprintf (Subtitle,"(%s)",
+ Txt_accessible_only_for_reading_by_students_and_teachers_of_the_institution);
+ break;
case Brw_FILE_BRW_ADMIN_DOCUMENTS_INS:
sprintf (Subtitle,"(%s)",
- "option in development");
+ Txt_accessible_for_reading_and_writing_by_administrators_of_the_institution);
+ break;
+ case Brw_FILE_BRW_SEE_DOCUMENTS_CTR:
+ sprintf (Subtitle,"(%s)",
+ Txt_accessible_only_for_reading_by_students_and_teachers_of_the_centre);
+ break;
+ case Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR:
+ sprintf (Subtitle,"(%s)",
+ Txt_accessible_for_reading_and_writing_by_administrators_of_the_centre);
+ break;
+ case Brw_FILE_BRW_SEE_DOCUMENTS_DEG:
+ sprintf (Subtitle,"(%s)",
+ Txt_accessible_only_for_reading_by_students_and_teachers_of_the_degree);
+ break;
+ case Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG:
+ sprintf (Subtitle,"(%s)",
+ Txt_accessible_for_reading_and_writing_by_administrators_of_the_degree);
break;
case Brw_FILE_BRW_SEE_DOCUMENTS_CRS:
sprintf (Subtitle,"(%s)",
diff --git a/swad_layout.c b/swad_layout.c
index c9ea3fa91..abcd54d88 100644
--- a/swad_layout.c
+++ b/swad_layout.c
@@ -185,7 +185,10 @@ void Lay_WriteStartOfPage (void)
// css/dropzone.css
// images/spritemap@2x.png
// images/spritemap.png
- if (Gbl.CurrentAct == ActFrmCreDocCrs || // Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS
+ if (Gbl.CurrentAct == ActFrmCreDocIns || // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
+ Gbl.CurrentAct == ActFrmCreDocCtr || // Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR
+ Gbl.CurrentAct == ActFrmCreDocDeg || // Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG
+ Gbl.CurrentAct == ActFrmCreDocCrs || // Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS
Gbl.CurrentAct == ActFrmCreDocGrp || // Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP
Gbl.CurrentAct == ActFrmCreComCrs || // Brw_FILE_BRW_COMMON_CRS
Gbl.CurrentAct == ActFrmCreComGrp || // Brw_FILE_BRW_COMMON_GRP
@@ -196,7 +199,9 @@ void Lay_WriteStartOfPage (void)
Gbl.CurrentAct == ActFrmCreMrkCrs || // Brw_FILE_BRW_ADMIN_MARKS_CRS
Gbl.CurrentAct == ActFrmCreMrkGrp || // Brw_FILE_BRW_ADMIN_MARKS_GRP
Gbl.CurrentAct == ActFrmCreBrf) // Brw_FILE_BRW_BRIEFCASE_USR
- fprintf (Gbl.F.Out,"\n",
+ fprintf (Gbl.F.Out,"\n",
Cfg_HTTPS_URL_SWAD_PUBLIC);
/* Redirect to correct language */
@@ -429,7 +434,10 @@ static void Lay_WriteScripts (void)
// css/dropzone.css
// images/spritemap@2x.png
// images/spritemap.png
- if (Gbl.CurrentAct == ActFrmCreDocCrs || // Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS
+ if (Gbl.CurrentAct == ActFrmCreDocIns || // Brw_FILE_BRW_ADMIN_DOCUMENTS_INS
+ Gbl.CurrentAct == ActFrmCreDocCtr || // Brw_FILE_BRW_ADMIN_DOCUMENTS_CTR
+ Gbl.CurrentAct == ActFrmCreDocDeg || // Brw_FILE_BRW_ADMIN_DOCUMENTS_DEG
+ Gbl.CurrentAct == ActFrmCreDocCrs || // Brw_FILE_BRW_ADMIN_DOCUMENTS_CRS
Gbl.CurrentAct == ActFrmCreDocGrp || // Brw_FILE_BRW_ADMIN_DOCUMENTS_GRP
Gbl.CurrentAct == ActFrmCreComCrs || // Brw_FILE_BRW_COMMON_CRS
Gbl.CurrentAct == ActFrmCreComGrp || // Brw_FILE_BRW_COMMON_GRP
@@ -442,7 +450,8 @@ static void Lay_WriteScripts (void)
Gbl.CurrentAct == ActFrmCreBrf) // Brw_FILE_BRW_BRIEFCASE_USR
{
// Use charset="windows-1252" to force error messages in windows-1252 (default is UTF-8)
- fprintf (Gbl.F.Out,"\n",
Cfg_HTTPS_URL_SWAD_PUBLIC);
diff --git a/swad_statistic.c b/swad_statistic.c
index ab93b06d0..054aeeab8 100644
--- a/swad_statistic.c
+++ b/swad_statistic.c
@@ -186,7 +186,7 @@ void Sta_GetRemoteAddr (void)
/*****************************************************************************/
/********* If this click is made from the same IP too fast, abort ************/
/*****************************************************************************/
-
+/*
void Sta_ExitIfTooFast (void)
{
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
@@ -195,35 +195,35 @@ void Sta_ExitIfTooFast (void)
char Query[512];
unsigned NumClicks; // Very recent clicks from this IP (0 or 1)
- /***** Some actions can be made fast *****/
+ ***** Some actions can be made fast *****
if (Gbl.CurrentAct == ActRefCon || // Refresh connected
Gbl.CurrentAct == ActRefLstClk || // Refresh last clicks
Gbl.CurrentAct == ActAutUsrChgLan) // Change my language automatically just after log in
return;
- /***** Get if a click/refresh is made from the same IP very recently *****/
+ ***** Get if a click/refresh is made from the same IP very recently *****
sprintf (Query,"SELECT COUNT(*) FROM IP_last"
" WHERE IP='%s' AND UNIX_TIMESTAMP(LastClick)>UNIX_TIMESTAMP()-%u",
Gbl.IP,Cfg_MIN_TIME_BETWEEN_2_CLICKS_FROM_THE_SAME_IP);
NumClicks = (unsigned) DB_QueryCOUNT (Query,"can not get the number of very recent clicks");
- /***** Remove old clicks/refreshes *****/
+ ***** Remove old clicks/refreshes *****
sprintf (Query,"DELETE FROM IP_last"
" WHERE UNIX_TIMESTAMP(LastClick)<=UNIX_TIMESTAMP()-%u",
Cfg_MIN_TIME_BETWEEN_2_CLICKS_FROM_THE_SAME_IP);
DB_QueryDELETE (Query,"can not remove old last IP");
- /***** Replace last click/refresh from this IP *****/
+ ***** Replace last click/refresh from this IP *****
sprintf (Query,"REPLACE INTO IP_last"
" (IP,LastClick)"
" VALUES ('%s',NOW())",
Gbl.IP);
DB_QueryREPLACE (Query,"can not update last IP");
- /***** If too fast, write warning and exit *****/
+ ***** If too fast, write warning and exit *****
if (NumClicks) // Too fast
{
- /***** Write header to standard output to avoid timeout *****/
+ ***** Write header to standard output to avoid timeout *****
// Two \r\n are necessary
fprintf (stdout,"Content-type: text/html; charset=windows-1252\r\n\r\n"
"\n"
@@ -246,7 +246,7 @@ void Sta_ExitIfTooFast (void)
// sleep (Cfg_MIN_TIME_BETWEEN_2_CLICKS_FROM_THE_SAME_IP); // Sleep those seconds
}
}
-
+*/
/*****************************************************************************/
/**************************** Log access in database *************************/
/*****************************************************************************/
diff --git a/swad_text.c b/swad_text.c
index 8ea756bae..bf81de414 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -1474,6 +1474,69 @@ const char *Txt_Absents =
"Assentes";
#endif
+const char *Txt_accessible_for_reading_and_writing_by_administrators_of_the_centre =
+#if L==0
+ "accessible per a lectura i escriptura per administradors del centre";
+#elif L==1
+ "zum Schreiben zugänglich für Administratoren der Lehrinstitut";
+#elif L==2
+ "accessible for reading and writing by administrators of the centre";
+#elif L==3
+ "accesible para lectura y escritura por administradores del centro";
+#elif L==4
+ "accessible en lecture et en écriture par les administrateurs du centre";
+#elif L==5
+ "accesible para lectura y escritura por administradores del centro"; // Okoteve traducción
+#elif L==6
+ "accessibile per la lettura e la scrittura da parte dei amministratori del centro";
+#elif L==7
+ "dostep do odczytu i zapisu przez administratorzy centrum";
+#elif L==8
+ "acessível para leitura e escrita pelos administradores do centro";
+#endif
+
+const char *Txt_accessible_for_reading_and_writing_by_administrators_of_the_degree =
+#if L==0
+ "accessible per a lectura i escriptura per administradors de la titulació";
+#elif L==1
+ "zum Schreiben zugänglich für Administratoren der Studiengang";
+#elif L==2
+ "accessible for reading and writing by administrators of the degree";
+#elif L==3
+ "accesible para lectura y escritura por administradores de la titulación";
+#elif L==4
+ "accessible en lecture et en écriture par les administrateurs de l'étude";
+#elif L==5
+ "accesible para lectura y escritura por administradores de la titulación"; // Okoteve traducción
+#elif L==6
+ "accessibile per la lettura e la scrittura da parte dei amministratori della laurea";
+#elif L==7
+ "dostep do odczytu i zapisu przez administratorzy stopnia";
+#elif L==8
+ "acessível para leitura e escrita pelos administradores da titulação";
+#endif
+
+const char *Txt_accessible_for_reading_and_writing_by_administrators_of_the_institution =
+#if L==0
+ "accessible per a lectura i escriptura per administradors de l'institució";
+#elif L==1
+ "zum Schreiben zugänglich für Administratoren der Hochschule";
+#elif L==2
+ "accessible for reading and writing by administrators of the institution";
+#elif L==3
+ "accesible para lectura y escritura por administradores de la institución";
+#elif L==4
+ "accessible en lecture et en écriture par les administrateurs de l'établissement";
+#elif L==5
+ "accesible para lectura y escritura por administradores de la institución"; // Okoteve traducción
+#elif L==6
+ "accessibile per la lettura e la scrittura da parte dei amministratori della istituzione";
+#elif L==7
+ "dostep do odczytu i zapisu przez administratorzy instytucji";
+#elif L==8
+ "acessível para leitura e escrita pelos administradores da instituição";
+#endif
+
const char *Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_course =
#if L==0
"accessible per a lectura i escriptura per estudiants i professors de l'assignatura";
@@ -1574,11 +1637,32 @@ const char *Txt_accessible_only_for_reading_by_you_and_the_teachers_of_the_cours
#elif L==6
"accessibile solo per la lettura per te e i professori del corso";
#elif L==7
- "dostepne tylko do czytania przez Ciebie i nauczycieli prowadzacych ten kurs";
+ "dostępne tylko do czytania przez Ciebie i nauczycieli prowadzacych ten kurs";
#elif L==8
"acessível apenas para leitura por você e os professores da disciplina";
#endif
+const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_centre =
+#if L==0
+ "accessible només per a lectura per estudiants i professors del centre";
+#elif L==1
+ "zum Lesen zugänglich für Studenten und Lehrkräfte der Lehrinstitut";
+#elif L==2
+ "accessible only for reading by students and teachers of the centre";
+#elif L==3
+ "accesible sólo para lectura por estudiantes y profesores del centro";
+#elif L==4
+ "accessible uniquement pour la lecture par les étudiants et les enseignants du centre";
+#elif L==5
+ "accesible sólo para lectura por estudiantes y profesores del centro"; // Okoteve traducción
+#elif L==6
+ "accessibile solo per la lettura da parte degli studenti e dei professori del centro";
+#elif L==7
+ "dostępne tylko do czytania przez uczniów i nauczycieli centrum";
+#elif L==8
+ "acessível apenas para leitura pelos alunos e professores do centro";
+#endif
+
const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_course =
#if L==0
"accessible només per a lectura per estudiants i professors de l'assignatura";
@@ -1595,11 +1679,53 @@ const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_cour
#elif L==6
"accessibile solo per la lettura da parte degli studenti e dei professori del corso";
#elif L==7
- "dostepne tylko do czytania przez uczniów i nauczycieli zajec";
+ "dostępne tylko do czytania przez uczniów i nauczycieli zajec";
#elif L==8
"acessível apenas para leitura pelos alunos e professores da disciplina";
#endif
+const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_degree =
+#if L==0
+ "accessible només per a lectura per estudiants i professors de la titulació";
+#elif L==1
+ "zum Lesen zugänglich für Studenten und Lehrkräfte der Studiengang";
+#elif L==2
+ "accessible only for reading by students and teachers of the degree";
+#elif L==3
+ "accesible sólo para lectura por estudiantes y profesores de la titulación";
+#elif L==4
+ "accessible uniquement pour la lecture par les étudiants et les enseignants de l'étude";
+#elif L==5
+ "accesible sólo para lectura por estudiantes y profesores de la titulación"; // Okoteve traducción
+#elif L==6
+ "accessibile solo per la lettura da parte degli studenti e dei professori della laurea";
+#elif L==7
+ "dostępne tylko do czytania przez uczniów i nauczycieli stopnia";
+#elif L==8
+ "acessível apenas para leitura pelos alunos e professores da titulação";
+#endif
+
+const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_institution =
+#if L==0
+ "accessible només per a lectura per estudiants i professors de l'institució";
+#elif L==1
+ "zum Lesen zugänglich für Studenten und Lehrkräfte der Hochschule";
+#elif L==2
+ "accessible only for reading by students and teachers of the institution";
+#elif L==3
+ "accesible sólo para lectura por estudiantes y profesores de la institución";
+#elif L==4
+ "accessible uniquement pour la lecture par les étudiants et les enseignants de l'établissement";
+#elif L==5
+ "accesible sólo para lectura por estudiantes y profesores de la institución"; // Okoteve traducción
+#elif L==6
+ "accessibile solo per la lettura da parte degli studenti e dei professori della istituzione";
+#elif L==7
+ "dostępne tylko do czytania przez uczniów i nauczycieli instytucji";
+#elif L==8
+ "acessível apenas para leitura pelos alunos e professores da instituição";
+#endif
+
const char *Txt_accessible_only_for_reading_by_students_of_the_group_and_teachers_of_the_course =
#if L==0
"accesible només per a lectura per estudiants del grup i professors de l'assignatura";
@@ -1616,7 +1742,7 @@ const char *Txt_accessible_only_for_reading_by_students_of_the_group_and_teacher
#elif L==6
"accessibile solo per la lettura da parte degli studenti del gruppo e dei professori del corso";
#elif L==7
- "dostepne tylko do czytania przez uczniów i nauczycieli grupy kursu";
+ "dostępne tylko do czytania przez uczniów i nauczycieli grupy kursu";
#elif L==8
"acessível apenas para leitura pelos alunos do grupo e professores da disciplina";
#endif
@@ -10893,7 +11019,7 @@ const char *Txt_File_zones_of_the_group_X_are_now_enabled = // Warning: it is ve
#elif L==6
"Le aree file del gruppo %s sono ora abilitate.";
#elif L==7
- "Plik strefy grupa %s sa obecnie dostepne.";
+ "Plik strefy grupa %s sa obecnie dostępne.";
#elif L==8
"File zones of the group %s are now enabled."; // Necessita de tradução
#endif
@@ -18759,7 +18885,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
" a les quals podeu consultar"
" per crear assignatures o altres gestions"
#elif L==1
- "Liste der Verwalter"
+ "Liste der Administratoren"
#elif L==2
"Administrators"
#elif L==3