Version 14.74.12

This commit is contained in:
Antonio Cañas Vargas 2015-02-23 23:45:32 +01:00
parent 7bf99aaa8d
commit e5ab83f457
7 changed files with 152 additions and 80 deletions

View File

@ -1,71 +1,61 @@
<div style="margin:0 10%">
<div class="FOOT_LIST_CONTAINER" style="width:17%;">
<h2 title="Informaci&oacute;n" class="FOOT_LIST_TITLE">Informaci&oacute;n</h2>
<h2 title="Information" class="FOOT_LIST_TITLE">Information</h2>
<ul class="FOOT_LIST">
<li><a href="https://openswad.org/info/" target="_blank" class="FOOT_LINK" title="&iquest;Qu&eacute; es SWAD?">
&iquest;Qu&eacute; es SWAD?</a></li>
<li><a href="http://twitter.com/openswad" target="_blank" class="FOOT_LINK" title="@OpenSWAD">
@OpenSWAD</a></li>
<li><a href="https://openswad.org/info/" target="_blank" class="FOOT_LINK" title="What is SWAD?">
What is SWAD?</a></li>
<li><a href="http://openswad.wordpress.com/" target="_blank" class="FOOT_LINK" title="Blog">
Blog</a></li>
<li><a href="https://openswad.org/paper/" target="_blank" class="FOOT_LINK" title="Publicaciones">
Publicaciones</a></li>
<li><a href="https://openswad.org/press/" target="_blank" class="FOOT_LINK" title="Prensa">
Prensa</a></li>
<li><a href="https://openswad.org/paper/" target="_blank" class="FOOT_LINK" title="Publications">
Publications</a></li>
<li><a href="https://openswad.org/press/" target="_blank" class="FOOT_LINK" title="Press">
Press</a></li>
<li><a href="https://openswad.org/logo/" target="_blank" class="FOOT_LINK" title="Logos">
Logos</a></li>
<li><a href="http://www.cafepress.com/swad_ugr_es/" target="_blank" class="FOOT_LINK" title="Tienda">
Tienda</a></li>
<li><a href="http://www.cafepress.com/swad_ugr_es/" target="_blank" class="FOOT_LINK" title="Shop">
Shop</a></li>
</ul>
</div>
<div class="FOOT_LIST_CONTAINER" style="width:17%;">
<h2 title="Documentaci&oacute;n" class="FOOT_LIST_TITLE">Documentaci&oacute;n</h2>
<h2 title="Documentation" class="FOOT_LIST_TITLE">Documentation</h2>
<ul class="FOOT_LIST">
<li><a href="https://openswad.org/SWAD-sheet.pdf" target="_blank" class="FOOT_LINK" title="Manual breve">
Manual breve</a></li>
<li><a href="https://openswad.org/presentation/" target="_blank" class="FOOT_LINK" title="Presentaciones">
Presentaciones</a></li>
<li><a href="https://openswad.org/video/" target="_blank" class="FOOT_LINK" title="Videotutoriales">
Videotutoriales</a></li>
<li><a href="https://openswad.org/tool/" target="_blank" class="FOOT_LINK" title="Herramientas">
Herramientas</a></li>
<li><a href="http://swad.ugr.es/wiki/index.php/FAQ" target="_blank" class="FOOT_LINK" title="FAQ">
FAQ</a></li>
<li><a href="http://swad.ugr.es/wiki/" target="_blank" class="FOOT_LINK" title="Wiki">
Wiki</a></li>
<li><a href="https://openswad.org/SWAD-manual-EN.pdf" target="_blank" class="FOOT_LINK" title="Manual (EN)">
Basic manual (EN)</a></li>
<li><a href="https://openswad.org/SWAD-manual-ES.pdf" target="_blank" class="FOOT_LINK" title="Manual (ES)">
Manual b&aacute;sico (ES)</a></li>
<li><a href="https://openswad.org/presentation/" target="_blank" class="FOOT_LINK" title="Presentations">
Presentations</a></li>
<li><a href="https://openswad.org/video/" target="_blank" class="FOOT_LINK" title="Videotutorials">
Videotutorials</a></li>
<li><a href="https://openswad.org/tool/" target="_blank" class="FOOT_LINK" title="Tools">
Tools</a></li>
</ul>
</div>
<div class="FOOT_LIST_CONTAINER" style="width:17%;">
<h2 title="SWAD en la UGR" class="FOOT_LIST_TITLE">SWAD en la UGR</h2>
<h2 title="Information" class="FOOT_LIST_TITLE">Social</h2>
<ul class="FOOT_LIST">
<li><a href="http://swad.ugr.es/begin/" target="_blank" class="FOOT_LINK">
C&oacute;mo acceder</a></li>
<li><a href="http://twitter.com/swad_ugr" target="_blank" class="FOOT_LINK">
@swad_ugr</a></li>
<li><a href="http://swad.ugr.es/stat/" target="_blank" class="FOOT_LINK">
Estad&iacute;sticas</a></li>
<li><a href="http://swad.ugr.es/server/" target="_blank" class="FOOT_LINK">
Servidor</a></li>
<li><a href="http://swad.ugr.es/encuentro/" target="_blank" class="FOOT_LINK">
Encuentro</a></li>
<li><a href="http://twitter.com/openswad" target="_blank" class="FOOT_LINK" title="Twitter">
Twitter</a></li>
<li><a href="https://www.facebook.com/OpenSWAD/" target="_blank" class="FOOT_LINK" title="facebook">
Facebook</a></li>
<li><a href="https://en.wikipedia.org/wiki/SWAD_%28software%29" target="_blank" class="FOOT_LINK" title="Wikipedia">
Wikipedia</a></li>
<li><a href="https://plus.google.com/u/0/109453568780563947088/about/p/pub" target="_blank" class="FOOT_LINK" title="Google+">
Google+</a></li>
<li><a href="http://www.youtube.com/channel/UCDk02lUBCoqp_v2A25t6orQ/about" target="_blank" class="FOOT_LINK" title="YouTube">
YouTube</a></li>
<li><a href="http://alternativeto.net/software/swad/" target="_blank" class="FOOT_LINK" title="alternativeTo">
alternativeTo</a></li>
<li><a href="http://www.startupranking.com/openswad" target="_blank" class="FOOT_LINK" title="startupRANKING">
startupRANKING</a></li>
<li><a href="https://github.com/acanas/swad-core" target="_blank" class="FOOT_LINK" title="GitHub">
GitHub</a></li>
<li><a href="https://www.openhub.net/p/swad-core" target="_blank" class="FOOT_LINK" title="Open HUB">
Open HUB</a></li>
</ul>
</div>
<div class="FOOT_LIST_CONTAINER" style="width:17%;">
<h2 title="M&oacute;vil" class="FOOT_LIST_TITLE">M&oacute;vil</h2>
<ul class="FOOT_LIST">
<li>
<a href="https://openswad.org/swadroid/" target="_blank" class="FOOT_LINK" title="SWADroid: SWAD App para Android">
SWADroid</a></li>
<li><a href="http://twitter.com/swadroid" class="FOOT_LINK" target="_blank" title="@SWADroid">
@SWADroid</a></li>
<li><a href="http://swadroid.wordpress.com/" class="FOOT_LINK" target="_blank" title="SWADroid Blog">
SWADroid Blog</a></li>
<li><a href="http://twitter.com/iswad_ugr" class="FOOT_LINK" target="_blank" title="@iswad_ugr">
@iswad_ugr</a></li>
</ul>
</div>
<div class="FOOT_LIST_CONTAINER" style="width:17%;">
<h2 title="Software libre" class="FOOT_LIST_TITLE">Software libre</h2>
<h2 title="Free software" class="FOOT_LIST_TITLE">Free software</h2>
<ul class="FOOT_LIST">
<li><a href="https://openswad.org/source/" target="_blank" class="FOOT_LINK" title="Source code">
Source code</a></li>
@ -85,21 +75,43 @@
Roadmap</a></li>
<li><a href="https://openswad.org/author/" target="_blank" class="FOOT_LINK" title="Authors">
Authors</a></li>
<li><a href="https://openswad.org/pfc/" target="_blank" class="FOOT_LINK" title="Proyectos fin de carrera">
Proyectos fin de carrera</a></li>
<li><a href="https://openswad.org/pfc/" target="_blank" class="FOOT_LINK" title="Final Year Projects">
Final Year Projects</a></li>
</ul>
</div>
<div class="FOOT_LIST_CONTAINER" style="width:17%;">
<h2 title="Installations" class="FOOT_LIST_TITLE">Installations</h2>
<ul class="FOOT_LIST">
<li><a href="https://openswad.org/" target="_blank" class="FOOT_LINK" title="OpenSWAD.org">
OpenSWAD.org</a></li>
<li><a href="https://swad.ugr.es/" target="_blank" class="FOOT_LINK" title="UGR (Spain)">
UGR (Spain)</a></li>
<li><a href="http://www.cevuna.una.py/swad/" target="_blank" class="FOOT_LINK" title="UNA (Paraguay)">
UNA (Paraguay)</a></li>
</ul>
</div>
<div class="FOOT_LIST_CONTAINER" style="width:15%;">
<h2 title="Instalaciones" class="FOOT_LIST_TITLE">Instalaciones</h2>
<h2 title="Mobile" class="FOOT_LIST_TITLE">Mobile</h2>
<ul class="FOOT_LIST">
<li><a href="https://swad.ugr.es/" target="_blank" class="FOOT_LINK" title="UGR (Espa&ntilde;a)">
UGR (Espa&ntilde;a)</a></li>
<li><a href="https://www.cevuna.una.py/swad/" target="_blank" class="FOOT_LINK" title="UNA (Paraguay)">
UNA (Paraguay)</a></li>
<li><a href="https://openswad.org/swad/" target="_blank" class="FOOT_LINK" title="OpenSWAD.org">
OpenSWAD.org</a></li>
<li>
<a href="https://openswad.org/swadroid/" target="_blank" class="FOOT_LINK" title="SWADroid: SWAD App for Android">
SWADroid</a></li>
<a href="https://play.google.com/store/apps/details?id=es.ugr.swad.swadroid" target="_blank" class="FOOT_LINK" title="SWADroid: SWAD App for Android">
SWADroid Google Play</a></li>
<li><a href="http://swadroid.wordpress.com/" class="FOOT_LINK" target="_blank" title="SWADroid Blog">
SWADroid Blog</a></li>
<li><a href="http://twitter.com/swadroid" class="FOOT_LINK" target="_blank" title="@SWADroid">
SWADroid Twitter</a></li>
<li><a href="https://plus.google.com/115615684349730524355/posts" class="FOOT_LINK" target="_blank" title="SWADroid Blog">
SWADroid Google+</a></li>
<li><a href="https://github.com/Amab/SWADroid" class="FOOT_LINK" target="_blank" title="SWADroid GitHub">
SWADroid GitHub</a></li>
<li><a href="https://www.openhub.net/p/swadroid" class="FOOT_LINK" target="_blank" title="SWADroid GitHub">
SWADroid Open HUB</a></li>
<li><a href="http://twitter.com/iswad_ugr" class="FOOT_LINK" target="_blank" title="@iswad_ugr">
iSWAD Twitter</a></li>
</ul>
</div>
</div>
<br clear="all" />
<br style="clear:both;" />

View File

@ -28,6 +28,7 @@
/*********************************** TODO ************************************/
/*****************************************************************************/
// TODO: Is it necessary FileType in table "files"?
// TODO: When notifications are marked as seen, do it in a priori function
// TODO: Use the library http://fukuchi.org/works/qrencode/index.html.en instead Google QR
// TODO: [Ceferino Bustos Valdivia]:
@ -36,16 +37,78 @@
// Sería completa esta aplicación, si la asistencia se incluyera, automáticamente, en el apartado de evaluación de cada alumno. De esta forma podríamos ver sus trabajos y asistencias de forma personalizada.
// TODO: OpenSWAD.org: ¿Qué debería tener una buena gestión de grupos? Es para tomar ideas ;)
// José Raúl Canay @raulcanay: por ejemplo, que puedas sacar un listado exportable de en qué grupos está una persona de quienes están en un grupo.
/* Propuestas de Fidel Rodríguez López:
==========================================================
1 @@ TUTORIAS GRUPALES/INDIVIDUALES "VIRTUALES"
==========================================================
# Permite realizar grupos de chat, de uno o varios profesores con sus alumnos.
Útil para la resolución de ejercicios y dudas sencillas.
# Notificación, citas y aviso de tutorias virtuales.
# Permitir el envío de imágenes y fotos a través de la sala de Chat.s
==========================================================
2 @@ MEJORA DEL SISTEMA DE ANOTACIÓN DE ASISTENCIA
==========================================================
# Sistema dinámico que permita la anotación de asistencia de los alumnos a las
clases prácticas y que facilite la administración de los mismos (notificación al
profesor cuando todos los alumnos sean registrados, por ejemplo). Implementación
vía AJAX para ser más agradable.
==========================================================
3 @@ GENERADOR DE CALIFICACIONES EN PDF
==========================================================
# El servidor es capaz de generar un PDF para cualquier tarea (por ejemplo, con
las calificaciones de los alumnos para publicar en el tablón, con las convocatorias
de examen...). Para esto se puede usar alguna libreria libre tipo FPDF.
# Algunos profesores prefieren tener en papel anotadas las calificaciones.
==========================================================
4 @@ TUTORIAL INICIACIÓN
==========================================================
# Es importante indicar tanto al profesor, Administrador y alumno de qué es capaz
SWAD, para poder así explotar todas sus posibilidades. Un tutorial amigable e inicial
a base de Tooltips o imágenes, puede ser bastante útil.
==========================================================
5 @@ MEJORA DE LA INTERFAZ
==========================================================
# Botones, colores e iconos más modernos. Los iconos se pueden suprimir por iconos en
fuentes (como font-awesome, open-source). Los botones en CSS3 le darían un aire más
moderno y renovado (se podría basar en algún framework open-source).
==========================================================
6 @@ INCORPORACIÓN DE UN TABLÓN DE PROGRAMACIÓN DE ASIGNATURA
==========================================================
# Hacer pequeñas modificaciones para ver la zona de Actividades de otra forma. Por ejemplo,
una estructura de árbol (como la zona de Documentos) pero con las tareas programadas para la
semana proporcionaría una visión más global (como una "agenda") de lo que hay que realizar.
# El tablón incorporaría solo los títulos de los ejercicios. Por ejemplo:
==>Semana 16 Febr. -> 22 Marzo
----------Prácticas
----------------Entrega Práctica 2 [Fecha Límite] (Color verde o rojo, si ha pasado la fecha, como actualmente en Actividades)
----------Teoría
----------------Tema 2
----------Otros
----------------Entregar Relación de Ejercicios
==>Semana 23 Febr.-> 1 Marzo
----------Prácticas
----------Teoría
----------------Examen Tema 2
----------Otros
....Etc.....
==========================================================
7 @@ INSTALACIÓN DE EDITOR DE TEXTO ENRIQUECIDO
==========================================================
# Completar el proyecto que empezó el antiguo alumno.
*/
/*****************************************************************************/
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 14.74.11 (2015/02/12)"
#define Log_PLATFORM_VERSION "SWAD 14.74.12 (2015/02/23)"
// 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.74.12: Feb 23, 2015 Fixed bug in file browser, reported by Germán Luzón González and Javier Fernández Baldomero. (178119 lines)
Version 14.74.11: Feb 10, 2015 Changes in swad.js. (178060 lines)
Version 14.74.10: Feb 10, 2015 Removed meta tag. (178060 lines)
Version 14.74.9: Feb 10, 2015 Description/keywords meta tags and canonical URL added to head. (178060 lines)

View File

@ -28,8 +28,8 @@
/** Uncomment one of the following installations of SWAD or create your own **/
/*****************************************************************************/
//#define LOCALHOST_UBUNTU // Comment this line if not applicable
#define OPENSWAD_ORG // Comment this line if not applicable
#define LOCALHOST_UBUNTU // Comment this line if not applicable
//#define OPENSWAD_ORG // Comment this line if not applicable
//#define SWAD_UGR_ES // Comment this line if not applicable
//#define WWW_CEVUNA_UNA_PY // Comment this line if not applicable
@ -112,7 +112,7 @@
#define Cfg_AUTOMATIC_EMAIL_SMTP_PORT "465" // SMTP port for sending automatic e-mails
#define Cfg_AUTOMATIC_EMAIL_FROM "acanas@openswad.org" // E-mail address from where automatic e-mails will be sent
#define Cfg_DATABASE_HOST "localhost" // Database host
#define Cfg_DEFAULT_LANGUAGE_FOR_NEW_USERS Txt_LANGUAGE_EN // Default language for new users
#define Cfg_DEFAULT_LANGUAGE_FOR_NEW_USERS Txt_LANGUAGE_ES // Default language for new users
#define Cfg_LOG_START_YEAR 2012 // Year when the log started in the database
// Footer of page with info about the institution where this platform is installed
@ -498,7 +498,6 @@
#define Cfg_MIN_TIME_TO_RECOMPUTE_AVG_PHOTO ((time_t)( 12UL*60UL*60UL)) // After these seconds, users can recompute the average photos of a degree
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/

View File

@ -4488,7 +4488,7 @@ static void Brw_GetAndUpdateDateLastAccFileBrowser (void)
Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Brw_FileBrowserForDB_file_browser_last[Gbl.FileBrowser.Type],
Cod);
DB_QueryUPDATE (Query,"can not update date of last access to a file browser");
DB_QueryREPLACE (Query,"can not update date of last access to a file browser");
}
/*****************************************************************************/
@ -4739,11 +4739,11 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,
/***** Get file metadata *****/
Brw_GetFileMetadataByPath (&FileMetadata);
Brw_GetFileTypeSizeAndDate (&FileMetadata);
if (FileMetadata.FilCod <= 0) // No entry for this file in database table of files
/* Add entry to the table of files/folders */
FileMetadata.FilCod = Brw_AddPathToDB (-1L,FileMetadata.FileType,
Gbl.FileBrowser.Priv.FullPathInTree,false,Brw_LICENSE_DEFAULT);
Brw_GetFileSizeAndDate (&FileMetadata);
/***** Is this row public or private? *****/
if (SeeDocsZone || AdminDocsZone || CommonZone)
@ -8730,7 +8730,7 @@ void Brw_ShowFileMetadata (void)
/***** Get file metadata *****/
Brw_GetFileMetadataByPath (&FileMetadata);
Found = Brw_GetFileSizeAndDate (&FileMetadata);
Found = Brw_GetFileTypeSizeAndDate (&FileMetadata);
if (Found)
{
@ -9150,7 +9150,7 @@ void Brw_DownloadFile (void)
/***** Get file metadata *****/
Brw_GetFileMetadataByPath (&FileMetadata);
Found = Brw_GetFileSizeAndDate (&FileMetadata);
Found = Brw_GetFileTypeSizeAndDate (&FileMetadata);
if (Found)
{
@ -9506,7 +9506,7 @@ void Brw_ChgFileMetadata (void)
/***** Get file metadata from database *****/
Brw_GetFileMetadataByPath (&FileMetadata);
Brw_GetFileSizeAndDate (&FileMetadata);
Brw_GetFileTypeSizeAndDate (&FileMetadata);
/***** Check if I can change file metadata *****/
if (Brw_CheckIfICanEditFileMetadata (FileMetadata.PublisherUsrCod))
@ -9904,7 +9904,7 @@ void Brw_GetFileMetadataByCod (struct FileMetadata *FileMetadata)
/*****************************************************************************/
// Return true if file exists
bool Brw_GetFileSizeAndDate (struct FileMetadata *FileMetadata)
bool Brw_GetFileTypeSizeAndDate (struct FileMetadata *FileMetadata)
{
char Path[PATH_MAX+1];
struct stat FileStatus;
@ -10210,9 +10210,7 @@ long Brw_GetCodForFiles (void)
case Brw_ADMI_DOCUM_CRS:
case Brw_ADMI_SHARE_CRS:
case Brw_ADMI_ASSIG_USR:
case Brw_ADMI_ASSIG_CRS:
case Brw_ADMI_WORKS_USR:
case Brw_ADMI_WORKS_CRS:
case Brw_ADMI_MARKS_CRS:
return Gbl.CurrentCrs.Crs.CrsCod;
case Brw_ADMI_DOCUM_GRP:
@ -10232,8 +10230,8 @@ static long Brw_GetZoneUsrCodForFiles (void)
{
switch (Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type])
{
case Brw_ADMI_ASSIG_CRS:
case Brw_ADMI_WORKS_CRS:
case Brw_ADMI_ASSIG_USR:
case Brw_ADMI_WORKS_USR:
return Gbl.Usrs.Other.UsrDat.UsrCod;
case Brw_ADMI_BRIEF_USR:
return Gbl.Usrs.Me.UsrDat.UsrCod;

View File

@ -183,7 +183,7 @@ void Brw_ChgFileMetadata (void);
long Brw_GetFilCodByPath (const char *Path);
void Brw_GetFileMetadataByPath (struct FileMetadata *FileMetadata);
void Brw_GetFileMetadataByCod (struct FileMetadata *FileMetadata);
bool Brw_GetFileSizeAndDate (struct FileMetadata *FileMetadata);
bool Brw_GetFileTypeSizeAndDate (struct FileMetadata *FileMetadata);
void Brw_GetAndUpdateFileViews (struct FileMetadata *FileMetadata);
void Brw_UpdateMyFileViews (long FilCod);

View File

@ -71,7 +71,7 @@ int main (int argc, char *argv[])
{
extern const char *Txt_You_dont_have_permission_to_perform_this_action;
/*
fprintf (stdout,"Content-type: text/html; charset=windows-1252\r\n"
"Status: 503 Service Temporarily Unavailable\r\n\r\n"
"<html lang=\"es\">"
@ -84,7 +84,7 @@ int main (int argc, char *argv[])
Cfg_PLATFORM_FULL_NAME,
Cfg_PLATFORM_SHORT_NAME);
exit (0);
*/
if (argc > 1)
{
fprintf (stdout,"Call %s without parameters",argv[0]);

View File

@ -3766,7 +3766,7 @@ static bool Svc_WriteRowFileBrowser (unsigned Level,Brw_FileType_t FileType,cons
{
/* Get file metadata */
Brw_GetFileMetadataByPath (&FileMetadata);
Brw_GetFileSizeAndDate (&FileMetadata);
Brw_GetFileTypeSizeAndDate (&FileMetadata);
if (FileMetadata.FilCod <= 0) // No entry for this file in database table of files
/* Add entry to the table of files/folders */
@ -3926,7 +3926,7 @@ int swad__getFile (struct soap *soap,
Brw_InitializeFileBrowser ();
/***** Get file size and date *****/
Brw_GetFileSizeAndDate (&FileMetadata);
Brw_GetFileTypeSizeAndDate (&FileMetadata);
/***** Update number of views *****/
Brw_GetAndUpdateFileViews (&FileMetadata);