mirror of https://github.com/acanas/swad-core.git
Version 14.56
This commit is contained in:
parent
acee6c9455
commit
20e7fdad39
2
Makefile
2
Makefile
|
@ -35,7 +35,7 @@ OBJS = swad_account.o swad_action.o swad_announcement.o swad_assignment.o swad_a
|
||||||
swad_global.o swad_group.o \
|
swad_global.o swad_group.o \
|
||||||
swad_holiday.o \
|
swad_holiday.o \
|
||||||
swad_icon.o swad_ID.o swad_import.o swad_indicator.o swad_info.o swad_institution.o \
|
swad_icon.o swad_ID.o swad_import.o swad_indicator.o swad_info.o swad_institution.o \
|
||||||
swad_layout.o swad_link.o \
|
swad_layout.o swad_link.o swad_logo.o \
|
||||||
swad_mail.o swad_main.o swad_mark.o swad_menu.o swad_message.o \
|
swad_mail.o swad_main.o swad_mark.o swad_menu.o swad_message.o \
|
||||||
swad_network.o swad_nickname.o swad_notice.o swad_notification.o \
|
swad_network.o swad_nickname.o swad_notice.o swad_notification.o \
|
||||||
swad_pagination.o swad_parameter.o swad_password.o swad_photo.o swad_place.o swad_plugin.o swad_preference.o \
|
swad_pagination.o swad_parameter.o swad_password.o swad_photo.o swad_place.o swad_plugin.o swad_preference.o \
|
||||||
|
|
|
@ -627,7 +627,6 @@ CREATE TABLE IF NOT EXISTS institutions (
|
||||||
RequesterUsrCod INT NOT NULL DEFAULT -1,
|
RequesterUsrCod INT NOT NULL DEFAULT -1,
|
||||||
ShortName VARCHAR(32) NOT NULL,
|
ShortName VARCHAR(32) NOT NULL,
|
||||||
FullName TEXT NOT NULL,
|
FullName TEXT NOT NULL,
|
||||||
Logo VARCHAR(32) NOT NULL,
|
|
||||||
WWW VARCHAR(255) NOT NULL,
|
WWW VARCHAR(255) NOT NULL,
|
||||||
UNIQUE INDEX(InsCod),
|
UNIQUE INDEX(InsCod),
|
||||||
INDEX(CtyCod),
|
INDEX(CtyCod),
|
||||||
|
|
|
@ -172,7 +172,8 @@ Institution:
|
||||||
80. ActInsSch Search for courses, teachers, documents...
|
80. ActInsSch Search for courses, teachers, documents...
|
||||||
|
|
||||||
81. ActPrnInsInf Print information on the current institution
|
81. ActPrnInsInf Print information on the current institution
|
||||||
82. ActChgInsLog Change logo of institution
|
--. ActReqInsLog Show form to send the logo of the current institution
|
||||||
|
82. ActRecInsLog Receive and store the logo of the current institution
|
||||||
|
|
||||||
83. ActEdiCtr Edit centres
|
83. ActEdiCtr Edit centres
|
||||||
84. ActReqCtr Request the creation of a request for a new centre (a teacher makes the petition to an administrator)
|
84. ActReqCtr Request the creation of a request for a new centre (a teacher makes the petition to an administrator)
|
||||||
|
@ -1312,7 +1313,8 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActInsSch */{1182,-1,TabIns,ActInsReqSch ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Sch_GetParamsSearch ,Sch_InsSearch ,NULL},
|
/* ActInsSch */{1182,-1,TabIns,ActInsReqSch ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Sch_GetParamsSearch ,Sch_InsSearch ,NULL},
|
||||||
|
|
||||||
/* ActPrnInsInf */{1154,-1,TabIns,ActSeeInsInf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Ins_PrintConfiguration ,NULL},
|
/* ActPrnInsInf */{1154,-1,TabIns,ActSeeInsInf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Ins_PrintConfiguration ,NULL},
|
||||||
/* ActChgInsLog */{ 699,-1,TabIns,ActSeeIns ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ins_ChangeInsLogo ,NULL},
|
/* ActReqInsLog */{1245,-1,TabCtr,ActSeeInsInf ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ins_RequestLogo ,NULL},
|
||||||
|
/* ActRecInsLog */{ 699,-1,TabCtr,ActSeeInsInf ,0x100,0x100,0x100,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Ins_ReceiveLogo ,NULL},
|
||||||
|
|
||||||
/* ActEdiCtr */{ 681,-1,TabIns,ActSeeCtr ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ctr_EditCentres ,NULL},
|
/* ActEdiCtr */{ 681,-1,TabIns,ActSeeCtr ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ctr_EditCentres ,NULL},
|
||||||
/* ActReqCtr */{1208,-1,TabIns,ActSeeCtr ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ctr_RecFormReqCtr ,NULL},
|
/* ActReqCtr */{1208,-1,TabIns,ActSeeCtr ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ctr_RecFormReqCtr ,NULL},
|
||||||
|
@ -2980,7 +2982,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
||||||
ActSeeIns, // #696
|
ActSeeIns, // #696
|
||||||
ActEdiIns, // #697
|
ActEdiIns, // #697
|
||||||
ActNewIns, // #698
|
ActNewIns, // #698
|
||||||
ActChgInsLog, // #699
|
ActRecInsLog, // #699
|
||||||
ActChgInsWWW, // #700
|
ActChgInsWWW, // #700
|
||||||
ActRenInsFul, // #701
|
ActRenInsFul, // #701
|
||||||
ActRenInsSho, // #702
|
ActRenInsSho, // #702
|
||||||
|
@ -3526,6 +3528,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
||||||
ActSeeSyl, // #1242
|
ActSeeSyl, // #1242
|
||||||
ActChgMnu, // #1243
|
ActChgMnu, // #1243
|
||||||
ActReqCtrLog, // #1244
|
ActReqCtrLog, // #1244
|
||||||
|
ActReqInsLog, // #1245
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -69,9 +69,9 @@ typedef enum
|
||||||
|
|
||||||
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||||
|
|
||||||
#define Act_NUM_ACTIONS (7+52+15+39+23+17+204+184+94+168+28+75)
|
#define Act_NUM_ACTIONS (7+52+15+40+23+17+204+184+94+168+28+75)
|
||||||
|
|
||||||
#define Act_MAX_ACTION_COD 1244
|
#define Act_MAX_ACTION_COD 1245
|
||||||
|
|
||||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
|
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
|
||||||
|
|
||||||
|
@ -186,41 +186,42 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
||||||
// Secondary actions
|
// Secondary actions
|
||||||
#define ActInsSch (ActChgInsSta+ 7)
|
#define ActInsSch (ActChgInsSta+ 7)
|
||||||
#define ActPrnInsInf (ActChgInsSta+ 8)
|
#define ActPrnInsInf (ActChgInsSta+ 8)
|
||||||
#define ActChgInsLog (ActChgInsSta+ 9)
|
#define ActReqInsLog (ActChgInsSta+ 9)
|
||||||
|
#define ActRecInsLog (ActChgInsSta+ 10)
|
||||||
|
|
||||||
#define ActEdiCtr (ActChgInsSta+ 10)
|
#define ActEdiCtr (ActChgInsSta+ 11)
|
||||||
#define ActReqCtr (ActChgInsSta+ 11)
|
#define ActReqCtr (ActChgInsSta+ 12)
|
||||||
#define ActNewCtr (ActChgInsSta+ 12)
|
#define ActNewCtr (ActChgInsSta+ 13)
|
||||||
#define ActRemCtr (ActChgInsSta+ 13)
|
#define ActRemCtr (ActChgInsSta+ 14)
|
||||||
#define ActChgCtrIns (ActChgInsSta+ 14)
|
#define ActChgCtrIns (ActChgInsSta+ 15)
|
||||||
#define ActChgCtrPlc (ActChgInsSta+ 15)
|
#define ActChgCtrPlc (ActChgInsSta+ 16)
|
||||||
#define ActRenCtrSho (ActChgInsSta+ 16)
|
#define ActRenCtrSho (ActChgInsSta+ 17)
|
||||||
#define ActRenCtrFul (ActChgInsSta+ 17)
|
#define ActRenCtrFul (ActChgInsSta+ 18)
|
||||||
#define ActChgCtrWWW (ActChgInsSta+ 18)
|
#define ActChgCtrWWW (ActChgInsSta+ 19)
|
||||||
#define ActChgCtrSta (ActChgInsSta+ 19)
|
#define ActChgCtrSta (ActChgInsSta+ 20)
|
||||||
|
|
||||||
#define ActEdiDpt (ActChgInsSta+ 20)
|
#define ActEdiDpt (ActChgInsSta+ 21)
|
||||||
#define ActNewDpt (ActChgInsSta+ 21)
|
#define ActNewDpt (ActChgInsSta+ 22)
|
||||||
#define ActRemDpt (ActChgInsSta+ 22)
|
#define ActRemDpt (ActChgInsSta+ 23)
|
||||||
#define ActChgDptIns (ActChgInsSta+ 23)
|
#define ActChgDptIns (ActChgInsSta+ 24)
|
||||||
#define ActRenDptSho (ActChgInsSta+ 24)
|
#define ActRenDptSho (ActChgInsSta+ 25)
|
||||||
#define ActRenDptFul (ActChgInsSta+ 25)
|
#define ActRenDptFul (ActChgInsSta+ 26)
|
||||||
#define ActChgDptWWW (ActChgInsSta+ 26)
|
#define ActChgDptWWW (ActChgInsSta+ 27)
|
||||||
|
|
||||||
#define ActEdiPlc (ActChgInsSta+ 27)
|
#define ActEdiPlc (ActChgInsSta+ 28)
|
||||||
#define ActNewPlc (ActChgInsSta+ 28)
|
#define ActNewPlc (ActChgInsSta+ 29)
|
||||||
#define ActRemPlc (ActChgInsSta+ 29)
|
#define ActRemPlc (ActChgInsSta+ 30)
|
||||||
#define ActRenPlcSho (ActChgInsSta+ 30)
|
#define ActRenPlcSho (ActChgInsSta+ 31)
|
||||||
#define ActRenPlcFul (ActChgInsSta+ 31)
|
#define ActRenPlcFul (ActChgInsSta+ 32)
|
||||||
|
|
||||||
#define ActEdiHld (ActChgInsSta+ 32)
|
#define ActEdiHld (ActChgInsSta+ 33)
|
||||||
#define ActNewHld (ActChgInsSta+ 33)
|
#define ActNewHld (ActChgInsSta+ 34)
|
||||||
#define ActRemHld (ActChgInsSta+ 34)
|
#define ActRemHld (ActChgInsSta+ 35)
|
||||||
#define ActChgHldPlc (ActChgInsSta+ 35)
|
#define ActChgHldPlc (ActChgInsSta+ 36)
|
||||||
#define ActChgHldTyp (ActChgInsSta+ 36)
|
#define ActChgHldTyp (ActChgInsSta+ 37)
|
||||||
#define ActChgHldStrDat (ActChgInsSta+ 37)
|
#define ActChgHldStrDat (ActChgInsSta+ 38)
|
||||||
#define ActChgHldEndDat (ActChgInsSta+ 38)
|
#define ActChgHldEndDat (ActChgInsSta+ 39)
|
||||||
#define ActRenHld (ActChgInsSta+ 39)
|
#define ActRenHld (ActChgInsSta+ 40)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************************* Centre tab ********************************/
|
/********************************* Centre tab ********************************/
|
||||||
|
|
132
swad_centre.c
132
swad_centre.c
|
@ -35,6 +35,7 @@
|
||||||
#include "swad_database.h"
|
#include "swad_database.h"
|
||||||
#include "swad_global.h"
|
#include "swad_global.h"
|
||||||
#include "swad_institution.h"
|
#include "swad_institution.h"
|
||||||
|
#include "swad_logo.h"
|
||||||
#include "swad_parameter.h"
|
#include "swad_parameter.h"
|
||||||
#include "swad_QR.h"
|
#include "swad_QR.h"
|
||||||
#include "swad_string.h"
|
#include "swad_string.h"
|
||||||
|
@ -82,7 +83,7 @@ static Ctr_Status_t Ctr_GetStatusBitsFromStatusTxt (Ctr_StatusTxt_t StatusTxt);
|
||||||
static void Ctr_PutParamOtherCtrCod (long CtrCod);
|
static void Ctr_PutParamOtherCtrCod (long CtrCod);
|
||||||
static void Ctr_RenameCentre (Cns_ShortOrFullName_t ShortOrFullName);
|
static void Ctr_RenameCentre (Cns_ShortOrFullName_t ShortOrFullName);
|
||||||
static bool Ctr_CheckIfCentreNameExistsInCurrentIns (const char *FieldName,const char *Name,long CtrCod);
|
static bool Ctr_CheckIfCentreNameExistsInCurrentIns (const char *FieldName,const char *Name,long CtrCod);
|
||||||
static void Ctr_PutFormToChangeCtrLogo (bool LogoExists);
|
|
||||||
static void Ctr_PutFormToChangeCtrPhoto (bool PhotoExists);
|
static void Ctr_PutFormToChangeCtrPhoto (bool PhotoExists);
|
||||||
static void Ctr_PutFormToCreateCentre (void);
|
static void Ctr_PutFormToCreateCentre (void);
|
||||||
static void Ctr_PutHeadCentresForSeeing (bool OrderSelectable);
|
static void Ctr_PutHeadCentresForSeeing (bool OrderSelectable);
|
||||||
|
@ -242,8 +243,6 @@ static void Ctr_Configuration (bool PrintView)
|
||||||
extern const char *Txt_Degrees;
|
extern const char *Txt_Degrees;
|
||||||
extern const char *Txt_Courses;
|
extern const char *Txt_Courses;
|
||||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||||
char PathLogo[PATH_MAX+1];
|
|
||||||
bool LogoExists;
|
|
||||||
char PathPhoto[PATH_MAX+1];
|
char PathPhoto[PATH_MAX+1];
|
||||||
bool PhotoExists;
|
bool PhotoExists;
|
||||||
char *PhotoAttribution = NULL;
|
char *PhotoAttribution = NULL;
|
||||||
|
@ -251,14 +250,6 @@ static void Ctr_Configuration (bool PrintView)
|
||||||
|
|
||||||
if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
|
if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
|
||||||
{
|
{
|
||||||
/***** Path to logo *****/
|
|
||||||
sprintf (PathLogo,"%s/%s/%02u/%u/logo/%u.png",
|
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR,
|
|
||||||
(unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100),
|
|
||||||
(unsigned) Gbl.CurrentCtr.Ctr.CtrCod,
|
|
||||||
(unsigned) Gbl.CurrentCtr.Ctr.CtrCod);
|
|
||||||
LogoExists = Fil_CheckIfPathExists (PathLogo);
|
|
||||||
|
|
||||||
/***** Path to photo *****/
|
/***** Path to photo *****/
|
||||||
sprintf (PathPhoto,"%s/%s/%02u/%u/%u.jpg",
|
sprintf (PathPhoto,"%s/%s/%02u/%u/%u.jpg",
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR,
|
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR,
|
||||||
|
@ -267,7 +258,7 @@ static void Ctr_Configuration (bool PrintView)
|
||||||
(unsigned) Gbl.CurrentCtr.Ctr.CtrCod);
|
(unsigned) Gbl.CurrentCtr.Ctr.CtrCod);
|
||||||
PhotoExists = Fil_CheckIfPathExists (PathPhoto);
|
PhotoExists = Fil_CheckIfPathExists (PathPhoto);
|
||||||
|
|
||||||
/***** Links to print view and upload photo *****/
|
/***** Links to print view, upload logo and upload photo *****/
|
||||||
if (!PrintView)
|
if (!PrintView)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<div style=\"text-align:center;\">");
|
fprintf (Gbl.F.Out,"<div style=\"text-align:center;\">");
|
||||||
|
@ -276,10 +267,10 @@ static void Ctr_Configuration (bool PrintView)
|
||||||
Lay_PutLinkToPrintView1 (ActPrnCtrInf);
|
Lay_PutLinkToPrintView1 (ActPrnCtrInf);
|
||||||
Lay_PutLinkToPrintView2 ();
|
Lay_PutLinkToPrintView2 ();
|
||||||
|
|
||||||
/* Link to upload photo */
|
/* Links to upload logo and photo */
|
||||||
if (Gbl.Usrs.Me.LoggedRole >= Rol_ROLE_CTR_ADMIN)
|
if (Gbl.Usrs.Me.LoggedRole >= Rol_ROLE_CTR_ADMIN)
|
||||||
{
|
{
|
||||||
Ctr_PutFormToChangeCtrLogo (LogoExists);
|
Log_PutFormToChangeLogo (Sco_SCOPE_CENTRE);
|
||||||
Ctr_PutFormToChangeCtrPhoto (PhotoExists);
|
Ctr_PutFormToChangeCtrPhoto (PhotoExists);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1725,129 +1716,22 @@ void Ctr_ChangeCtrStatus (void)
|
||||||
Ctr_EditCentres ();
|
Ctr_EditCentres ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/********* Put a link to the action used to request logo of centre ***********/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void Ctr_PutFormToChangeCtrLogo (bool LogoExists)
|
|
||||||
{
|
|
||||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
|
||||||
extern const char *Txt_Change_logo;
|
|
||||||
extern const char *Txt_Upload_logo;
|
|
||||||
const char *Msg;
|
|
||||||
|
|
||||||
/***** Link for changing / uploading the photo *****/
|
|
||||||
Act_FormStart (ActReqCtrLog);
|
|
||||||
Msg = LogoExists ? Txt_Change_logo :
|
|
||||||
Txt_Upload_logo;
|
|
||||||
Act_LinkFormSubmit (Msg,The_ClassFormul[Gbl.Prefs.Theme]);
|
|
||||||
Lay_PutSendIcon ("ctr",Msg,Msg);
|
|
||||||
fprintf (Gbl.F.Out,"</form>");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********** Show a form for sending a logo of the current centre ************/
|
/*********** Show a form for sending a logo of the current centre ************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Ctr_RequestLogo (void)
|
void Ctr_RequestLogo (void)
|
||||||
{
|
{
|
||||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
Log_RequestLogo (Sco_SCOPE_CENTRE);
|
||||||
extern const char *Txt_You_can_send_a_file_with_an_image_in_png_format_transparent_background_and_size_X_Y;
|
|
||||||
extern const char *Txt_File_with_the_logo;
|
|
||||||
extern const char *Txt_Upload_logo;
|
|
||||||
|
|
||||||
/***** Write help message *****/
|
|
||||||
sprintf (Gbl.Message,Txt_You_can_send_a_file_with_an_image_in_png_format_transparent_background_and_size_X_Y,
|
|
||||||
64,64);
|
|
||||||
Lay_ShowAlert (Lay_INFO,Gbl.Message);
|
|
||||||
|
|
||||||
/***** Write a form to send logo *****/
|
|
||||||
Act_FormStart (ActRecCtrLog);
|
|
||||||
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto;\">"
|
|
||||||
"<tr>"
|
|
||||||
"<td class=\"%s\" style=\"text-align:right;\">"
|
|
||||||
"%s:"
|
|
||||||
"</td>"
|
|
||||||
"<td style=\"text-align:left;\">"
|
|
||||||
"<input type=\"file\" name=\"%s\" size=\"40\" maxlength=\"100\" value=\"\" />"
|
|
||||||
"</td>"
|
|
||||||
"</tr>"
|
|
||||||
"<tr>"
|
|
||||||
"<td colspan=\"2\" style=\"text-align:center;\">"
|
|
||||||
"<input type=\"submit\" value=\"%s\" accept=\"image/jpeg\" />"
|
|
||||||
"</td>"
|
|
||||||
"</tr>"
|
|
||||||
"</table>"
|
|
||||||
"</form>",
|
|
||||||
The_ClassFormul[Gbl.Prefs.Theme],
|
|
||||||
Txt_File_with_the_logo,
|
|
||||||
Fil_NAME_OF_PARAM_FILENAME_ORG,
|
|
||||||
Txt_Upload_logo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************** Receive a photo of the current centre ********************/
|
/***************** Receive the logo of the current centre ********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Ctr_ReceiveLogo (void)
|
void Ctr_ReceiveLogo (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_file_is_not_X;
|
Log_ReceiveLogo (Sco_SCOPE_CENTRE);
|
||||||
char Path[PATH_MAX+1];
|
|
||||||
char FileNameLogoSrc[PATH_MAX+1];
|
|
||||||
char MIMEType[Brw_MAX_BYTES_MIME_TYPE+1];
|
|
||||||
char FileNameLogo[PATH_MAX+1]; // Full name (including path and .png) of the destination file
|
|
||||||
bool WrongType = false;
|
|
||||||
|
|
||||||
/***** Creates directories if not exist *****/
|
|
||||||
sprintf (Path,"%s/%s",
|
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR);
|
|
||||||
Fil_CreateDirIfNotExists (Path);
|
|
||||||
sprintf (Path,"%s/%s/%02u",
|
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR,
|
|
||||||
(unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100));
|
|
||||||
Fil_CreateDirIfNotExists (Path);
|
|
||||||
sprintf (Path,"%s/%s/%02u/%u",
|
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR,
|
|
||||||
(unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100),
|
|
||||||
(unsigned) Gbl.CurrentCtr.Ctr.CtrCod);
|
|
||||||
Fil_CreateDirIfNotExists (Path);
|
|
||||||
sprintf (Path,"%s/%s/%02u/%u/logo",
|
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR,
|
|
||||||
(unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100),
|
|
||||||
(unsigned) Gbl.CurrentCtr.Ctr.CtrCod);
|
|
||||||
Fil_CreateDirIfNotExists (Path);
|
|
||||||
|
|
||||||
/***** Copy in disk the file received from stdin (really from Gbl.F.Tmp) *****/
|
|
||||||
Fil_StartReceptionOfFile (FileNameLogoSrc,MIMEType);
|
|
||||||
|
|
||||||
/* Check if the file type is image/jpeg or image/pjpeg or application/octet-stream */
|
|
||||||
if (strcmp (MIMEType,"image/png"))
|
|
||||||
if (strcmp (MIMEType,"image/x-png"))
|
|
||||||
if (strcmp (MIMEType,"application/octet-stream"))
|
|
||||||
if (strcmp (MIMEType,"application/octetstream"))
|
|
||||||
if (strcmp (MIMEType,"application/octet"))
|
|
||||||
WrongType = true;
|
|
||||||
if (WrongType)
|
|
||||||
{
|
|
||||||
sprintf (Gbl.Message,Txt_The_file_is_not_X,"png");
|
|
||||||
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* End the reception of logo in a temporary file */
|
|
||||||
sprintf (FileNameLogo,"%s/%s/%02u/%u/logo/%u.png",
|
|
||||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CTR,
|
|
||||||
(unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100),
|
|
||||||
(unsigned) Gbl.CurrentCtr.Ctr.CtrCod,
|
|
||||||
(unsigned) Gbl.CurrentCtr.Ctr.CtrCod);
|
|
||||||
if (!Fil_EndReceptionOfFile (FileNameLogo))
|
|
||||||
{
|
|
||||||
Lay_ShowAlert (Lay_WARNING,"Error uploading file.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Show the centre information again *****/
|
|
||||||
Ctr_ShowConfiguration ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -103,6 +103,7 @@ void Ctr_RenameCentreShort (void);
|
||||||
void Ctr_RenameCentreFull (void);
|
void Ctr_RenameCentreFull (void);
|
||||||
void Ctr_ChangeCtrWWW (void);
|
void Ctr_ChangeCtrWWW (void);
|
||||||
void Ctr_ChangeCtrStatus (void);
|
void Ctr_ChangeCtrStatus (void);
|
||||||
|
|
||||||
void Ctr_RequestLogo (void);
|
void Ctr_RequestLogo (void);
|
||||||
void Ctr_ReceiveLogo (void);
|
void Ctr_ReceiveLogo (void);
|
||||||
void Ctr_RequestPhoto (void);
|
void Ctr_RequestPhoto (void);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// swad_changelog.h: changelog
|
// swad_changelog.h: changelog
|
||||||
|
|
||||||
#ifndef _SWAD_LOG
|
#ifndef _SWAD_CHG
|
||||||
#define _SWAD_LOG
|
#define _SWAD_CHG
|
||||||
/*
|
/*
|
||||||
SWAD (Shared Workspace At a Distance),
|
SWAD (Shared Workspace At a Distance),
|
||||||
is a web platform developed at the University of Granada (Spain),
|
is a web platform developed at the University of Granada (Spain),
|
||||||
|
@ -39,22 +39,31 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 14.55.5 (2015/01/16)"
|
#define Log_PLATFORM_VERSION "SWAD 14.56 (2015/01/17)"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// 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
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 14.56: Jan 17, 2015 New module swad_logo for drawing logos of institutions, centres and degrees.
|
||||||
|
New option to upload logo of institution. (173735 lines)
|
||||||
|
1 change necessary in Makefile:
|
||||||
|
Add swad_logo.o to list of object files
|
||||||
|
3 changes necessary in database:
|
||||||
|
UPDATE actions SET Txt='Cambiar logo de institución' WHERE ActCod='699' AND Language='es';
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1245','es','N','Solicitar envío de logo de institución');
|
||||||
|
ALTER TABLE institutions DROP COLUMN Logo;
|
||||||
|
|
||||||
Version 14.55.5: Jan 16, 2015 Code refactoring related to maps of countries. (173573 lines)
|
Version 14.55.5: Jan 16, 2015 Code refactoring related to maps of countries. (173573 lines)
|
||||||
Version 14.55.4: Jan 16, 2015 Fixed bugs in enrollment.
|
Version 14.55.4: Jan 16, 2015 Fixed bugs in enrollment.
|
||||||
New MIME type, reported by Francisco Ocaña Lara. (173576 lines)
|
New MIME type, suggested by Francisco Ocaña Lara. (173576 lines)
|
||||||
Version 14.55.3: Jan 16, 2015 Link in course information to request registration in course.
|
Version 14.55.3: Jan 16, 2015 Link in course information to request registration in course.
|
||||||
Fixed bug in enrollment. (173570 lines)
|
Fixed bug in enrollment. (173570 lines)
|
||||||
Version 14.55.2: Jan 15, 2015 Logo of centre, degree, institution or country in title. (173546 lines)
|
Version 14.55.2: Jan 15, 2015 Logo of centre, degree, institution or country in title. (173546 lines)
|
||||||
Version 14.55.1: Jan 14, 2015 Fixed bug in user's photo. (173510 lines)
|
Version 14.55.1: Jan 14, 2015 Fixed bug in user's photo. (173510 lines)
|
||||||
Version 14.55 : Jan 14, 2015 New option to upload logo of a centre. (173509 lines)
|
Version 14.55: Jan 14, 2015 New option to upload logo of a centre. (173509 lines)
|
||||||
3 changes necessary in database:
|
3 changes necessary in database:
|
||||||
UPDATE actions SET Txt='Enviar logo del centro' WHERE ActCod='1051' AND Language='es';
|
UPDATE actions SET Txt='Cambiar logo de centro' WHERE ActCod='1051' AND Language='es';
|
||||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1244','es','N','Solicitar envío de foto del centro');
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1244','es','N','Solicitar envío de logo cde entro');
|
||||||
ALTER TABLE centres DROP COLUMN Logo;
|
ALTER TABLE centres DROP COLUMN Logo;
|
||||||
|
|
||||||
Version 14.54.7: Jan 13, 2015 Fixed bug in edition of centres. (173349 lines)
|
Version 14.54.7: Jan 13, 2015 Fixed bug in edition of centres. (173349 lines)
|
||||||
|
|
|
@ -348,9 +348,15 @@
|
||||||
#define Cfg_MAX_BYTES_DATABASE_PASSWORD 256
|
#define Cfg_MAX_BYTES_DATABASE_PASSWORD 256
|
||||||
#define Cfg_MAX_BYTES_SMTP_PASSWORD 256
|
#define Cfg_MAX_BYTES_SMTP_PASSWORD 256
|
||||||
|
|
||||||
/* Folders for courses, inside public and private swad directories */
|
/* Folders for institutions, inside public and private swad directories */
|
||||||
|
#define Cfg_FOLDER_INS "ins" // If not exists, it should be created during installation inside swad private and public directory!
|
||||||
|
|
||||||
|
/* Folders for centres, inside public and private swad directories */
|
||||||
#define Cfg_FOLDER_CTR "ctr" // If not exists, it should be created during installation inside swad private and public directory!
|
#define Cfg_FOLDER_CTR "ctr" // If not exists, it should be created during installation inside swad private and public directory!
|
||||||
|
|
||||||
|
/* Folders for centres, inside public and private swad directories */
|
||||||
|
#define Cfg_FOLDER_DEG "deg" // If not exists, it should be created during installation inside swad private and public directory!
|
||||||
|
|
||||||
/* Folders for courses, inside public and private swad directories */
|
/* Folders for courses, inside public and private swad directories */
|
||||||
#define Cfg_FOLDER_CRS "crs" // If not exists, it should be created during installation inside swad private and public directory!
|
#define Cfg_FOLDER_CRS "crs" // If not exists, it should be created during installation inside swad private and public directory!
|
||||||
|
|
||||||
|
@ -393,7 +399,6 @@
|
||||||
#define Cfg_ICON_FOLDER_THEMES "theme" // Directory with all the images for each theme
|
#define Cfg_ICON_FOLDER_THEMES "theme" // Directory with all the images for each theme
|
||||||
#define Cfg_ICON_FOLDER_ICON_SETS "iconset" // Directory with all the icons for each icon set
|
#define Cfg_ICON_FOLDER_ICON_SETS "iconset" // Directory with all the icons for each icon set
|
||||||
#define Cfg_ICON_FOLDER_COUNTRIES "country" // Directory with icons for countries
|
#define Cfg_ICON_FOLDER_COUNTRIES "country" // Directory with icons for countries
|
||||||
#define Cfg_ICON_FOLDER_INSTITUTIONS "institution" // Directory with icons for institutions
|
|
||||||
#define Cfg_ICON_FOLDER_DEGREES "degree" // Directory with icons for degrees
|
#define Cfg_ICON_FOLDER_DEGREES "degree" // Directory with icons for degrees
|
||||||
#define Cfg_ICON_FOLDER_FILEXT "filext" // Directory with icons for file extensions
|
#define Cfg_ICON_FOLDER_FILEXT "filext" // Directory with icons for file extensions
|
||||||
#define Cfg_ICON_FOLDER_PLUGINS "plugin" // Directory with icons for plugins
|
#define Cfg_ICON_FOLDER_PLUGINS "plugin" // Directory with icons for plugins
|
||||||
|
|
|
@ -672,7 +672,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
|
||||||
Ins_PutParamInsCod (Ins.InsCod);
|
Ins_PutParamInsCod (Ins.InsCod);
|
||||||
Act_LinkFormSubmit (Act_GetActionTextFromDB (Act_Actions[ActSeeInsInf].ActCod,ActTxt),
|
Act_LinkFormSubmit (Act_GetActionTextFromDB (Act_Actions[ActSeeInsInf].ActCod,ActTxt),
|
||||||
The_ClassFormul[Gbl.Prefs.Theme]);
|
The_ClassFormul[Gbl.Prefs.Theme]);
|
||||||
Ins_DrawInstitutionLogo (Ins.Logo,Ins.ShortName,16,"vertical-align:middle;");
|
Ins_DrawInstitutionLogo (Ins.InsCod,Ins.ShortName,16,"vertical-align:middle;");
|
||||||
Highlight = (Gbl.CurrentCtr.Ctr.CtrCod <= 0 &&
|
Highlight = (Gbl.CurrentCtr.Ctr.CtrCod <= 0 &&
|
||||||
Gbl.CurrentIns.Ins.InsCod == Ins.InsCod);
|
Gbl.CurrentIns.Ins.InsCod == Ins.InsCod);
|
||||||
if (Highlight)
|
if (Highlight)
|
||||||
|
|
|
@ -1304,10 +1304,9 @@ mysql> DESCRIBE institutions;
|
||||||
| RequesterUsrCod | int(11) | NO | | -1 | |
|
| RequesterUsrCod | int(11) | NO | | -1 | |
|
||||||
| ShortName | varchar(32) | NO | | NULL | |
|
| ShortName | varchar(32) | NO | | NULL | |
|
||||||
| FullName | text | NO | | NULL | |
|
| FullName | text | NO | | NULL | |
|
||||||
| Logo | varchar(32) | NO | | NULL | |
|
|
||||||
| WWW | varchar(255) | NO | | NULL | |
|
| WWW | varchar(255) | NO | | NULL | |
|
||||||
+-----------------+--------------+------+-----+---------+----------------+
|
+-----------------+--------------+------+-----+---------+----------------+
|
||||||
8 rows in set (0.00 sec)
|
7 rows in set (0.01 sec)
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS institutions ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS institutions ("
|
||||||
"InsCod INT NOT NULL AUTO_INCREMENT,"
|
"InsCod INT NOT NULL AUTO_INCREMENT,"
|
||||||
|
@ -1316,7 +1315,6 @@ mysql> DESCRIBE institutions;
|
||||||
"RequesterUsrCod INT NOT NULL DEFAULT -1,"
|
"RequesterUsrCod INT NOT NULL DEFAULT -1,"
|
||||||
"ShortName VARCHAR(32) NOT NULL,"
|
"ShortName VARCHAR(32) NOT NULL,"
|
||||||
"FullName TEXT NOT NULL,"
|
"FullName TEXT NOT NULL,"
|
||||||
"Logo VARCHAR(32) NOT NULL,"
|
|
||||||
"WWW VARCHAR(255) NOT NULL,"
|
"WWW VARCHAR(255) NOT NULL,"
|
||||||
"UNIQUE INDEX(InsCod),INDEX(CtyCod),INDEX(Status))");
|
"UNIQUE INDEX(InsCod),INDEX(CtyCod),INDEX(Status))");
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include "swad_global.h"
|
#include "swad_global.h"
|
||||||
#include "swad_indicator.h"
|
#include "swad_indicator.h"
|
||||||
#include "swad_info.h"
|
#include "swad_info.h"
|
||||||
|
#include "swad_logo.h"
|
||||||
#include "swad_notification.h"
|
#include "swad_notification.h"
|
||||||
#include "swad_parameter.h"
|
#include "swad_parameter.h"
|
||||||
#include "swad_QR.h"
|
#include "swad_QR.h"
|
||||||
|
@ -296,12 +297,19 @@ static void Deg_Configuration (bool PrintView)
|
||||||
|
|
||||||
if (Gbl.CurrentDeg.Deg.DegCod > 0)
|
if (Gbl.CurrentDeg.Deg.DegCod > 0)
|
||||||
{
|
{
|
||||||
|
/***** Links to print view and upload logo *****/
|
||||||
if (!PrintView)
|
if (!PrintView)
|
||||||
{
|
{
|
||||||
/* Link to print view */
|
|
||||||
fprintf (Gbl.F.Out,"<div style=\"text-align:center;\">");
|
fprintf (Gbl.F.Out,"<div style=\"text-align:center;\">");
|
||||||
|
|
||||||
|
/* Link to print view */
|
||||||
Lay_PutLinkToPrintView1 (ActPrnDegInf);
|
Lay_PutLinkToPrintView1 (ActPrnDegInf);
|
||||||
Lay_PutLinkToPrintView2 ();
|
Lay_PutLinkToPrintView2 ();
|
||||||
|
|
||||||
|
/* Link to upload logo */
|
||||||
|
if (Gbl.Usrs.Me.LoggedRole >= Rol_ROLE_DEG_ADMIN)
|
||||||
|
Log_PutFormToChangeLogo (Sco_SCOPE_DEGREE);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -754,7 +762,7 @@ void Deg_WriteBigNameCtyInsCtrDegCrs (void)
|
||||||
Ctr_DrawCentreLogo (Gbl.CurrentCtr.Ctr.CtrCod,Gbl.CurrentCtr.Ctr.ShortName,32,
|
Ctr_DrawCentreLogo (Gbl.CurrentCtr.Ctr.CtrCod,Gbl.CurrentCtr.Ctr.ShortName,32,
|
||||||
"vertical-align:top; margin-right:8px;");
|
"vertical-align:top; margin-right:8px;");
|
||||||
else if (Gbl.CurrentIns.Ins.InsCod > 0)
|
else if (Gbl.CurrentIns.Ins.InsCod > 0)
|
||||||
Ins_DrawInstitutionLogo (Gbl.CurrentIns.Ins.Logo,Gbl.CurrentIns.Ins.ShortName,32,
|
Ins_DrawInstitutionLogo (Gbl.CurrentIns.Ins.InsCod,Gbl.CurrentIns.Ins.ShortName,32,
|
||||||
"vertical-align:top; margin-right:8px;");
|
"vertical-align:top; margin-right:8px;");
|
||||||
else if (Gbl.CurrentCty.Cty.CtyCod > 0)
|
else if (Gbl.CurrentCty.Cty.CtyCod > 0)
|
||||||
if (Cty_CheckIfCountryMapExists (&Gbl.CurrentCty.Cty))
|
if (Cty_CheckIfCountryMapExists (&Gbl.CurrentCty.Cty))
|
||||||
|
|
|
@ -790,7 +790,7 @@ static void Exa_ShowExamAnnouncement (long ExaCod,Exa_tTypeViewExamAnnouncement_
|
||||||
else
|
else
|
||||||
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\" class=\"%s\">",
|
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\" class=\"%s\">",
|
||||||
Ins.WWW,StyleTitle);
|
Ins.WWW,StyleTitle);
|
||||||
Ins_DrawInstitutionLogo (Ins.Logo,Ins.FullName,64,NULL);
|
Ins_DrawInstitutionLogo (Ins.InsCod,Ins.FullName,64,NULL);
|
||||||
fprintf (Gbl.F.Out,"<br />%s%s" \
|
fprintf (Gbl.F.Out,"<br />%s%s" \
|
||||||
"</td>" \
|
"</td>" \
|
||||||
"</tr>",
|
"</tr>",
|
||||||
|
|
|
@ -2146,7 +2146,7 @@ static void For_WriteLinkToForum (For_ForumType_t ForumType,Act_Action_t NextAct
|
||||||
{
|
{
|
||||||
case For_FORUM_INSTITUTION_USRS:
|
case For_FORUM_INSTITUTION_USRS:
|
||||||
case For_FORUM_INSTITUTION_TCHS:
|
case For_FORUM_INSTITUTION_TCHS:
|
||||||
Ins_DrawInstitutionLogo (Gbl.Forum.Ins.Logo,ForumName,16,"vertical-align:middle;");
|
Ins_DrawInstitutionLogo (Gbl.Forum.Ins.InsCod,ForumName,16,"vertical-align:middle;");
|
||||||
break;
|
break;
|
||||||
case For_FORUM_CENTRE_USRS:
|
case For_FORUM_CENTRE_USRS:
|
||||||
case For_FORUM_CENTRE_TCHS:
|
case For_FORUM_CENTRE_TCHS:
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "swad_database.h"
|
#include "swad_database.h"
|
||||||
#include "swad_global.h"
|
#include "swad_global.h"
|
||||||
#include "swad_institution.h"
|
#include "swad_institution.h"
|
||||||
|
#include "swad_logo.h"
|
||||||
#include "swad_parameter.h"
|
#include "swad_parameter.h"
|
||||||
#include "swad_QR.h"
|
#include "swad_QR.h"
|
||||||
#include "swad_text.h"
|
#include "swad_text.h"
|
||||||
|
@ -162,7 +163,7 @@ void Ins_SeeInsWithPendingCtrs (void)
|
||||||
" vertical-align:middle; background-color:%s;\">"
|
" vertical-align:middle; background-color:%s;\">"
|
||||||
"<a href=\"%s\" title=\"%s\" class=\"DAT\" target=\"_blank\">",
|
"<a href=\"%s\" title=\"%s\" class=\"DAT\" target=\"_blank\">",
|
||||||
BgColor,Ins.WWW,Ins.FullName);
|
BgColor,Ins.WWW,Ins.FullName);
|
||||||
Ins_DrawInstitutionLogo (Ins.Logo,Ins.ShortName,16,NULL);
|
Ins_DrawInstitutionLogo (Ins.InsCod,Ins.ShortName,16,"vertical-align:top;");
|
||||||
fprintf (Gbl.F.Out,"</a>"
|
fprintf (Gbl.F.Out,"</a>"
|
||||||
"</td>");
|
"</td>");
|
||||||
|
|
||||||
|
@ -226,7 +227,6 @@ static void Ins_Configuration (bool PrintView)
|
||||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||||
extern const char *Txt_Institution;
|
extern const char *Txt_Institution;
|
||||||
extern const char *Txt_Short_Name;
|
extern const char *Txt_Short_Name;
|
||||||
extern const char *Txt_Logo;
|
|
||||||
extern const char *Txt_Shortcut_to_this_institution;
|
extern const char *Txt_Shortcut_to_this_institution;
|
||||||
extern const char *Txt_QR_code;
|
extern const char *Txt_QR_code;
|
||||||
extern const char *Txt_Centres;
|
extern const char *Txt_Centres;
|
||||||
|
@ -238,12 +238,19 @@ static void Ins_Configuration (bool PrintView)
|
||||||
|
|
||||||
if (Gbl.CurrentIns.Ins.InsCod > 0)
|
if (Gbl.CurrentIns.Ins.InsCod > 0)
|
||||||
{
|
{
|
||||||
/***** Link to print view *****/
|
/***** Links to print view and upload logo *****/
|
||||||
if (!PrintView)
|
if (!PrintView)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<div style=\"text-align:center;\">");
|
fprintf (Gbl.F.Out,"<div style=\"text-align:center;\">");
|
||||||
|
|
||||||
|
/* Link to print view */
|
||||||
Lay_PutLinkToPrintView1 (ActPrnInsInf);
|
Lay_PutLinkToPrintView1 (ActPrnInsInf);
|
||||||
Lay_PutLinkToPrintView2 ();
|
Lay_PutLinkToPrintView2 ();
|
||||||
|
|
||||||
|
/* Link to upload logo */
|
||||||
|
if (Gbl.Usrs.Me.LoggedRole >= Rol_ROLE_INS_ADMIN)
|
||||||
|
Log_PutFormToChangeLogo (Sco_SCOPE_INSTITUTION);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -259,7 +266,7 @@ static void Ins_Configuration (bool PrintView)
|
||||||
" class=\"TITLE_LOCATION\" title=\"%s\">",
|
" class=\"TITLE_LOCATION\" title=\"%s\">",
|
||||||
Gbl.CurrentIns.Ins.WWW,
|
Gbl.CurrentIns.Ins.WWW,
|
||||||
Gbl.CurrentIns.Ins.FullName);
|
Gbl.CurrentIns.Ins.FullName);
|
||||||
Ins_DrawInstitutionLogo (Gbl.CurrentIns.Ins.Logo,
|
Ins_DrawInstitutionLogo (Gbl.CurrentIns.Ins.InsCod,
|
||||||
Gbl.CurrentIns.Ins.ShortName,
|
Gbl.CurrentIns.Ins.ShortName,
|
||||||
64,NULL);
|
64,NULL);
|
||||||
fprintf (Gbl.F.Out,"<br />%s",Gbl.CurrentIns.Ins.FullName);
|
fprintf (Gbl.F.Out,"<br />%s",Gbl.CurrentIns.Ins.FullName);
|
||||||
|
@ -305,28 +312,6 @@ static void Ins_Configuration (bool PrintView)
|
||||||
Txt_Short_Name,
|
Txt_Short_Name,
|
||||||
Gbl.CurrentIns.Ins.ShortName);
|
Gbl.CurrentIns.Ins.ShortName);
|
||||||
|
|
||||||
/***** Institution logo *****/
|
|
||||||
if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)
|
|
||||||
{
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
|
||||||
"<td class=\"%s\" style=\"text-align:right;"
|
|
||||||
" vertical-align:middle;\">"
|
|
||||||
"%s:"
|
|
||||||
"</td>"
|
|
||||||
"<td style=\"text-align:left;"
|
|
||||||
" vertical-align:middle;\">",
|
|
||||||
The_ClassFormul[Gbl.Prefs.Theme],
|
|
||||||
Txt_Logo);
|
|
||||||
Act_FormStart (ActChgInsLog);
|
|
||||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Logo\" size=\"10\" maxlength=\"%u\" value=\"%s\""
|
|
||||||
" onchange=\"javascript:document.getElementById('%s').submit();\" />"
|
|
||||||
"</form>"
|
|
||||||
"</td>"
|
|
||||||
"</tr>",
|
|
||||||
Ins_MAX_LENGTH_INSTITUTION_LOGO,Gbl.CurrentIns.Ins.Logo,
|
|
||||||
Gbl.FormId);
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Link to the institution *****/
|
/***** Link to the institution *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"%s\" style=\"text-align:right;"
|
"<td class=\"%s\" style=\"text-align:right;"
|
||||||
|
@ -545,7 +530,7 @@ static void Ins_ListOneInstitutionForSeeing (struct Institution *Ins,unsigned Nu
|
||||||
"<a href=\"%s\" target=\"_blank\" title=\"%s\">",
|
"<a href=\"%s\" target=\"_blank\" title=\"%s\">",
|
||||||
BgColor,
|
BgColor,
|
||||||
Ins->WWW,Ins->FullName);
|
Ins->WWW,Ins->FullName);
|
||||||
Ins_DrawInstitutionLogo (Ins->Logo,Ins->ShortName,16,NULL);
|
Ins_DrawInstitutionLogo (Ins->InsCod,Ins->ShortName,16,NULL);
|
||||||
fprintf (Gbl.F.Out,"</a>"
|
fprintf (Gbl.F.Out,"</a>"
|
||||||
"</td>");
|
"</td>");
|
||||||
|
|
||||||
|
@ -737,11 +722,11 @@ void Ins_GetListInstitutions (long CtyCod,Ins_GetExtraData_t GetExtraData)
|
||||||
{
|
{
|
||||||
case Ins_GET_MINIMAL_DATA:
|
case Ins_GET_MINIMAL_DATA:
|
||||||
if (CtyCod <= 0) // Get all the institutions, belonging to any country
|
if (CtyCod <= 0) // Get all the institutions, belonging to any country
|
||||||
sprintf (Query,"SELECT InsCod,CtyCod,Status,RequesterUsrCod,ShortName,FullName,Logo,WWW"
|
sprintf (Query,"SELECT InsCod,CtyCod,Status,RequesterUsrCod,ShortName,FullName,WWW"
|
||||||
" FROM institutions"
|
" FROM institutions"
|
||||||
" ORDER BY FullName");
|
" ORDER BY FullName");
|
||||||
else // Get only the institutions belonging to the country specified by CtyCod
|
else // Get only the institutions belonging to the country specified by CtyCod
|
||||||
sprintf (Query,"SELECT InsCod,CtyCod,Status,RequesterUsrCod,ShortName,FullName,Logo,WWW"
|
sprintf (Query,"SELECT InsCod,CtyCod,Status,RequesterUsrCod,ShortName,FullName,WWW"
|
||||||
" FROM institutions"
|
" FROM institutions"
|
||||||
" WHERE CtyCod='%ld'"
|
" WHERE CtyCod='%ld'"
|
||||||
" ORDER BY FullName",
|
" ORDER BY FullName",
|
||||||
|
@ -761,12 +746,12 @@ void Ins_GetListInstitutions (long CtyCod,Ins_GetExtraData_t GetExtraData)
|
||||||
sprintf (Query,"(SELECT institutions.InsCod,institutions.CtyCod,"
|
sprintf (Query,"(SELECT institutions.InsCod,institutions.CtyCod,"
|
||||||
"institutions.Status,institutions.RequesterUsrCod,"
|
"institutions.Status,institutions.RequesterUsrCod,"
|
||||||
"institutions.ShortName,institutions.FullName,"
|
"institutions.ShortName,institutions.FullName,"
|
||||||
"institutions.Logo,institutions.WWW,COUNT(*) AS NumUsrs"
|
"institutions.WWW,COUNT(*) AS NumUsrs"
|
||||||
" FROM institutions,usr_data"
|
" FROM institutions,usr_data"
|
||||||
" WHERE institutions.InsCod=usr_data.InsCod"
|
" WHERE institutions.InsCod=usr_data.InsCod"
|
||||||
" GROUP BY institutions.InsCod)"
|
" GROUP BY institutions.InsCod)"
|
||||||
" UNION "
|
" UNION "
|
||||||
"(SELECT InsCod,CtyCod,Status,RequesterUsrCod,ShortName,FullName,Logo,WWW,0 AS NumUsrs"
|
"(SELECT InsCod,CtyCod,Status,RequesterUsrCod,ShortName,FullName,WWW,0 AS NumUsrs"
|
||||||
" FROM institutions"
|
" FROM institutions"
|
||||||
" WHERE InsCod NOT IN (SELECT DISTINCT InsCod FROM usr_data))"
|
" WHERE InsCod NOT IN (SELECT DISTINCT InsCod FROM usr_data))"
|
||||||
" ORDER BY %s",
|
" ORDER BY %s",
|
||||||
|
@ -775,12 +760,12 @@ void Ins_GetListInstitutions (long CtyCod,Ins_GetExtraData_t GetExtraData)
|
||||||
sprintf (Query,"(SELECT institutions.InsCod,institutions.CtyCod,"
|
sprintf (Query,"(SELECT institutions.InsCod,institutions.CtyCod,"
|
||||||
"institutions.Status,institutions.RequesterUsrCod,"
|
"institutions.Status,institutions.RequesterUsrCod,"
|
||||||
"institutions.ShortName,institutions.FullName,"
|
"institutions.ShortName,institutions.FullName,"
|
||||||
"institutions.Logo,institutions.WWW,COUNT(*) AS NumUsrs"
|
"institutions.WWW,COUNT(*) AS NumUsrs"
|
||||||
" FROM institutions,usr_data"
|
" FROM institutions,usr_data"
|
||||||
" WHERE institutions.CtyCod='%ld' AND institutions.InsCod=usr_data.InsCod"
|
" WHERE institutions.CtyCod='%ld' AND institutions.InsCod=usr_data.InsCod"
|
||||||
" GROUP BY institutions.InsCod)"
|
" GROUP BY institutions.InsCod)"
|
||||||
" UNION "
|
" UNION "
|
||||||
"(SELECT InsCod,CtyCod,Status,RequesterUsrCod,ShortName,FullName,Logo,WWW,0 AS NumUsrs"
|
"(SELECT InsCod,CtyCod,Status,RequesterUsrCod,ShortName,FullName,WWW,0 AS NumUsrs"
|
||||||
" FROM institutions"
|
" FROM institutions"
|
||||||
" WHERE CtyCod='%ld' AND InsCod NOT IN (SELECT DISTINCT InsCod FROM usr_data))"
|
" WHERE CtyCod='%ld' AND InsCod NOT IN (SELECT DISTINCT InsCod FROM usr_data))"
|
||||||
" ORDER BY %s",
|
" ORDER BY %s",
|
||||||
|
@ -830,11 +815,8 @@ void Ins_GetListInstitutions (long CtyCod,Ins_GetExtraData_t GetExtraData)
|
||||||
strncpy (Ins->FullName,row[5],Ins_MAX_LENGTH_INSTITUTION_FULL_NAME);
|
strncpy (Ins->FullName,row[5],Ins_MAX_LENGTH_INSTITUTION_FULL_NAME);
|
||||||
Ins->FullName[Ins_MAX_LENGTH_INSTITUTION_FULL_NAME] = '\0';
|
Ins->FullName[Ins_MAX_LENGTH_INSTITUTION_FULL_NAME] = '\0';
|
||||||
|
|
||||||
/* Get the logo of the institution (row[6]) */
|
/* Get the URL of the institution (row[6]) */
|
||||||
strcpy (Ins->Logo,row[6]);
|
strcpy (Ins->WWW,row[6]);
|
||||||
|
|
||||||
/* Get the URL of the institution (row[7]) */
|
|
||||||
strcpy (Ins->WWW,row[7]);
|
|
||||||
|
|
||||||
/* Get extra data */
|
/* Get extra data */
|
||||||
switch (GetExtraData)
|
switch (GetExtraData)
|
||||||
|
@ -844,8 +826,8 @@ void Ins_GetListInstitutions (long CtyCod,Ins_GetExtraData_t GetExtraData)
|
||||||
Ins->NumCtrs = Ins->NumDpts = Ins->NumDegs = 0;
|
Ins->NumCtrs = Ins->NumDpts = Ins->NumDegs = 0;
|
||||||
break;
|
break;
|
||||||
case Ins_GET_EXTRA_DATA:
|
case Ins_GET_EXTRA_DATA:
|
||||||
/* Get number of users in this institution (row[8]) */
|
/* Get number of users in this institution (row[7]) */
|
||||||
if (sscanf (row[8],"%u",&Ins->NumUsrs) == 1)
|
if (sscanf (row[7],"%u",&Ins->NumUsrs) == 1)
|
||||||
{
|
{
|
||||||
if (Ins->NumUsrs)
|
if (Ins->NumUsrs)
|
||||||
{
|
{
|
||||||
|
@ -894,7 +876,6 @@ bool Ins_GetDataOfInstitutionByCod (struct Institution *Ins,
|
||||||
Ins->RequesterUsrCod = -1L;
|
Ins->RequesterUsrCod = -1L;
|
||||||
Ins->ShortName[0] =
|
Ins->ShortName[0] =
|
||||||
Ins->FullName[0] =
|
Ins->FullName[0] =
|
||||||
Ins->Logo[0] =
|
|
||||||
Ins->WWW[0] = '\0';
|
Ins->WWW[0] = '\0';
|
||||||
Ins->NumStds = Ins->NumTchs = Ins->NumUsrs =
|
Ins->NumStds = Ins->NumTchs = Ins->NumUsrs =
|
||||||
Ins->NumCtrs = Ins->NumDpts = Ins->NumDegs = 0;
|
Ins->NumCtrs = Ins->NumDpts = Ins->NumDegs = 0;
|
||||||
|
@ -905,7 +886,7 @@ bool Ins_GetDataOfInstitutionByCod (struct Institution *Ins,
|
||||||
// Ins->InsCod > 0
|
// Ins->InsCod > 0
|
||||||
|
|
||||||
/***** Get data of an institution from database *****/
|
/***** Get data of an institution from database *****/
|
||||||
sprintf (Query,"SELECT CtyCod,Status,RequesterUsrCod,ShortName,FullName,Logo,WWW"
|
sprintf (Query,"SELECT CtyCod,Status,RequesterUsrCod,ShortName,FullName,WWW"
|
||||||
" FROM institutions WHERE InsCod='%ld'",
|
" FROM institutions WHERE InsCod='%ld'",
|
||||||
Ins->InsCod);
|
Ins->InsCod);
|
||||||
|
|
||||||
|
@ -934,16 +915,13 @@ bool Ins_GetDataOfInstitutionByCod (struct Institution *Ins,
|
||||||
strncpy (Ins->FullName,row[4],Ins_MAX_LENGTH_INSTITUTION_FULL_NAME);
|
strncpy (Ins->FullName,row[4],Ins_MAX_LENGTH_INSTITUTION_FULL_NAME);
|
||||||
Ins->FullName[Ins_MAX_LENGTH_INSTITUTION_FULL_NAME] = '\0';
|
Ins->FullName[Ins_MAX_LENGTH_INSTITUTION_FULL_NAME] = '\0';
|
||||||
|
|
||||||
/* Get the logo of the institution (row[5]) */
|
/* Get the URL of the institution (row[5]) */
|
||||||
strcpy (Ins->Logo,row[5]);
|
strcpy (Ins->WWW,row[5]);
|
||||||
|
|
||||||
/* Get the URL of the institution (row[6]) */
|
|
||||||
strcpy (Ins->WWW,row[6]);
|
|
||||||
|
|
||||||
/* Get extra data */
|
/* Get extra data */
|
||||||
if (GetExtraData == Ins_GET_EXTRA_DATA)
|
if (GetExtraData == Ins_GET_EXTRA_DATA)
|
||||||
{
|
{
|
||||||
/* Get number of users in this institution (row[8]) */
|
/* Get number of users in this institution */
|
||||||
Ins->NumStds = Usr_GetNumberOfUsersInInstitution (Ins->InsCod,Rol_ROLE_STUDENT); // Slow query
|
Ins->NumStds = Usr_GetNumberOfUsersInInstitution (Ins->InsCod,Rol_ROLE_STUDENT); // Slow query
|
||||||
Ins->NumTchs = Usr_GetNumberOfUsersInInstitution (Ins->InsCod,Rol_ROLE_TEACHER); // Slow query
|
Ins->NumTchs = Usr_GetNumberOfUsersInInstitution (Ins->InsCod,Rol_ROLE_TEACHER); // Slow query
|
||||||
Ins->NumUsrs = Ins->NumStds + Ins->NumTchs;
|
Ins->NumUsrs = Ins->NumStds + Ins->NumTchs;
|
||||||
|
@ -1136,7 +1114,7 @@ static void Ins_ListInstitutionsForEdition (void)
|
||||||
fprintf (Gbl.F.Out,"<td title=\"%s\""
|
fprintf (Gbl.F.Out,"<td title=\"%s\""
|
||||||
" style=\"width:20px; text-align:left;\">",
|
" style=\"width:20px; text-align:left;\">",
|
||||||
Ins->FullName);
|
Ins->FullName);
|
||||||
Ins_DrawInstitutionLogo (Ins->Logo,Ins->ShortName,16,NULL);
|
Ins_DrawInstitutionLogo (Ins->InsCod,Ins->ShortName,16,NULL);
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
|
||||||
/* Country */
|
/* Country */
|
||||||
|
@ -1546,7 +1524,7 @@ void Ins_ChangeInsCountry (void)
|
||||||
extern const char *Txt_The_country_of_the_institution_X_has_changed_Y;
|
extern const char *Txt_The_country_of_the_institution_X_has_changed_Y;
|
||||||
struct Institution *Ins;
|
struct Institution *Ins;
|
||||||
struct Country NewCty;
|
struct Country NewCty;
|
||||||
char Query[256+Ins_MAX_LENGTH_INSTITUTION_LOGO];
|
char Query[256];
|
||||||
|
|
||||||
Ins = &Gbl.Inss.EditingIns;
|
Ins = &Gbl.Inss.EditingIns;
|
||||||
|
|
||||||
|
@ -1583,8 +1561,9 @@ void Ins_ChangeInsCountry (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Update the table changing old logo by new logo *****/
|
/***** Update the table changing the country of the institution *****/
|
||||||
sprintf (Query,"UPDATE institutions SET CtyCod='%ld' WHERE InsCod='%ld'",
|
sprintf (Query,"UPDATE institutions SET CtyCod='%ld'"
|
||||||
|
" WHERE InsCod='%ld'",
|
||||||
NewCty.CtyCod,Ins->InsCod);
|
NewCty.CtyCod,Ins->InsCod);
|
||||||
DB_QueryUPDATE (Query,"can not update the country of an institution");
|
DB_QueryUPDATE (Query,"can not update the country of an institution");
|
||||||
|
|
||||||
|
@ -1601,31 +1580,6 @@ void Ins_ChangeInsCountry (void)
|
||||||
Ins_EditInstitutions ();
|
Ins_EditInstitutions ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/********************* Change the logo of a institution **********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Ins_ChangeInsLogo (void)
|
|
||||||
{
|
|
||||||
extern const char *Txt_The_new_logo_is_X;
|
|
||||||
char Query[256+Ins_MAX_LENGTH_INSTITUTION_LOGO];
|
|
||||||
|
|
||||||
/***** Get the new logo for the institution from form *****/
|
|
||||||
Par_GetParToText ("Logo",Gbl.CurrentIns.Ins.Logo,Ins_MAX_LENGTH_INSTITUTION_LOGO);
|
|
||||||
|
|
||||||
/***** Update the table changing old logo by new logo *****/
|
|
||||||
sprintf (Query,"UPDATE institutions SET Logo='%s' WHERE InsCod='%ld'",
|
|
||||||
Gbl.CurrentIns.Ins.Logo,Gbl.CurrentIns.Ins.InsCod);
|
|
||||||
DB_QueryUPDATE (Query,"can not update the logo of the institution");
|
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
|
||||||
sprintf (Gbl.Message,Txt_The_new_logo_is_X,Gbl.CurrentIns.Ins.Logo);
|
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
|
||||||
|
|
||||||
/***** Show the form again *****/
|
|
||||||
Ins_ShowConfiguration ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************** Change the URL of a institution **********************/
|
/********************** Change the URL of a institution **********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1715,6 +1669,24 @@ void Ins_ChangeInsStatus (void)
|
||||||
Ins_EditInstitutions ();
|
Ins_EditInstitutions ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******** Show a form for sending a logo of the current institution **********/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Ins_RequestLogo (void)
|
||||||
|
{
|
||||||
|
Log_RequestLogo (Sco_SCOPE_INSTITUTION);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************** Receive the logo of the current institution ******************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Ins_ReceiveLogo (void)
|
||||||
|
{
|
||||||
|
Log_ReceiveLogo (Sco_SCOPE_INSTITUTION);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************* Put a form to create a new institution ******************/
|
/******************* Put a form to create a new institution ******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1761,7 +1733,7 @@ static void Ins_PutFormToCreateInstitution (void)
|
||||||
|
|
||||||
/***** Institution logo *****/
|
/***** Institution logo *****/
|
||||||
fprintf (Gbl.F.Out,"<td style=\"width:20px; text-align:left;\">");
|
fprintf (Gbl.F.Out,"<td style=\"width:20px; text-align:left;\">");
|
||||||
Ins_DrawInstitutionLogo (NULL,"",16,NULL);
|
Ins_DrawInstitutionLogo (-1L,"",16,NULL);
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
|
||||||
/***** Country *****/
|
/***** Country *****/
|
||||||
|
@ -1958,7 +1930,7 @@ static void Ins_RecFormRequestOrCreateIns (unsigned Status)
|
||||||
else // Add new institution to database
|
else // Add new institution to database
|
||||||
Ins_CreateInstitution (Ins,Status);
|
Ins_CreateInstitution (Ins,Status);
|
||||||
}
|
}
|
||||||
else // If there is not a logo or a web
|
else // If there is not a web
|
||||||
Lay_ShowAlert (Lay_WARNING,Txt_You_must_specify_the_web_address_of_the_new_institution);
|
Lay_ShowAlert (Lay_WARNING,Txt_You_must_specify_the_web_address_of_the_new_institution);
|
||||||
}
|
}
|
||||||
else // If there is not a institution name
|
else // If there is not a institution name
|
||||||
|
@ -1979,9 +1951,9 @@ static void Ins_CreateInstitution (struct Institution *Ins,unsigned Status)
|
||||||
|
|
||||||
/***** Create a new institution *****/
|
/***** Create a new institution *****/
|
||||||
sprintf (Query,"INSERT INTO institutions (CtyCod,Status,RequesterUsrCod,"
|
sprintf (Query,"INSERT INTO institutions (CtyCod,Status,RequesterUsrCod,"
|
||||||
"ShortName,FullName,Logo,WWW)"
|
"ShortName,FullName,WWW)"
|
||||||
" VALUES ('%ld','%u','%ld',"
|
" VALUES ('%ld','%u','%ld',"
|
||||||
"'%s','%s','','%s')",
|
"'%s','%s','%s')",
|
||||||
Ins->CtyCod,
|
Ins->CtyCod,
|
||||||
Status,
|
Status,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||||
|
@ -2096,33 +2068,37 @@ unsigned Ins_GetNumInssWithUsrs (Rol_Role_t Role,const char *SubQuery)
|
||||||
/**************************** Draw institution logo **************************/
|
/**************************** Draw institution logo **************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Ins_DrawInstitutionLogo (const char *Logo,const char *AltText,
|
void Ins_DrawInstitutionLogo (long InsCod,const char *AltText,
|
||||||
unsigned Size,const char *Style)
|
unsigned Size,const char *Style)
|
||||||
{
|
{
|
||||||
char PathLogo[PATH_MAX+1];
|
char PathLogo[PATH_MAX+1];
|
||||||
bool LogoExists = false;
|
bool LogoExists = false;
|
||||||
|
|
||||||
/***** Path to logo *****/
|
/***** Path to logo *****/
|
||||||
if (Logo)
|
if (InsCod > 0)
|
||||||
if (Logo[0])
|
{
|
||||||
{
|
sprintf (PathLogo,"%s/%s/%02u/%u/logo/%u.png",
|
||||||
sprintf (PathLogo,"%s/%s/%s/%s64x64.gif",
|
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_INS,
|
||||||
Cfg_PATH_SWAD_PUBLIC,
|
(unsigned) (InsCod % 100),
|
||||||
Cfg_FOLDER_PUBLIC_ICON,
|
(unsigned) InsCod,
|
||||||
Cfg_ICON_FOLDER_INSTITUTIONS,
|
(unsigned) InsCod);
|
||||||
Logo);
|
LogoExists = Fil_CheckIfPathExists (PathLogo);
|
||||||
LogoExists = Fil_CheckIfPathExists (PathLogo);
|
}
|
||||||
}
|
else
|
||||||
|
LogoExists = false;
|
||||||
|
|
||||||
/***** Draw logo *****/
|
/***** Draw logo *****/
|
||||||
fprintf (Gbl.F.Out,"<img src=\"");
|
fprintf (Gbl.F.Out,"<img src=\"");
|
||||||
if (LogoExists)
|
if (LogoExists)
|
||||||
fprintf (Gbl.F.Out,"%s/%s/%s",
|
fprintf (Gbl.F.Out,"%s/%s/%02u/%u/logo/%u.png",
|
||||||
Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_INSTITUTIONS,Logo);
|
Cfg_HTTPS_URL_SWAD_PUBLIC,Cfg_FOLDER_INS,
|
||||||
|
(unsigned) (InsCod % 100),
|
||||||
|
(unsigned) InsCod,
|
||||||
|
(unsigned) InsCod);
|
||||||
else
|
else
|
||||||
fprintf (Gbl.F.Out,"%s/ins",
|
fprintf (Gbl.F.Out,"%s/ins64x64.gif",
|
||||||
Gbl.Prefs.IconsURL);
|
Gbl.Prefs.IconsURL);
|
||||||
fprintf (Gbl.F.Out,"64x64.gif\" alt=\"%s\" class=\"ICON%ux%u\"",
|
fprintf (Gbl.F.Out,"\" alt=\"%s\" class=\"ICON%ux%u\"",
|
||||||
AltText,Size,Size);
|
AltText,Size,Size);
|
||||||
if (Style)
|
if (Style)
|
||||||
if (Style[0])
|
if (Style[0])
|
||||||
|
|
|
@ -54,7 +54,6 @@ typedef enum
|
||||||
|
|
||||||
#define Ins_MAX_LENGTH_INSTITUTION_SHORT_NAME 32
|
#define Ins_MAX_LENGTH_INSTITUTION_SHORT_NAME 32
|
||||||
#define Ins_MAX_LENGTH_INSTITUTION_FULL_NAME 1024
|
#define Ins_MAX_LENGTH_INSTITUTION_FULL_NAME 1024
|
||||||
#define Ins_MAX_LENGTH_INSTITUTION_LOGO 32
|
|
||||||
|
|
||||||
struct Institution
|
struct Institution
|
||||||
{
|
{
|
||||||
|
@ -64,7 +63,6 @@ struct Institution
|
||||||
long RequesterUsrCod; // User code of the person who requested the creation of this institution
|
long RequesterUsrCod; // User code of the person who requested the creation of this institution
|
||||||
char ShortName[Ins_MAX_LENGTH_INSTITUTION_SHORT_NAME+1];
|
char ShortName[Ins_MAX_LENGTH_INSTITUTION_SHORT_NAME+1];
|
||||||
char FullName[Ins_MAX_LENGTH_INSTITUTION_FULL_NAME+1];
|
char FullName[Ins_MAX_LENGTH_INSTITUTION_FULL_NAME+1];
|
||||||
char Logo[Ins_MAX_LENGTH_INSTITUTION_LOGO+1];
|
|
||||||
char WWW[Cns_MAX_LENGTH_WWW+1];
|
char WWW[Cns_MAX_LENGTH_WWW+1];
|
||||||
unsigned NumStds;
|
unsigned NumStds;
|
||||||
unsigned NumTchs;
|
unsigned NumTchs;
|
||||||
|
@ -110,9 +108,10 @@ void Ins_RemoveInstitution (void);
|
||||||
void Ins_RenameInsShort (void);
|
void Ins_RenameInsShort (void);
|
||||||
void Ins_RenameInsFull (void);
|
void Ins_RenameInsFull (void);
|
||||||
void Ins_ChangeInsCountry (void);
|
void Ins_ChangeInsCountry (void);
|
||||||
void Ins_ChangeInsLogo (void);
|
|
||||||
void Ins_ChangeInsWWW (void);
|
void Ins_ChangeInsWWW (void);
|
||||||
void Ins_ChangeInsStatus (void);
|
void Ins_ChangeInsStatus (void);
|
||||||
|
void Ins_RequestLogo (void);
|
||||||
|
void Ins_ReceiveLogo (void);
|
||||||
void Ins_RecFormReqIns (void);
|
void Ins_RecFormReqIns (void);
|
||||||
void Ins_RecFormNewIns (void);
|
void Ins_RecFormNewIns (void);
|
||||||
|
|
||||||
|
@ -123,7 +122,7 @@ unsigned Ins_GetNumInssWithDegs (const char *SubQuery);
|
||||||
unsigned Ins_GetNumInssWithCrss (const char *SubQuery);
|
unsigned Ins_GetNumInssWithCrss (const char *SubQuery);
|
||||||
unsigned Ins_GetNumInssWithUsrs (Rol_Role_t Role,const char *SubQuery);
|
unsigned Ins_GetNumInssWithUsrs (Rol_Role_t Role,const char *SubQuery);
|
||||||
|
|
||||||
void Ins_DrawInstitutionLogo (const char *Logo,const char *AltText,unsigned Size,const char *Style);
|
void Ins_DrawInstitutionLogo (long InsCod,const char *AltText,unsigned Size,const char *Style);
|
||||||
|
|
||||||
unsigned Ins_ListInssFound (const char *Query);
|
unsigned Ins_ListInssFound (const char *Query);
|
||||||
|
|
||||||
|
|
|
@ -1278,7 +1278,7 @@ void Lay_WriteHeaderClassPhoto (unsigned NumColumns,bool PrintView,bool DrawingC
|
||||||
{
|
{
|
||||||
if (!PrintView)
|
if (!PrintView)
|
||||||
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\">",Ins.WWW);
|
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\">",Ins.WWW);
|
||||||
Ins_DrawInstitutionLogo (Ins.Logo,Ins.ShortName,Size,NULL);
|
Ins_DrawInstitutionLogo (Ins.InsCod,Ins.ShortName,Size,NULL);
|
||||||
if (!PrintView)
|
if (!PrintView)
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
}
|
}
|
||||||
|
|
|
@ -2143,7 +2143,7 @@ void Rec_ShowCommonRecord (Rec_RecordViewType_t TypeOfView,
|
||||||
{
|
{
|
||||||
Ins.InsCod = UsrDat->InsCod;
|
Ins.InsCod = UsrDat->InsCod;
|
||||||
Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_MINIMAL_DATA);
|
Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_MINIMAL_DATA);
|
||||||
Ins_DrawInstitutionLogo (Ins.Logo,Ins.ShortName,Rec_INSTITUTION_LOGO_SIZE,NULL);
|
Ins_DrawInstitutionLogo (Ins.InsCod,Ins.ShortName,Rec_INSTITUTION_LOGO_SIZE,NULL);
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
"<td class=\"%s\" style=\"text-align:left;"
|
"<td class=\"%s\" style=\"text-align:left;"
|
||||||
" vertical-align:middle;\">"
|
" vertical-align:middle;\">"
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
/********************************* Headers ***********************************/
|
/********************************* Headers ***********************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#include "swad_bool.h"
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public constants ******************************/
|
/***************************** Public constants ******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue