Version 14.59.2

This commit is contained in:
Antonio Cañas Vargas 2015-01-19 21:43:30 +01:00
parent 6ddb1ad800
commit 66eb5f830d
5 changed files with 180 additions and 23 deletions

View File

@ -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)

View File

@ -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)",

View File

@ -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,"<link rel=\"StyleSheet\" href=\"%s/dropzone/css/dropzone.css\" type=\"text/css\" />\n",
fprintf (Gbl.F.Out,"<link rel=\"StyleSheet\""
" href=\"%s/dropzone/css/dropzone.css\""
" type=\"text/css\" />\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,"<script type=\"text/javascript\" src=\"%s/dropzone/dropzone.js\""
fprintf (Gbl.F.Out,"<script type=\"text/javascript\""
" src=\"%s/dropzone/dropzone.js\""
" charset=\"windows-1252\">"
"</script>\n",
Cfg_HTTPS_URL_SWAD_PUBLIC);

View File

@ -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"
"<!DOCTYPE html>\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 *************************/
/*****************************************************************************/

View File

@ -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&auml;nglich f&uuml;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 &eacute;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&iacute;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&oacute;";
#elif L==1
"zum Schreiben zug&auml;nglich f&uuml;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&oacute;n";
#elif L==4
"accessible en lecture et en &eacute;criture par les administrateurs de l'&eacute;tude";
#elif L==5
"accesible para lectura y escritura por administradores de la titulaci&oacute;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&iacute;vel para leitura e escrita pelos administradores da titula&ccedil;&atilde;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&oacute;";
#elif L==1
"zum Schreiben zug&auml;nglich f&uuml;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&oacute;n";
#elif L==4
"accessible en lecture et en &eacute;criture par les administrateurs de l'&eacute;tablissement";
#elif L==5
"accesible para lectura y escritura por administradores de la instituci&oacute;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&iacute;vel para leitura e escrita pelos administradores da institui&ccedil;&atilde;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&eogon;pne tylko do czytania przez Ciebie i nauczycieli prowadzacych ten kurs";
#elif L==8
"acess&iacute;vel apenas para leitura por voc&ecirc; 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&eacute;s per a lectura per estudiants i professors del centre";
#elif L==1
"zum Lesen zug&auml;nglich f&uuml;r Studenten und Lehrkr&auml;fte der Lehrinstitut";
#elif L==2
"accessible only for reading by students and teachers of the centre";
#elif L==3
"accesible s&oacute;lo para lectura por estudiantes y profesores del centro";
#elif L==4
"accessible uniquement pour la lecture par les &eacute;tudiants et les enseignants du centre";
#elif L==5
"accesible s&oacute;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&eogon;pne tylko do czytania przez uczni&oacute;w i nauczycieli centrum";
#elif L==8
"acess&iacute;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&eacute;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&oacute;w i nauczycieli zajec";
"dost&eogon;pne tylko do czytania przez uczni&oacute;w i nauczycieli zajec";
#elif L==8
"acess&iacute;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&eacute;s per a lectura per estudiants i professors de la titulaci&oacute;";
#elif L==1
"zum Lesen zug&auml;nglich f&uuml;r Studenten und Lehrkr&auml;fte der Studiengang";
#elif L==2
"accessible only for reading by students and teachers of the degree";
#elif L==3
"accesible s&oacute;lo para lectura por estudiantes y profesores de la titulaci&oacute;n";
#elif L==4
"accessible uniquement pour la lecture par les &eacute;tudiants et les enseignants de l'&eacute;tude";
#elif L==5
"accesible s&oacute;lo para lectura por estudiantes y profesores de la titulaci&oacute;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&eogon;pne tylko do czytania przez uczni&oacute;w i nauczycieli stopnia";
#elif L==8
"acess&iacute;vel apenas para leitura pelos alunos e professores da titula&ccedil;&atilde;o";
#endif
const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_institution =
#if L==0
"accessible nom&eacute;s per a lectura per estudiants i professors de l'instituci&oacute;";
#elif L==1
"zum Lesen zug&auml;nglich f&uuml;r Studenten und Lehrkr&auml;fte der Hochschule";
#elif L==2
"accessible only for reading by students and teachers of the institution";
#elif L==3
"accesible s&oacute;lo para lectura por estudiantes y profesores de la instituci&oacute;n";
#elif L==4
"accessible uniquement pour la lecture par les &eacute;tudiants et les enseignants de l'&eacute;tablissement";
#elif L==5
"accesible s&oacute;lo para lectura por estudiantes y profesores de la instituci&oacute;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&eogon;pne tylko do czytania przez uczni&oacute;w i nauczycieli instytucji";
#elif L==8
"acess&iacute;vel apenas para leitura pelos alunos e professores da institui&ccedil;&atilde;o";
#endif
const char *Txt_accessible_only_for_reading_by_students_of_the_group_and_teachers_of_the_course =
#if L==0
"accesible nom&eacute;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&oacute;w i nauczycieli grupy kursu";
"dost&eogon;pne tylko do czytania przez uczni&oacute;w i nauczycieli grupy kursu";
#elif L==8
"acess&iacute;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&eogon;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