mirror of https://github.com/acanas/swad-core.git
Version 14.57
This commit is contained in:
parent
20e7fdad39
commit
f62dab5dd5
|
@ -407,7 +407,6 @@ CREATE TABLE IF NOT EXISTS degrees (
|
|||
FirstYear TINYINT NOT NULL DEFAULT 0,
|
||||
LastYear TINYINT NOT NULL DEFAULT 0,
|
||||
OptYear ENUM('N','Y') NOT NULL DEFAULT 'N',
|
||||
Logo VARCHAR(16) NOT NULL,
|
||||
WWW VARCHAR(255) NOT NULL,
|
||||
UNIQUE INDEX(DegCod),
|
||||
INDEX(CtrCod),
|
||||
|
|
|
@ -245,7 +245,8 @@ Degree:
|
|||
138. ActDegSch Search for courses, teachers, documents...
|
||||
|
||||
139. ActPrnDegInf Print information on the current degree
|
||||
140. ActChgDegLog Request change of the logo of a degree
|
||||
---. ActReqDegLog Show form to send the logo of the current degree
|
||||
140. ActRecDegLog Receive and store the logo of the current degree
|
||||
|
||||
141. ActEdiCrs Request edition of courses of a degree
|
||||
142. ActReqCrs Request the creation of a request for a new course (a teacher makes the petition to an administrator)
|
||||
|
@ -1313,8 +1314,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},
|
||||
|
||||
/* ActPrnInsInf */{1154,-1,TabIns,ActSeeInsInf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Ins_PrintConfiguration ,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},
|
||||
/* ActReqInsLog */{1245,-1,TabIns,ActSeeInsInf ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ins_RequestLogo ,NULL},
|
||||
/* ActRecInsLog */{ 699,-1,TabIns,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},
|
||||
/* ActReqCtr */{1208,-1,TabIns,ActSeeCtr ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ctr_RecFormReqCtr ,NULL},
|
||||
|
@ -1392,7 +1393,8 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActDegSch */{1184,-1,TabDeg,ActDegReqSch ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Sch_GetParamsSearch ,Sch_DegSearch ,NULL},
|
||||
|
||||
/* ActPrnDegInf */{1150,-1,TabDeg,ActSeeDegInf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,Deg_PrintConfiguration ,NULL},
|
||||
/* ActChgDegLog */{ 553,-1,TabDeg,ActSeeDegInf ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_ChangeDegLogo ,NULL},
|
||||
/* ActReqDegLog */{1246,-1,TabDeg,ActSeeDegInf ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Deg_RequestLogo ,NULL},
|
||||
/* ActRecDegLog */{ 553,-1,TabDeg,ActSeeDegInf ,0x100,0x100,0x100,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Deg_ReceiveLogo ,NULL},
|
||||
|
||||
/* ActEdiCrs */{ 555,-1,TabDeg,ActSeeCrs ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Crs_ReqEditCourses ,NULL},
|
||||
/* ActReqCrs */{1053,-1,TabDeg,ActSeeCrs ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Crs_RecFormReqCrs ,NULL},
|
||||
|
@ -2836,7 +2838,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
|||
ActChgDegFstYea, // #550
|
||||
ActChgDegLstYea, // #551
|
||||
ActChgDegOptYea, // #552
|
||||
ActChgDegLog, // #553
|
||||
ActRecDegLog, // #553
|
||||
ActChgDegWWW, // #554
|
||||
ActEdiCrs, // #555
|
||||
ActNewCrs, // #556
|
||||
|
@ -3529,6 +3531,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
|||
ActChgMnu, // #1243
|
||||
ActReqCtrLog, // #1244
|
||||
ActReqInsLog, // #1245
|
||||
ActReqDegLog, // #1246
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -69,9 +69,9 @@ typedef enum
|
|||
|
||||
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+40+23+17+204+184+94+168+28+75)
|
||||
#define Act_NUM_ACTIONS (7+52+15+40+23+18+204+184+94+168+28+75)
|
||||
|
||||
#define Act_MAX_ACTION_COD 1245
|
||||
#define Act_MAX_ACTION_COD 1246
|
||||
|
||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
|
||||
|
||||
|
@ -265,19 +265,20 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
|||
// Secondary actions
|
||||
#define ActDegSch (ActChgDegSta+ 4)
|
||||
#define ActPrnDegInf (ActChgDegSta+ 5)
|
||||
#define ActChgDegLog (ActChgDegSta+ 6)
|
||||
#define ActReqDegLog (ActChgDegSta+ 6)
|
||||
#define ActRecDegLog (ActChgDegSta+ 7)
|
||||
|
||||
#define ActEdiCrs (ActChgDegSta+ 7)
|
||||
#define ActReqCrs (ActChgDegSta+ 8)
|
||||
#define ActNewCrs (ActChgDegSta+ 9)
|
||||
#define ActRemCrs (ActChgDegSta+ 10)
|
||||
#define ActChgInsCrsCod (ActChgDegSta+ 11)
|
||||
#define ActChgCrsDeg (ActChgDegSta+ 12)
|
||||
#define ActChgCrsYea (ActChgDegSta+ 13)
|
||||
#define ActChgCrsSem (ActChgDegSta+ 14)
|
||||
#define ActRenCrsSho (ActChgDegSta+ 15)
|
||||
#define ActRenCrsFul (ActChgDegSta+ 16)
|
||||
#define ActChgCrsSta (ActChgDegSta+ 17)
|
||||
#define ActEdiCrs (ActChgDegSta+ 8)
|
||||
#define ActReqCrs (ActChgDegSta+ 9)
|
||||
#define ActNewCrs (ActChgDegSta+ 10)
|
||||
#define ActRemCrs (ActChgDegSta+ 11)
|
||||
#define ActChgInsCrsCod (ActChgDegSta+ 12)
|
||||
#define ActChgCrsDeg (ActChgDegSta+ 13)
|
||||
#define ActChgCrsYea (ActChgDegSta+ 14)
|
||||
#define ActChgCrsSem (ActChgDegSta+ 15)
|
||||
#define ActRenCrsSho (ActChgDegSta+ 16)
|
||||
#define ActRenCrsFul (ActChgDegSta+ 17)
|
||||
#define ActChgCrsSta (ActChgDegSta+ 18)
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************** Course tab *********************************/
|
||||
|
|
|
@ -39,11 +39,17 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 14.56 (2015/01/17)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 14.57 (2015/01/17)"
|
||||
|
||||
// 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.57: Jan 17, 2015 New option to upload logo of degree. (173720 lines)
|
||||
3 changes necessary in database:
|
||||
UPDATE actions SET Txt='Cambiar logo de titulación' WHERE ActCod='553' AND Language='es';
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1246','es','N','Solicitar envío de logo de titulación');
|
||||
ALTER TABLE degrees DROP COLUMN Logo;
|
||||
|
||||
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:
|
||||
|
|
72
swad_chat.c
72
swad_chat.c
|
@ -58,8 +58,9 @@ extern struct Globals Gbl;
|
|||
/***************************** Private prototypes ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Cht_WriteLinkToChat (const char *Icon,const char *RoomCode,const char *RoomShortName,const char *RoomFullName,
|
||||
unsigned Level,bool IsLastItemInLevel[1+Cht_CHAT_MAX_LEVELS]);
|
||||
static void Cht_WriteLinkToChat1 (const char *RoomCode,const char *RoomShortName,const char *RoomFullName,
|
||||
unsigned Level,bool IsLastItemInLevel[1+Cht_CHAT_MAX_LEVELS]);
|
||||
static void Cht_WriteLinkToChat2 (const char *RoomCode,const char *RoomFullName);
|
||||
static unsigned Cht_GetNumUsrsInChatRoom (const char *RoomCode);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -105,8 +106,8 @@ void Cht_ShowListOfAvailableChatRooms (void)
|
|||
struct Course Crs;
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRow,NumRows;
|
||||
char Icon[512];
|
||||
unsigned long NumRow;
|
||||
unsigned long NumRows;
|
||||
char ThisRoomCode [MAX_LENGTH_ROOM_CODE +1];
|
||||
char ThisRoomShortName[MAX_LENGTH_ROOM_SHORT_NAME+1];
|
||||
char ThisRoomFullName [MAX_LENGTH_ROOM_FULL_NAME +1];
|
||||
|
@ -133,26 +134,35 @@ void Cht_ShowListOfAvailableChatRooms (void)
|
|||
Gbl.Prefs.IconsURL,Txt_Chat_rooms);
|
||||
|
||||
/***** Link to chat available for all the users *****/
|
||||
sprintf (Icon,"<img src=\"%s/chat16x16.gif\""
|
||||
" class=\"ICON16x16\" style=\"vertical-align:middle;\" />",
|
||||
Gbl.Prefs.IconsURL);
|
||||
|
||||
IsLastItemInLevel[1] = (Gbl.Usrs.Me.LoggedRole != Rol_ROLE_STUDENT &&
|
||||
Gbl.Usrs.Me.LoggedRole != Rol_ROLE_TEACHER &&
|
||||
!Gbl.Usrs.Me.MyDegrees.Num);
|
||||
sprintf (ThisRoomFullName,"%s (%s)",Txt_General,Txt_SEX_PLURAL_abc[Usr_SEX_ALL]);
|
||||
Cht_WriteLinkToChat (Icon,"GBL_USR",Txt_SEX_PLURAL_Abc[Usr_SEX_ALL],ThisRoomFullName,1,IsLastItemInLevel);
|
||||
Cht_WriteLinkToChat1 ("GBL_USR",Txt_SEX_PLURAL_Abc[Usr_SEX_ALL],ThisRoomFullName,1,IsLastItemInLevel);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/chat16x16.gif\""
|
||||
" class=\"ICON16x16\" style=\"vertical-align:middle;\" />",
|
||||
Gbl.Prefs.IconsURL);
|
||||
Cht_WriteLinkToChat2 ("GBL_USR",ThisRoomFullName);
|
||||
|
||||
|
||||
IsLastItemInLevel[1] = !Gbl.Usrs.Me.MyDegrees.Num;
|
||||
switch (Gbl.Usrs.Me.LoggedRole)
|
||||
{
|
||||
case Rol_ROLE_STUDENT:
|
||||
sprintf (ThisRoomFullName,"%s (%s)",Txt_General,Txt_ROLES_PLURAL_abc[Rol_ROLE_STUDENT][Usr_SEX_ALL]);
|
||||
Cht_WriteLinkToChat (Icon,"GBL_STD",Txt_Students_ABBREVIATION,ThisRoomFullName,1,IsLastItemInLevel);
|
||||
Cht_WriteLinkToChat1 ("GBL_STD",Txt_Students_ABBREVIATION,ThisRoomFullName,1,IsLastItemInLevel);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/chat16x16.gif\""
|
||||
" class=\"ICON16x16\" style=\"vertical-align:middle;\" />",
|
||||
Gbl.Prefs.IconsURL);
|
||||
Cht_WriteLinkToChat2 ("GBL_STD",ThisRoomFullName);
|
||||
break;
|
||||
case Rol_ROLE_TEACHER:
|
||||
sprintf (ThisRoomFullName,"%s (%s)",Txt_General,Txt_ROLES_PLURAL_abc[Rol_ROLE_TEACHER][Usr_SEX_ALL]);
|
||||
Cht_WriteLinkToChat (Icon,"GBL_TCH",Txt_Teachers_ABBREVIATION,ThisRoomFullName,1,IsLastItemInLevel);
|
||||
Cht_WriteLinkToChat1 ("GBL_TCH",Txt_Teachers_ABBREVIATION,ThisRoomFullName,1,IsLastItemInLevel);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/chat16x16.gif\""
|
||||
" class=\"ICON16x16\" style=\"vertical-align:middle;\" />",
|
||||
Gbl.Prefs.IconsURL);
|
||||
Cht_WriteLinkToChat2 ("GBL_TCH",ThisRoomFullName);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -169,14 +179,13 @@ void Cht_ShowListOfAvailableChatRooms (void)
|
|||
Lay_ShowErrorAndExit ("Degree not found.");
|
||||
|
||||
/* Link to the room of this degree */
|
||||
IsLastItemInLevel[1] = (NumMyDeg == Gbl.Usrs.Me.MyDegrees.Num-1);
|
||||
sprintf (Icon,"<img src=\"%s/%s/%s64x64.gif\""
|
||||
" class=\"ICON16x16\" style=\"vertical-align:middle;\" />",
|
||||
Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_DEGREES,Deg.Logo);
|
||||
IsLastItemInLevel[1] = (NumMyDeg == Gbl.Usrs.Me.MyDegrees.Num - 1);
|
||||
sprintf (ThisRoomCode,"DEG_%ld",Deg.DegCod);
|
||||
sprintf (ThisRoomShortName,"%s",Deg.ShortName);
|
||||
sprintf (ThisRoomFullName,"%s %s",Txt_Degree,Deg.ShortName);
|
||||
Cht_WriteLinkToChat (Icon,ThisRoomCode,ThisRoomShortName,ThisRoomFullName,1,IsLastItemInLevel);
|
||||
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShortName,ThisRoomFullName,1,IsLastItemInLevel);
|
||||
Deg_DrawDegreeLogo (Deg.DegCod,Deg.ShortName,16,NULL);
|
||||
Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName);
|
||||
|
||||
/* Get my courses in this degree from database */
|
||||
if ((NumRows = Usr_GetCrssFromUsr (Gbl.Usrs.Me.UsrDat.UsrCod,Deg.DegCod,&mysql_res)) > 0) // Courses found in this degree
|
||||
|
@ -194,14 +203,15 @@ void Cht_ShowListOfAvailableChatRooms (void)
|
|||
Crs_GetDataOfCourseByCod (&Crs);
|
||||
|
||||
/* Link to the room of this course */
|
||||
IsLastItemInLevel[2] = (NumRow == NumRows-1);
|
||||
sprintf (Icon,"<img src=\"%s/dot16x16.gif\""
|
||||
" class=\"ICON16x16\" style=\"vertical-align:middle;\" />",
|
||||
Gbl.Prefs.IconsURL);
|
||||
IsLastItemInLevel[2] = (NumRow == NumRows - 1);
|
||||
sprintf (ThisRoomCode,"CRS_%ld",Crs.CrsCod);
|
||||
sprintf (ThisRoomShortName,"%s",Crs.ShortName);
|
||||
sprintf (ThisRoomFullName,"%s %s",Txt_Course,Crs.ShortName);
|
||||
Cht_WriteLinkToChat (Icon,ThisRoomCode,ThisRoomShortName,ThisRoomFullName,2,IsLastItemInLevel);
|
||||
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShortName,ThisRoomFullName,2,IsLastItemInLevel);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/dot16x16.gif\""
|
||||
" class=\"ICON16x16\" style=\"vertical-align:middle;\" />",
|
||||
Gbl.Prefs.IconsURL);
|
||||
Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -284,24 +294,30 @@ void Cht_ShowListOfChatRoomsWithUsrs (void)
|
|||
/******************** Write title and link to a chat room ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Cht_WriteLinkToChat (const char *Icon,const char *RoomCode,const char *RoomShortName,const char *RoomFullName,
|
||||
unsigned Level,bool IsLastItemInLevel[1+Cht_CHAT_MAX_LEVELS])
|
||||
static void Cht_WriteLinkToChat1 (const char *RoomCode,const char *RoomShortName,const char *RoomFullName,
|
||||
unsigned Level,bool IsLastItemInLevel[1+Cht_CHAT_MAX_LEVELS])
|
||||
{
|
||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||
extern const char *Txt_connected_PLURAL;
|
||||
extern const char *Txt_connected_SINGULAR;
|
||||
unsigned NumUsrsInRoom = Cht_GetNumUsrsInChatRoom (RoomCode);
|
||||
|
||||
sprintf (Gbl.Chat.WindowName,"%s_%s",RoomCode,Gbl.UniqueNameEncrypted);
|
||||
// sprintf (Gbl.Chat.WindowName,"%s_%s",RoomCode,Gbl.UniqueNameEncrypted);
|
||||
|
||||
fprintf (Gbl.F.Out,"<li style=\"height:20px;\">");
|
||||
Lay_IndentDependingOnLevel (Level,IsLastItemInLevel);
|
||||
Act_FormStart (ActCht);
|
||||
Cht_WriteParamsRoomCodeAndNames (RoomCode,RoomShortName,RoomFullName);
|
||||
Act_LinkFormSubmit (RoomFullName,The_ClassFormul[Gbl.Prefs.Theme]);
|
||||
}
|
||||
|
||||
static void Cht_WriteLinkToChat2 (const char *RoomCode,const char *RoomFullName)
|
||||
{
|
||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||
extern const char *Txt_connected_PLURAL;
|
||||
extern const char *Txt_connected_SINGULAR;
|
||||
unsigned NumUsrsInRoom = Cht_GetNumUsrsInChatRoom (RoomCode);
|
||||
|
||||
if (NumUsrsInRoom)
|
||||
fprintf (Gbl.F.Out,"<strong>");
|
||||
fprintf (Gbl.F.Out,"%s %s",Icon,RoomFullName);
|
||||
fprintf (Gbl.F.Out,"%s",RoomFullName);
|
||||
if (NumUsrsInRoom > 1)
|
||||
fprintf (Gbl.F.Out," [%d %s]",
|
||||
NumUsrsInRoom,Txt_connected_PLURAL);
|
||||
|
|
|
@ -399,7 +399,7 @@
|
|||
#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_COUNTRIES "country" // Directory with icons for countries
|
||||
#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_PLUGINS "plugin" // Directory with icons for plugins
|
||||
#define Cfg_ICON_ACTION "action64x64" // Directory with icons for title of current menu action
|
||||
|
|
|
@ -211,11 +211,7 @@ static void Crs_Configuration (bool PrintView)
|
|||
" class=\"TITLE_LOCATION\" title=\"%s\">",
|
||||
Gbl.CurrentDeg.Deg.WWW,
|
||||
Gbl.CurrentDeg.Deg.FullName);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/%s/%s64x64.gif\""
|
||||
" alt=\"%s\" class=\"ICON64x64\" />",
|
||||
Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_DEGREES,
|
||||
Gbl.CurrentDeg.Deg.Logo,
|
||||
Gbl.CurrentDeg.Deg.ShortName);
|
||||
Deg_DrawDegreeLogo (Gbl.CurrentDeg.Deg.DegCod,Gbl.CurrentDeg.Deg.ShortName,64,NULL);
|
||||
if (PutLink)
|
||||
fprintf (Gbl.F.Out,"</a>");
|
||||
fprintf (Gbl.F.Out,"<br />%s"
|
||||
|
@ -746,7 +742,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
|
|||
Deg_PutParamDegCod (Deg.DegCod);
|
||||
Act_LinkFormSubmit (Act_GetActionTextFromDB (Act_Actions[ActSeeDegInf].ActCod,ActTxt),
|
||||
The_ClassFormul[Gbl.Prefs.Theme]);
|
||||
Deg_DrawDegreeLogo (Deg.Logo,Deg.ShortName,16,NULL);
|
||||
Deg_DrawDegreeLogo (Deg.DegCod,Deg.ShortName,16,NULL);
|
||||
Highlight = (Gbl.CurrentCrs.Crs.CrsCod <= 0 &&
|
||||
Gbl.CurrentDeg.Deg.DegCod == Deg.DegCod);
|
||||
if (Highlight)
|
||||
|
@ -3085,7 +3081,7 @@ void Crs_GetAndWriteCrssOfAUsr (long UsrCod,Rol_Role_t Role)
|
|||
unsigned NumCrs;
|
||||
|
||||
/***** Get courses of a user from database *****/
|
||||
sprintf (Query,"SELECT degrees.DegCod,courses.CrsCod,degrees.Logo,degrees.ShortName,degrees.FullName,"
|
||||
sprintf (Query,"SELECT degrees.DegCod,courses.CrsCod,degrees.ShortName,degrees.FullName,"
|
||||
"courses.Year,courses.Semester,courses.FullName,centres.ShortName,crs_usr.Accepted"
|
||||
" FROM crs_usr,courses,degrees,centres"
|
||||
" WHERE crs_usr.UsrCod='%ld'"
|
||||
|
@ -3249,7 +3245,7 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
|
|||
extern const char *Txt_Go_to_X;
|
||||
extern const char *Txt_YEAR_OF_DEGREE[1+Deg_MAX_YEARS_PER_DEGREE];
|
||||
extern const char *Txt_SEMESTER_OF_YEAR[1+2];
|
||||
long DegCod;
|
||||
struct Degree Deg;
|
||||
long CrsCod;
|
||||
unsigned NumStds;
|
||||
unsigned NumTchs;
|
||||
|
@ -3259,8 +3255,10 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
|
|||
bool Accepted;
|
||||
|
||||
/***** Get degree code (row[0]) *****/
|
||||
if ((DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
||||
if ((Deg.DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
||||
Lay_ShowErrorAndExit ("Wrong code of degree.");
|
||||
if (!Deg_GetDataOfDegreeByCod (&Deg))
|
||||
Lay_ShowErrorAndExit ("Degree not found.");
|
||||
|
||||
/***** Get course code (row[1]) *****/
|
||||
if ((CrsCod = Str_ConvertStrCodToLongCod (row[1])) < 0)
|
||||
|
@ -3288,7 +3286,7 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
|
|||
/***** Teacher has accepted joining to this course/to any course in degree/to any course? *****/
|
||||
if (WriteColumnAccepted)
|
||||
{
|
||||
Accepted = (Str_ConvertToUpperLetter (row[9][0]) == 'Y');
|
||||
Accepted = (Str_ConvertToUpperLetter (row[8][0]) == 'Y');
|
||||
fprintf (Gbl.F.Out,"<td class=\"BT\" style=\"background-color:%s;\">"
|
||||
"<img src=\"%s/%s16x16.gif\""
|
||||
" alt=\"\" title=\"%s\" class=\"ICON16x16\" />"
|
||||
|
@ -3308,44 +3306,42 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
|
|||
"</td>",
|
||||
StyleNoBR,BgColor,NumCrs);
|
||||
|
||||
/***** Write degree logo (row[2]), degree short name (row[3]) and centre short name (row[8]) *****/
|
||||
/***** Write degree logo, degree short name (row[2]) and centre short name (row[7]) *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s\" style=\"text-align:left;"
|
||||
" vertical-align:top; background-color:%s;\">",
|
||||
StyleNoBR,BgColor);
|
||||
Act_FormGoToStart (ActSeeDegInf);
|
||||
Deg_PutParamDegCod (DegCod);
|
||||
sprintf (Gbl.Title,Txt_Go_to_X,row[4]);
|
||||
Deg_PutParamDegCod (Deg.DegCod);
|
||||
sprintf (Gbl.Title,Txt_Go_to_X,row[2]);
|
||||
Act_LinkFormSubmit (Gbl.Title,StyleNoBR);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/%s/%s64x64.gif\" alt=\"%s\""
|
||||
" class=\"ICON16x16\" style=\"vertical-align:top;\" />"
|
||||
" %s (%s)"
|
||||
Deg_DrawDegreeLogo (Deg.DegCod,Deg.ShortName,64,NULL);
|
||||
fprintf (Gbl.F.Out," %s (%s)"
|
||||
"</a>"
|
||||
"</form>"
|
||||
"</td>",
|
||||
Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_DEGREES,row[2],
|
||||
row[3],row[3],row[8]);
|
||||
row[2],row[7]);
|
||||
|
||||
/***** Write year (row[5]) *****/
|
||||
/***** Write year (row[4]) *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s\" style=\"text-align:center;"
|
||||
" vertical-align:top; background-color:%s;\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
Style,BgColor,Txt_YEAR_OF_DEGREE[Deg_ConvStrToYear (row[5])]);
|
||||
Style,BgColor,Txt_YEAR_OF_DEGREE[Deg_ConvStrToYear (row[4])]);
|
||||
|
||||
/***** Write semester (row[6]) *****/
|
||||
/***** Write semester (row[5]) *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s\" style=\"text-align:center;"
|
||||
" vertical-align:top; background-color:%s;\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
Style,BgColor,Txt_SEMESTER_OF_YEAR[Deg_ConvStrToSemester (row[6])]);
|
||||
Style,BgColor,Txt_SEMESTER_OF_YEAR[Deg_ConvStrToSemester (row[5])]);
|
||||
|
||||
/***** Write course full name (row[7]) *****/
|
||||
/***** Write course full name (row[6]) *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s\" style=\"text-align:left;"
|
||||
" vertical-align:top; background-color:%s;\">",
|
||||
Style,BgColor);
|
||||
Act_FormGoToStart (ActSeeCrsInf);
|
||||
Crs_PutParamCrsCod (CrsCod);
|
||||
sprintf (Gbl.Title,Txt_Go_to_X,row[7]);
|
||||
sprintf (Gbl.Title,Txt_Go_to_X,row[6]);
|
||||
Act_LinkFormSubmit (Gbl.Title,Style);
|
||||
fprintf (Gbl.F.Out,"%s</a>"
|
||||
"</form>"
|
||||
|
|
|
@ -874,10 +874,9 @@ mysql> DESCRIBE degrees;
|
|||
| FirstYear | tinyint(4) | NO | | 0 | |
|
||||
| LastYear | tinyint(4) | NO | | 0 | |
|
||||
| OptYear | enum('N','Y') | NO | | N | |
|
||||
| Logo | varchar(16) | NO | | NULL | |
|
||||
| WWW | varchar(255) | NO | | NULL | |
|
||||
+-----------------+---------------+------+-----+---------+----------------+
|
||||
12 rows in set (0.01 sec)
|
||||
11 rows in set (0.00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS degrees ("
|
||||
"DegCod INT NOT NULL AUTO_INCREMENT,"
|
||||
|
@ -890,7 +889,6 @@ mysql> DESCRIBE degrees;
|
|||
"FirstYear TINYINT NOT NULL DEFAULT 0,"
|
||||
"LastYear TINYINT NOT NULL DEFAULT 0,"
|
||||
"OptYear ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||
"Logo VARCHAR(16) NOT NULL,"
|
||||
"WWW VARCHAR(255) NOT NULL,"
|
||||
"UNIQUE INDEX(DegCod),INDEX(CtrCod),INDEX(DegTypCod),INDEX(Status))");
|
||||
|
||||
|
|
142
swad_degree.c
142
swad_degree.c
|
@ -223,7 +223,7 @@ void Deg_SeeDegWithPendingCrss (void)
|
|||
"<a href=\"%s\" title=\"%s\" class=\"DAT\""
|
||||
" target=\"_blank\">",
|
||||
BgColor,Deg.WWW,Deg.FullName);
|
||||
Deg_DrawDegreeLogo (Deg.Logo,Deg.ShortName,16,"vertical-align:top;");
|
||||
Deg_DrawDegreeLogo (Deg.DegCod,Deg.ShortName,16,"vertical-align:top;");
|
||||
fprintf (Gbl.F.Out,"</a>"
|
||||
"</td>");
|
||||
|
||||
|
@ -288,7 +288,6 @@ static void Deg_Configuration (bool PrintView)
|
|||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||
extern const char *Txt_Degree;
|
||||
extern const char *Txt_Short_Name;
|
||||
extern const char *Txt_Logo;
|
||||
extern const char *Txt_Shortcut_to_this_degree;
|
||||
extern const char *Txt_QR_code;
|
||||
extern const char *Txt_Courses;
|
||||
|
@ -325,7 +324,7 @@ static void Deg_Configuration (bool PrintView)
|
|||
" class=\"TITLE_LOCATION\" title=\"%s\">",
|
||||
Gbl.CurrentDeg.Deg.WWW,
|
||||
Gbl.CurrentDeg.Deg.FullName);
|
||||
Deg_DrawDegreeLogo (Gbl.CurrentDeg.Deg.Logo,
|
||||
Deg_DrawDegreeLogo (Gbl.CurrentDeg.Deg.DegCod,
|
||||
Gbl.CurrentDeg.Deg.ShortName,
|
||||
64,NULL);
|
||||
fprintf (Gbl.F.Out,"<br />%s",
|
||||
|
@ -372,28 +371,6 @@ static void Deg_Configuration (bool PrintView)
|
|||
Txt_Short_Name,
|
||||
Gbl.CurrentDeg.Deg.ShortName);
|
||||
|
||||
/***** Degree 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 (ActChgDegLog);
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Logo\" size=\"4\" maxlength=\"%u\" value=\"%s\""
|
||||
" onchange=\"javascript:document.getElementById('%s').submit();\" />"
|
||||
"</form>"
|
||||
"</td>"
|
||||
"</tr>",
|
||||
Deg_MAX_LENGTH_DEGREE_LOGO,Gbl.CurrentDeg.Deg.Logo,
|
||||
Gbl.FormId);
|
||||
}
|
||||
|
||||
/***** Link to the degree *****/
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\" style=\"text-align:right;"
|
||||
|
@ -756,7 +733,7 @@ void Deg_WriteBigNameCtyInsCtrDegCrs (void)
|
|||
Gbl.Prefs.Theme == The_THEME_WHITE) // TODO: Remove this line
|
||||
{
|
||||
if (Gbl.CurrentDeg.Deg.DegCod > 0)
|
||||
Deg_DrawDegreeLogo (Gbl.CurrentDeg.Deg.Logo,Gbl.CurrentDeg.Deg.ShortName,32,
|
||||
Deg_DrawDegreeLogo (Gbl.CurrentDeg.Deg.DegCod,Gbl.CurrentDeg.Deg.ShortName,32,
|
||||
"vertical-align:top; margin-right:8px;");
|
||||
else if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
|
||||
Ctr_DrawCentreLogo (Gbl.CurrentCtr.Ctr.CtrCod,Gbl.CurrentCtr.Ctr.ShortName,32,
|
||||
|
@ -1291,7 +1268,7 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
|
|||
"<a href=\"%s\" title=\"%s\" class=\"DAT\" target=\"_blank\">",
|
||||
TxtClass,BgColor,
|
||||
Deg->WWW,Deg->FullName);
|
||||
Deg_DrawDegreeLogo (Deg->Logo,Deg->ShortName,16,"vertical-align:top;");
|
||||
Deg_DrawDegreeLogo (Deg->DegCod,Deg->ShortName,16,"vertical-align:top;");
|
||||
fprintf (Gbl.F.Out,"</a>"
|
||||
"</td>");
|
||||
|
||||
|
@ -1434,7 +1411,7 @@ static void Deg_ListDegreesForEdition (void)
|
|||
fprintf (Gbl.F.Out,"<td title=\"%s\""
|
||||
" style=\"width:20px; text-align:left;\">",
|
||||
Deg->FullName);
|
||||
Deg_DrawDegreeLogo (Deg->Logo,Deg->ShortName,16,NULL);
|
||||
Deg_DrawDegreeLogo (Deg->DegCod,Deg->ShortName,16,NULL);
|
||||
fprintf (Gbl.F.Out,"</td>");
|
||||
|
||||
/* Centre */
|
||||
|
@ -1841,7 +1818,7 @@ static void Deg_PutFormToCreateDegree (void)
|
|||
|
||||
/***** Degree logo *****/
|
||||
fprintf (Gbl.F.Out,"<td style=\"width:20px; text-align:left;\">");
|
||||
Deg_DrawDegreeLogo (NULL,"",16,NULL);
|
||||
Deg_DrawDegreeLogo (-1L,"",16,NULL);
|
||||
fprintf (Gbl.F.Out,"</td>");
|
||||
|
||||
/***** Centre *****/
|
||||
|
@ -2211,9 +2188,9 @@ static void Deg_CreateDegree (struct Degree *Deg,unsigned Status)
|
|||
|
||||
/***** Create a new degree *****/
|
||||
sprintf (Query,"INSERT INTO degrees (CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||
"ShortName,FullName,FirstYear,LastYear,OptYear,Logo,WWW)"
|
||||
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW)"
|
||||
" VALUES ('%ld','%ld','%u','%ld',"
|
||||
"'%s','%s','%u','%u','%c','','%s')",
|
||||
"'%s','%s','%u','%u','%c','%s')",
|
||||
Deg->CtrCod,Deg->DegTypCod,
|
||||
Status,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
|
@ -2377,7 +2354,7 @@ void Deg_GetListAllDegs (void)
|
|||
|
||||
/***** Get degrees admin by me from database *****/
|
||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||
"ShortName,FullName,FirstYear,LastYear,OptYear,Logo,WWW"
|
||||
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW"
|
||||
" FROM degrees ORDER BY FullName");
|
||||
Gbl.Degs.AllDegs.Num = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get degrees admin by you");
|
||||
|
||||
|
@ -2432,7 +2409,7 @@ static void Deg_GetListDegsOfCurrentCtr (void)
|
|||
|
||||
/***** Get degrees of the current centre from database *****/
|
||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||
"ShortName,FullName,FirstYear,LastYear,OptYear,Logo,WWW"
|
||||
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW"
|
||||
" FROM degrees WHERE CtrCod='%ld' ORDER BY FullName",
|
||||
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get degrees of a centre");
|
||||
|
@ -2506,7 +2483,7 @@ void Deg_GetListDegsAdminByMe (void)
|
|||
/***** Get degrees admin by me from database *****/
|
||||
if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SUPERUSER)
|
||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||
"ShortName,FullName,FirstYear,LastYear,OptYear,Logo,WWW"
|
||||
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW"
|
||||
" FROM degrees"
|
||||
" WHERE CtrCod='%ld'"
|
||||
" ORDER BY ShortName",
|
||||
|
@ -2514,7 +2491,7 @@ void Deg_GetListDegsAdminByMe (void)
|
|||
// TODO: put an if to select all degrees for admins of all degrees !!!!!!!!!!!!!
|
||||
else // Gbl.Usrs.Me.LoggedRole == Rol_ROLE_DEG_ADMIN
|
||||
sprintf (Query,"SELECT degrees.DegCod,degrees.CtrCod,degrees.DegTypCod,degrees.Status,degrees.RequesterUsrCod,"
|
||||
"degrees.ShortName,degrees.FullName,degrees.FirstYear,degrees.LastYear,degrees.OptYear,degrees.Logo,degrees.WWW"
|
||||
"degrees.ShortName,degrees.FullName,degrees.FirstYear,degrees.LastYear,degrees.OptYear,degrees.WWW"
|
||||
" FROM deg_admin,degrees"
|
||||
" WHERE deg_admin.UsrCod='%ld' AND deg_admin.DegCod<>'-1' AND deg_admin.DegCod=degrees.DegCod"
|
||||
" ORDER BY degrees.ShortName",
|
||||
|
@ -2938,7 +2915,6 @@ bool Deg_GetDataOfDegreeByCod (struct Degree *Deg)
|
|||
Deg->FirstYear = 0;
|
||||
Deg->LastYear = 0;
|
||||
Deg->OptYear = false;
|
||||
Deg->Logo[0] = '\0';
|
||||
Deg->WWW[0] = '\0';
|
||||
Deg->NumCourses = 0;
|
||||
Deg->LstCrss = NULL;
|
||||
|
@ -2947,7 +2923,7 @@ bool Deg_GetDataOfDegreeByCod (struct Degree *Deg)
|
|||
|
||||
/***** Get data of a degree from database *****/
|
||||
sprintf (Query,"SELECT DegCod,CtrCod,DegTypCod,Status,RequesterUsrCod,"
|
||||
"ShortName,FullName,FirstYear,LastYear,OptYear,Logo,WWW"
|
||||
"ShortName,FullName,FirstYear,LastYear,OptYear,WWW"
|
||||
" FROM degrees WHERE DegCod ='%ld'",
|
||||
Deg->DegCod);
|
||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get data of a degree");
|
||||
|
@ -2972,7 +2948,6 @@ bool Deg_GetDataOfDegreeByCod (struct Degree *Deg)
|
|||
Deg->FirstYear = 0;
|
||||
Deg->LastYear = 0;
|
||||
Deg->OptYear = false;
|
||||
Deg->Logo[0] = '\0';
|
||||
Deg->WWW[0] = '\0';
|
||||
Deg->NumCourses = 0;
|
||||
Deg->LstCrss = NULL;
|
||||
|
@ -3026,10 +3001,7 @@ static void Deg_GetDataOfDegreeFromRow (struct Degree *Deg,MYSQL_ROW row)
|
|||
Deg->OptYear = (Str_ConvertToUpperLetter (row[9][0]) == 'Y');
|
||||
|
||||
/***** Get logo (row[10]) *****/
|
||||
strcpy (Deg->Logo,row[10]);
|
||||
|
||||
/***** Get logo (row[11]) *****/
|
||||
strcpy (Deg->WWW,row[11]);
|
||||
strcpy (Deg->WWW,row[10]);
|
||||
|
||||
/***** Get number of courses *****/
|
||||
Deg->NumCourses = Crs_GetNumCrssInDeg (Deg->DegCod);
|
||||
|
@ -3670,31 +3642,6 @@ void Deg_ChangeDegOptYear (void)
|
|||
Deg_EditDegrees ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************ Change the logo of a degree ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_ChangeDegLogo (void)
|
||||
{
|
||||
extern const char *Txt_The_new_logo_is_X;
|
||||
char Query[256+Deg_MAX_LENGTH_DEGREE_LOGO];
|
||||
|
||||
/***** Get the new logo for the degree from form *****/
|
||||
Par_GetParToText ("Logo",Gbl.CurrentDeg.Deg.Logo,Deg_MAX_LENGTH_DEGREE_LOGO);
|
||||
|
||||
/***** Update the table changing old logo by new logo *****/
|
||||
sprintf (Query,"UPDATE degrees SET Logo='%s' WHERE DegCod='%ld'",
|
||||
Gbl.CurrentDeg.Deg.Logo,Gbl.CurrentDeg.Deg.DegCod);
|
||||
DB_QueryUPDATE (Query,"can not update the logo of the degree");
|
||||
|
||||
/***** Write message to show the change made *****/
|
||||
sprintf (Gbl.Message,Txt_The_new_logo_is_X,Gbl.CurrentDeg.Deg.Logo);
|
||||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||
|
||||
/***** Show the form again *****/
|
||||
Deg_ShowConfiguration ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************* Change the WWW of a degree ************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -3787,6 +3734,24 @@ void Deg_ChangeDegStatus (void)
|
|||
Deg_EditDegrees ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*********** Show a form for sending a logo of the current degree ************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_RequestLogo (void)
|
||||
{
|
||||
Log_RequestLogo (Sco_SCOPE_DEGREE);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************** Receive the logo of the current degree ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_ReceiveLogo (void)
|
||||
{
|
||||
Log_ReceiveLogo (Sco_SCOPE_DEGREE);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*********************** Get total number of degrees *************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -3913,8 +3878,9 @@ void Deg_GetAndWriteDegreesAdminBy (long UsrCod,unsigned ColSpan)
|
|||
/***** Get degrees admin by a user from database *****/
|
||||
sprintf (Query,"(SELECT DegCod,'','' AS ShortName,'' FROM deg_admin WHERE UsrCod='%ld' AND DegCod<'0')"
|
||||
" UNION "
|
||||
"(SELECT degrees.DegCod,degrees.ShortName AS ShortName,degrees.FullName,degrees.Logo FROM deg_admin,degrees"
|
||||
" WHERE deg_admin.UsrCod='%ld' AND deg_admin.DegCod>='0' AND deg_admin.DegCod=degrees.DegCod) ORDER BY ShortName",
|
||||
"(SELECT degrees.DegCod,degrees.ShortName AS ShortName,degrees.FullName FROM deg_admin,degrees"
|
||||
" WHERE deg_admin.UsrCod='%ld' AND deg_admin.DegCod>='0' AND deg_admin.DegCod=degrees.DegCod)"
|
||||
" ORDER BY ShortName",
|
||||
UsrCod,UsrCod);
|
||||
if ((NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get degrees admin by a user"))) // If degrees found for this administrator
|
||||
{
|
||||
|
@ -3952,7 +3918,7 @@ void Deg_GetAndWriteDegreesAdminBy (long UsrCod,unsigned ColSpan)
|
|||
Deg_PutParamDegCod (DegCod);
|
||||
sprintf (Gbl.Title,Txt_Go_to_X,row[2]);
|
||||
Act_LinkFormSubmit (Gbl.Title,"DAT_SMALL_NOBR");
|
||||
Deg_DrawDegreeLogo (row[3],row[1],16,"vertical-align:top;");
|
||||
Deg_DrawDegreeLogo (DegCod,row[1],16,"vertical-align:top;");
|
||||
fprintf (Gbl.F.Out," %s</a>"
|
||||
"</form>",
|
||||
row[2]);
|
||||
|
@ -3978,33 +3944,37 @@ void Deg_GetAndWriteDegreesAdminBy (long UsrCod,unsigned ColSpan)
|
|||
/****************************** Draw degree logo *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_DrawDegreeLogo (const char *Logo,const char *AltText,
|
||||
void Deg_DrawDegreeLogo (long DegCod,const char *AltText,
|
||||
unsigned Size,const char *Style)
|
||||
{
|
||||
char PathLogo[PATH_MAX+1];
|
||||
bool LogoExists = false;
|
||||
bool LogoExists;
|
||||
|
||||
/***** Path to logo *****/
|
||||
if (Logo)
|
||||
if (Logo[0])
|
||||
{
|
||||
sprintf (PathLogo,"%s/%s/%s/%s64x64.gif",
|
||||
Cfg_PATH_SWAD_PUBLIC,
|
||||
Cfg_FOLDER_PUBLIC_ICON,
|
||||
Cfg_ICON_FOLDER_DEGREES,
|
||||
Logo);
|
||||
LogoExists = Fil_CheckIfPathExists (PathLogo);
|
||||
}
|
||||
if (DegCod > 0)
|
||||
{
|
||||
sprintf (PathLogo,"%s/%s/%02u/%u/logo/%u.png",
|
||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_DEG,
|
||||
(unsigned) (DegCod % 100),
|
||||
(unsigned) DegCod,
|
||||
(unsigned) DegCod);
|
||||
LogoExists = Fil_CheckIfPathExists (PathLogo);
|
||||
}
|
||||
else
|
||||
LogoExists = false;
|
||||
|
||||
/***** Draw logo *****/
|
||||
fprintf (Gbl.F.Out,"<img src=\"");
|
||||
if (LogoExists)
|
||||
fprintf (Gbl.F.Out,"%s/%s/%s",
|
||||
Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_DEGREES,Logo);
|
||||
fprintf (Gbl.F.Out,"%s/%s/%02u/%u/logo/%u.png",
|
||||
Cfg_HTTPS_URL_SWAD_PUBLIC,Cfg_FOLDER_DEG,
|
||||
(unsigned) (DegCod % 100),
|
||||
(unsigned) DegCod,
|
||||
(unsigned) DegCod);
|
||||
else
|
||||
fprintf (Gbl.F.Out,"%s/deg",
|
||||
fprintf (Gbl.F.Out,"%s/deg64x64.gif",
|
||||
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);
|
||||
if (Style)
|
||||
if (Style[0])
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
#define Deg_MAX_LENGTH_DEGREE_TYPE_NAME 32
|
||||
#define Deg_MAX_LENGTH_DEGREE_SHORT_NAME 32
|
||||
#define Deg_MAX_LENGTH_DEGREE_FULL_NAME 127
|
||||
#define Deg_MAX_LENGTH_DEGREE_LOGO 16
|
||||
|
||||
#define Deg_MAX_LENGTH_LOCATION_SHORT_NAME 32
|
||||
#define Deg_MAX_LENGTH_LOCATION_SHORT_NAME_SPEC_CHAR (Deg_MAX_LENGTH_LOCATION_SHORT_NAME*Str_MAX_LENGTH_SPEC_CHAR_HTML)
|
||||
|
@ -80,7 +79,6 @@ struct Degree
|
|||
unsigned FirstYear;
|
||||
unsigned LastYear;
|
||||
bool OptYear;
|
||||
char Logo[Deg_MAX_LENGTH_DEGREE_LOGO+1];
|
||||
char WWW[Cns_MAX_LENGTH_WWW+1];
|
||||
unsigned NumCourses; // Number of courses in the degree
|
||||
struct Course *LstCrss; // List of courses in this degree
|
||||
|
@ -151,9 +149,10 @@ void Deg_ChangeDegreeCtr (void);
|
|||
void Deg_ChangeDegFirstYear (void);
|
||||
void Deg_ChangeDegLastYear (void);
|
||||
void Deg_ChangeDegOptYear (void);
|
||||
void Deg_ChangeDegLogo (void);
|
||||
void Deg_ChangeDegWWW (void);
|
||||
void Deg_ChangeDegStatus (void);
|
||||
void Deg_RequestLogo (void);
|
||||
void Deg_ReceiveLogo (void);
|
||||
|
||||
unsigned Deg_GetNumDegsTotal (void);
|
||||
unsigned Deg_GetNumDegsInCty (long InsCod);
|
||||
|
@ -166,7 +165,7 @@ bool Deg_CheckIfYearIsValidInDeg (unsigned Year,struct Degree *Deg);
|
|||
|
||||
void Deg_GetAndWriteDegreesAdminBy (long UsrCod,unsigned ColSpan);
|
||||
|
||||
void Deg_DrawDegreeLogo (const char *Logo,const char *AltText,
|
||||
void Deg_DrawDegreeLogo (long DegCod,const char *AltText,
|
||||
unsigned Size,const char *Style);
|
||||
|
||||
unsigned Deg_ListDegsFound (const char *Query);
|
||||
|
|
|
@ -9562,7 +9562,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
|
|||
Deg_PutParamDegCod (DegCod);
|
||||
sprintf (Gbl.Title,Txt_Go_to_X,row[5]);
|
||||
Act_LinkFormSubmit (Gbl.Title,"DAT");
|
||||
Deg_DrawDegreeLogo (row[3],row[4],16,"vertical-align:top;");
|
||||
Deg_DrawDegreeLogo (DegCod,row[4],16,"vertical-align:top;");
|
||||
fprintf (Gbl.F.Out," %s (%s)</a>"
|
||||
"</form>",
|
||||
row[4],row[5]);
|
||||
|
|
|
@ -2154,7 +2154,7 @@ static void For_WriteLinkToForum (For_ForumType_t ForumType,Act_Action_t NextAct
|
|||
break;
|
||||
case For_FORUM_DEGREE_USRS:
|
||||
case For_FORUM_DEGREE_TCHS:
|
||||
Deg_DrawDegreeLogo (Gbl.Forum.Deg.Logo,ForumName,16,"vertical-align:middle;");
|
||||
Deg_DrawDegreeLogo (Gbl.Forum.Deg.DegCod,ForumName,16,"vertical-align:middle;");
|
||||
break;
|
||||
default:
|
||||
fprintf (Gbl.F.Out,"%s",Icon);
|
||||
|
|
|
@ -207,7 +207,6 @@ void Gbl_InitializeGlobals (void)
|
|||
Gbl.CurrentIns.Ins.InsCod = -1L; // Unknown institution
|
||||
Gbl.CurrentIns.Ins.ShortName[0] = '\0';
|
||||
Gbl.CurrentIns.Ins.FullName[0] = '\0';
|
||||
Gbl.CurrentIns.Ins.Logo[0] = '\0';
|
||||
Gbl.CurrentIns.Ins.WWW[0] = '\0';
|
||||
Gbl.CurrentIns.Ins.NumStds = Gbl.CurrentIns.Ins.NumTchs = Gbl.CurrentIns.Ins.NumUsrs =
|
||||
Gbl.CurrentIns.Ins.NumCtrs = Gbl.CurrentIns.Ins.NumDpts = Gbl.CurrentIns.Ins.NumDegs = 0;
|
||||
|
@ -237,7 +236,6 @@ void Gbl_InitializeGlobals (void)
|
|||
Gbl.Inss.EditingIns.CtyCod = -1L;
|
||||
Gbl.Inss.EditingIns.ShortName[0] = '\0';
|
||||
Gbl.Inss.EditingIns.FullName[0] = '\0';
|
||||
Gbl.Inss.EditingIns.Logo[0] = '\0';
|
||||
Gbl.Inss.EditingIns.WWW[0] = '\0';
|
||||
Gbl.Inss.EditingIns.NumStds = Gbl.Inss.EditingIns.NumTchs = Gbl.Inss.EditingIns.NumUsrs =
|
||||
Gbl.Inss.EditingIns.NumCtrs = Gbl.Inss.EditingIns.NumDpts = Gbl.Inss.EditingIns.NumDegs = 0;
|
||||
|
@ -303,7 +301,6 @@ void Gbl_InitializeGlobals (void)
|
|||
Gbl.Degs.EditingDeg.FullName[0] = '\0';
|
||||
Gbl.Degs.EditingDeg.FirstYear = Gbl.Degs.EditingDeg.LastYear = 0;
|
||||
Gbl.Degs.EditingDeg.OptYear = false;
|
||||
Gbl.Degs.EditingDeg.Logo[0] = '\0';
|
||||
Gbl.Degs.EditingDeg.WWW[0] = '\0';
|
||||
Gbl.Degs.EditingDeg.NumCourses = 0;
|
||||
Gbl.Degs.EditingDeg.LstCrss = NULL;
|
||||
|
|
|
@ -584,10 +584,10 @@ struct Globals
|
|||
{
|
||||
unsigned CurrentPage;
|
||||
} Pag;
|
||||
struct
|
||||
{
|
||||
char WindowName[256];
|
||||
} Chat;
|
||||
// struct
|
||||
// {
|
||||
// char WindowName[256];
|
||||
// } Chat;
|
||||
struct
|
||||
{
|
||||
unsigned Day,Hour,Column;
|
||||
|
|
|
@ -2072,7 +2072,7 @@ void Ins_DrawInstitutionLogo (long InsCod,const char *AltText,
|
|||
unsigned Size,const char *Style)
|
||||
{
|
||||
char PathLogo[PATH_MAX+1];
|
||||
bool LogoExists = false;
|
||||
bool LogoExists;
|
||||
|
||||
/***** Path to logo *****/
|
||||
if (InsCod > 0)
|
||||
|
|
|
@ -1327,7 +1327,7 @@ void Lay_WriteHeaderClassPhoto (unsigned NumColumns,bool PrintView,bool DrawingC
|
|||
if (!PrintView)
|
||||
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\" class=\"TIT_CLASSPHOTO\">",
|
||||
Deg.WWW);
|
||||
Deg_DrawDegreeLogo (Deg.Logo,Deg.ShortName,Size,NULL);
|
||||
Deg_DrawDegreeLogo (Deg.DegCod,Deg.ShortName,Size,NULL);
|
||||
if (!PrintView)
|
||||
fprintf (Gbl.F.Out,"</a>");
|
||||
}
|
||||
|
|
|
@ -1983,7 +1983,7 @@ static void Pho_ShowOrPrintListDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
|
|||
if (SeeOrPrint == Pho_DEGREES_SEE)
|
||||
fprintf (Gbl.F.Out,"<a href=\"%s\" title=\"%s\" class=\"DAT\" target=\"_blank\">",
|
||||
Deg.WWW,Deg.FullName);
|
||||
Deg_DrawDegreeLogo (Deg.Logo,Deg.ShortName,16,"vertical-align:top;");
|
||||
Deg_DrawDegreeLogo (Deg.DegCod,Deg.ShortName,16,"vertical-align:top;");
|
||||
fprintf (Gbl.F.Out," %s ",
|
||||
Deg.ShortName);
|
||||
if (SeeOrPrint == Pho_DEGREES_SEE)
|
||||
|
|
|
@ -1529,7 +1529,7 @@ void Rec_ShowCrsRecord (Rec_RecordViewType_t TypeOfView,struct UsrData *UsrDat)
|
|||
"<tr>"
|
||||
"<td style=\"width:%upx; text-align:left;\">",
|
||||
Rec_DEGREE_LOGO_SIZE);
|
||||
Deg_DrawDegreeLogo (Gbl.CurrentDeg.Deg.Logo,
|
||||
Deg_DrawDegreeLogo (Gbl.CurrentDeg.Deg.DegCod,
|
||||
Gbl.CurrentDeg.Deg.ShortName,
|
||||
Rec_DEGREE_LOGO_SIZE,NULL);
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
|
|
|
@ -700,7 +700,7 @@ static unsigned Sch_SearchCoursesInDB (const char *RangeQuery)
|
|||
if (Sch_BuildSearchQuery (SearchQuery,"courses.FullName",NULL,NULL))
|
||||
{
|
||||
/***** Query database and list courses found *****/
|
||||
sprintf (Query,"SELECT degrees.DegCod,courses.CrsCod,degrees.Logo,degrees.ShortName,degrees.FullName,"
|
||||
sprintf (Query,"SELECT degrees.DegCod,courses.CrsCod,degrees.ShortName,degrees.FullName,"
|
||||
"courses.Year,courses.Semester,courses.FullName,centres.ShortName"
|
||||
" FROM courses,degrees,centres,institutions,countries"
|
||||
" WHERE %s"
|
||||
|
|
|
@ -3486,7 +3486,7 @@ static void Sta_WriteDegree (long DegCod)
|
|||
fprintf (Gbl.F.Out,"%s\">"
|
||||
"<a href=\"%s\" class=\"LOG\" target=\"_blank\">",
|
||||
Deg.WWW,Deg.FullName);
|
||||
Deg_DrawDegreeLogo (Deg.Logo,Deg.ShortName,16,"vertical-align:top;");
|
||||
Deg_DrawDegreeLogo (Deg.DegCod,Deg.ShortName,16,"vertical-align:top;");
|
||||
fprintf (Gbl.F.Out," %s </a>",
|
||||
Deg.ShortName);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue