Version 15.47

This commit is contained in:
Antonio Cañas Vargas 2015-11-27 12:57:56 +01:00
parent 26cf9e52a1
commit d0116b745e
27 changed files with 185 additions and 917 deletions

View File

@ -8,7 +8,6 @@ CREATE TABLE IF NOT EXISTS IP_prefs (
UsrCod INT NOT NULL DEFAULT -1,
LastChange DATETIME NOT NULL,
FirstDayOfWeek TINYINT NOT NULL DEFAULT 0,
Layout TINYINT NOT NULL DEFAULT 0,
Theme CHAR(16) NOT NULL,
IconSet CHAR(16) NOT NULL,
Menu TINYINT NOT NULL DEFAULT 0,
@ -1125,7 +1124,6 @@ CREATE TABLE IF NOT EXISTS usr_data (
Surname2 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL,
FirstName VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL,
Sex ENUM ('unknown','female','male') NOT NULL DEFAULT 'unknown',
Layout TINYINT NOT NULL DEFAULT 0,
Theme CHAR(16) NOT NULL,
IconSet CHAR(16) NOT NULL,
Language CHAR(2) NOT NULL,
@ -1153,7 +1151,6 @@ CREATE TABLE IF NOT EXISTS usr_data (
EmailNtfEvents INT NOT NULL DEFAULT 0,
PRIMARY KEY(UsrCod),
UNIQUE INDEX(EncryptedUsrCod),
INDEX(Layout),
INDEX(Theme),
INDEX(IconSet),
INDEX(Language),

View File

@ -434,12 +434,12 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat)
/***** Insert new user in database *****/
/* Insert user's data */
sprintf (Query,"INSERT INTO usr_data (EncryptedUsrCod,Password,Surname1,Surname2,FirstName,Sex,"
"Layout,Theme,IconSet,Language,FirstDayOfWeek,PhotoVisibility,ProfileVisibility,"
"Theme,IconSet,Language,FirstDayOfWeek,PhotoVisibility,ProfileVisibility,"
"CtyCod,"
"LocalAddress,LocalPhone,FamilyAddress,FamilyPhone,OriginPlace,Birthday,Comments,"
"Menu,SideCols,NotifNtfEvents,EmailNtfEvents)"
" VALUES ('%s','%s','%s','%s','%s','%s',"
"'%u','%s','%s','%s','%u','%s','%s',"
"'%s','%s','%s','%u','%s','%s',"
"'%ld',"
"'%s','%s','%s','%s','%s','%04u-%02u-%02u','%s',"
"'%u','%u','-1','0')",
@ -447,7 +447,6 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat)
UsrDat->Password,
UsrDat->Surname1,UsrDat->Surname2,UsrDat->FirstName,
Usr_StringsSexDB[UsrDat->Sex],
(unsigned) UsrDat->Prefs.Layout,
The_ThemeId[UsrDat->Prefs.Theme],
Ico_IconSetId[UsrDat->Prefs.IconSet],
Txt_STR_LANG_ID[UsrDat->Prefs.Language],

View File

@ -1270,7 +1270,6 @@ Profile:
1075. ActReqEdiMyNet Request the edition of my social networks
1076. ActChgMyNet Change my web and social networks
1077. ActChgLay Change layout
1078. ActChgThe Change theme
1079. ActReqChgLan Ask if change language
1080. ActChgLan Change language
@ -2753,7 +2752,6 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActReqEdiMyNet */{1172,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Net_ShowFormMyWebsAndSocialNets,NULL},
/* ActChgMyNet */{1173,-1,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Net_UpdateMyWebsAndSocialNets ,NULL},
/* ActChgLay */{ 672,-1,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Lay_ChangeLayout ,Pre_EditPrefs ,NULL},
/* ActChgThe */{ 841,-1,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,The_ChangeTheme ,Pre_EditPrefs ,NULL},
/* ActReqChgLan */{ 992,-1,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pre_AskChangeLanguage ,NULL},
/* ActChgLan */{ 654,-1,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Pre_ChangeLanguage ,Pre_EditPrefs ,NULL},
@ -3467,7 +3465,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
ActHidRgtCol, // #669
ActShoLftCol, // #670
ActShoRgtCol, // #671
ActChgLay, // #672
-1, // #672 (obsolete action)
ActEdiPrf, // #673
ActChgCol, // #674
ActSeeDpt, // #675

View File

@ -70,7 +70,7 @@ 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+90+73+68+204+183+154+171+27+80)
#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+183+154+171+27+79)
#define Act_MAX_ACTION_COD 1485
@ -1311,43 +1311,42 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
#define ActReqEdiMyNet (ActSeeAllStaCrs+44)
#define ActChgMyNet (ActSeeAllStaCrs+45)
#define ActChgLay (ActSeeAllStaCrs+46)
#define ActChgThe (ActSeeAllStaCrs+47)
#define ActReqChgLan (ActSeeAllStaCrs+48)
#define ActChgLan (ActSeeAllStaCrs+49)
#define ActChg1stDay (ActSeeAllStaCrs+50)
#define ActChgCol (ActSeeAllStaCrs+51)
#define ActHidLftCol (ActSeeAllStaCrs+52)
#define ActHidRgtCol (ActSeeAllStaCrs+53)
#define ActShoLftCol (ActSeeAllStaCrs+54)
#define ActShoRgtCol (ActSeeAllStaCrs+55)
#define ActChgIco (ActSeeAllStaCrs+56)
#define ActChgMnu (ActSeeAllStaCrs+57)
#define ActChgNtfPrf (ActSeeAllStaCrs+58)
#define ActChgThe (ActSeeAllStaCrs+46)
#define ActReqChgLan (ActSeeAllStaCrs+47)
#define ActChgLan (ActSeeAllStaCrs+48)
#define ActChg1stDay (ActSeeAllStaCrs+49)
#define ActChgCol (ActSeeAllStaCrs+50)
#define ActHidLftCol (ActSeeAllStaCrs+51)
#define ActHidRgtCol (ActSeeAllStaCrs+52)
#define ActShoLftCol (ActSeeAllStaCrs+53)
#define ActShoRgtCol (ActSeeAllStaCrs+54)
#define ActChgIco (ActSeeAllStaCrs+55)
#define ActChgMnu (ActSeeAllStaCrs+56)
#define ActChgNtfPrf (ActSeeAllStaCrs+57)
#define ActPrnUsrQR (ActSeeAllStaCrs+59)
#define ActPrnUsrQR (ActSeeAllStaCrs+58)
#define ActPrnMyTimTbl (ActSeeAllStaCrs+60)
#define ActEdiTut (ActSeeAllStaCrs+61)
#define ActChgTut (ActSeeAllStaCrs+62)
#define ActReqRemFilBrf (ActSeeAllStaCrs+63)
#define ActRemFilBrf (ActSeeAllStaCrs+64)
#define ActRemFolBrf (ActSeeAllStaCrs+65)
#define ActCopBrf (ActSeeAllStaCrs+66)
#define ActPasBrf (ActSeeAllStaCrs+67)
#define ActRemTreBrf (ActSeeAllStaCrs+68)
#define ActFrmCreBrf (ActSeeAllStaCrs+69)
#define ActCreFolBrf (ActSeeAllStaCrs+70)
#define ActCreLnkBrf (ActSeeAllStaCrs+71)
#define ActRenFolBrf (ActSeeAllStaCrs+72)
#define ActRcvFilBrfDZ (ActSeeAllStaCrs+73)
#define ActRcvFilBrfCla (ActSeeAllStaCrs+74)
#define ActExpBrf (ActSeeAllStaCrs+75)
#define ActConBrf (ActSeeAllStaCrs+76)
#define ActZIPBrf (ActSeeAllStaCrs+77)
#define ActReqDatBrf (ActSeeAllStaCrs+78)
#define ActChgDatBrf (ActSeeAllStaCrs+79)
#define ActDowBrf (ActSeeAllStaCrs+80)
#define ActPrnMyTimTbl (ActSeeAllStaCrs+59)
#define ActEdiTut (ActSeeAllStaCrs+60)
#define ActChgTut (ActSeeAllStaCrs+61)
#define ActReqRemFilBrf (ActSeeAllStaCrs+62)
#define ActRemFilBrf (ActSeeAllStaCrs+63)
#define ActRemFolBrf (ActSeeAllStaCrs+64)
#define ActCopBrf (ActSeeAllStaCrs+65)
#define ActPasBrf (ActSeeAllStaCrs+66)
#define ActRemTreBrf (ActSeeAllStaCrs+67)
#define ActFrmCreBrf (ActSeeAllStaCrs+68)
#define ActCreFolBrf (ActSeeAllStaCrs+69)
#define ActCreLnkBrf (ActSeeAllStaCrs+70)
#define ActRenFolBrf (ActSeeAllStaCrs+71)
#define ActRcvFilBrfDZ (ActSeeAllStaCrs+72)
#define ActRcvFilBrfCla (ActSeeAllStaCrs+73)
#define ActExpBrf (ActSeeAllStaCrs+74)
#define ActConBrf (ActSeeAllStaCrs+75)
#define ActZIPBrf (ActSeeAllStaCrs+76)
#define ActReqDatBrf (ActSeeAllStaCrs+77)
#define ActChgDatBrf (ActSeeAllStaCrs+78)
#define ActDowBrf (ActSeeAllStaCrs+79)
/*****************************************************************************/
/******************************** Public types *******************************/

View File

@ -115,11 +115,17 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.46.1 (2015/11/27)"
#define Log_PLATFORM_VERSION "SWAD 15.47 (2015/11/27)"
// 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 sql/swad*.sql | tail -1
/*
Version 15.47: Nov 27, 2015 Mobile layout is removed (only 1.45% of users used it and now it is replaced by responsive design). (187426 lines)
3 changes necessary in database:
ALTER TABLE IP_prefs DROP COLUMN Layout;
ALTER TABLE usr_data DROP COLUMN Layout;
UPDATE actions SET Obsolete='Y' WHERE ActCod='672';
Version 15.46.1: Nov 27, 2015 Responsive design in search box (top of the page). (188094 lines)
Version 15.46: Nov 27, 2015 First version with responsive design: both side columns are hidden when screen size is small. (188078 lines)
Version 15.45.15: Nov 25, 2015 Some CSS styles related to layout are moved to CSS file. (188021 lines)

View File

@ -309,9 +309,6 @@
/* Courses */
#define Cfg_MIN_NUM_COURSES_TO_CONFIRM_SHOW_BIG_LIST 500 // If the number of courses in a list is greater than this, ask me for confirmation before showing the list
/* Layout */
#define Cfg_LAYOUT_MOBILE_NUM_COLUMNS 3
/* Notifications */
#define Cfg_MAX_CHARS_NOTIF_SUMMARY_SWAD 50
#define Cfg_MAX_CHARS_NOTIF_SUMMARY_WEB_SERVICE 100

View File

@ -1130,11 +1130,6 @@ void Crs_FreeListCoursesInDegree (struct Degree *Deg)
void Crs_WriteSelectorMyCourses (void)
{
extern const char *Txt_No_COURSE_SELECTED;
static const unsigned SelectorWidth[Lay_NUM_LAYOUTS] =
{
175, // Lay_LAYOUT_DESKTOP
300, // Lay_LAYOUT_MOBILE
};
unsigned NumMyCrs;
bool IBelongToCurrentCrs = false;
long CrsCod;
@ -1153,9 +1148,9 @@ void Crs_WriteSelectorMyCourses (void)
/***** Start of selector of courses *****/
fprintf (Gbl.F.Out,"<select name=\"CrsCod\""
" style=\"width:%upx; margin:1px;\""
" style=\"width:175px; margin:1px;\""
" onchange=\"document.getElementById('%s').submit();\">",
SelectorWidth[Gbl.Prefs.Layout],Gbl.FormId);
Gbl.FormId);
if (Gbl.Usrs.Me.MyCourses.Num)
{

View File

@ -95,20 +95,18 @@ mysql> DESCRIBE IP_prefs;
| UsrCod | int(11) | NO | MUL | -1 | |
| LastChange | datetime | NO | MUL | NULL | |
| FirstDayOfWeek | tinyint(4) | NO | | 0 | |
| Layout | tinyint(4) | NO | | 0 | |
| Theme | char(16) | NO | | NULL | |
| IconSet | char(16) | NO | | NULL | |
| Menu | tinyint(4) | NO | | 0 | |
| SideCols | tinyint(4) | NO | | NULL | |
+----------------+------------+------+-----+---------+-------+
9 rows in set (0.01 sec)
8 rows in set (0.01 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS IP_prefs ("
"IP CHAR(15) NOT NULL,"
"UsrCod INT NOT NULL DEFAULT -1,"
"LastChange DATETIME NOT NULL,"
"FirstDayOfWeek TINYINT NOT NULL DEFAULT 0,"
"Layout TINYINT NOT NULL DEFAULT 0,"
"Theme CHAR(16) NOT NULL,"
"IconSet CHAR(16) NOT NULL,"
"Menu TINYINT NOT NULL DEFAULT 0,"
@ -2275,7 +2273,6 @@ mysql> DESCRIBE usr_data;
| Surname2 | varchar(32) | NO | | NULL | |
| FirstName | varchar(32) | NO | | NULL | |
| Sex | enum('unknown','female','male') | NO | | unknown | |
| Layout | tinyint(4) | NO | MUL | 0 | |
| Theme | char(16) | NO | MUL | NULL | |
| IconSet | char(16) | NO | MUL | NULL | |
| Language | char(2) | NO | MUL | NULL | |
@ -2302,7 +2299,7 @@ mysql> DESCRIBE usr_data;
| NotifNtfEvents | int(11) | NO | | 0 | |
| EmailNtfEvents | int(11) | NO | | 0 | |
+-------------------+----------------------------------------+------+-----+---------+----------------+
33 rows in set (0.00 sec)
32 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS usr_data ("
"UsrCod INT NOT NULL AUTO_INCREMENT,"
@ -2312,7 +2309,6 @@ mysql> DESCRIBE usr_data;
"Surname2 VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL,"
"FirstName VARCHAR(32) COLLATE latin1_spanish_ci NOT NULL,"
"Sex ENUM ('unknown','female','male') NOT NULL DEFAULT 'unknown',"
"Layout TINYINT NOT NULL DEFAULT 0,"
"Theme CHAR(16) NOT NULL,"
"IconSet CHAR(16) NOT NULL,"
"Language CHAR(2) NOT NULL,"
@ -2338,7 +2334,7 @@ mysql> DESCRIBE usr_data;
"SideCols TINYINT NOT NULL DEFAULT 3,"
"NotifNtfEvents INT NOT NULL DEFAULT 0,"
"EmailNtfEvents INT NOT NULL DEFAULT 0,"
"PRIMARY KEY(UsrCod),UNIQUE INDEX(EncryptedUsrCod),INDEX(Layout),INDEX(Theme),INDEX(IconSet),INDEX(Language),INDEX(FirstDayOfWeek),INDEX(CtyCod),INDEX(InsCtyCod),INDEX(InsCod),INDEX(DptCod),INDEX(CtrCod),INDEX(Menu),INDEX(SideCols))");
"PRIMARY KEY(UsrCod),UNIQUE INDEX(EncryptedUsrCod),INDEX(Theme),INDEX(IconSet),INDEX(Language),INDEX(FirstDayOfWeek),INDEX(CtyCod),INDEX(InsCtyCod),INDEX(InsCod),INDEX(DptCod),INDEX(CtrCod),INDEX(Menu),INDEX(SideCols))");
/***** Table usr_emails *****/
/*

View File

@ -447,14 +447,13 @@ void Enr_UpdateUsrData (struct UsrData *UsrDat)
sprintf (Query,"UPDATE usr_data"
" SET Password='%s',"
"Surname1='%s',Surname2='%s',FirstName='%s',Sex='%s',"
"Layout='%u',Theme='%s',IconSet='%s',Language='%s',FirstDayOfWeek='%u',PhotoVisibility='%s',ProfileVisibility='%s',"
"Theme='%s',IconSet='%s',Language='%s',FirstDayOfWeek='%u',PhotoVisibility='%s',ProfileVisibility='%s',"
"CtyCod='%ld',"
"LocalAddress='%s',LocalPhone='%s',FamilyAddress='%s',FamilyPhone='%s',OriginPlace='%s',Birthday='%04u-%02u-%02u',Comments='%s'"
" WHERE UsrCod='%ld'",
UsrDat->Password,
UsrDat->Surname1,UsrDat->Surname2,UsrDat->FirstName,
Usr_StringsSexDB[UsrDat->Sex],
(unsigned) UsrDat->Prefs.Layout,
The_ThemeId[UsrDat->Prefs.Theme],
Ico_IconSetId[UsrDat->Prefs.IconSet],
Txt_STR_LANG_ID[UsrDat->Prefs.Language],

View File

@ -128,7 +128,6 @@ void Gbl_InitializeGlobals (void)
Gbl.Prefs.Language = Txt_Current_CGI_SWAD_Language;
Gbl.Prefs.FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT; // Default first day of week
Gbl.Prefs.Layout = Lay_LAYOUT_DEFAULT; // Default layout
Gbl.Prefs.Menu = Mnu_MENU_DEFAULT; // Default menu
Gbl.Prefs.Theme = The_THEME_DEFAULT; // Default theme
Gbl.Prefs.IconSet = Ico_ICON_SET_DEFAULT; // Default icon set

View File

@ -132,7 +132,6 @@ struct Globals
{
Txt_Language_t Language;
unsigned FirstDayOfWeek;
Lay_Layout_t Layout;
Mnu_Menu_t Menu;
unsigned SideCols;
The_Theme_t Theme;

View File

@ -57,12 +57,6 @@ extern struct Act_Actions Act_Actions[Act_NUM_ACTIONS];
/****************************** Public constants *****************************/
/*****************************************************************************/
const char *Lay_LayoutIcons[Lay_NUM_LAYOUTS] =
{
"desktop",
"mobile",
};
/*****************************************************************************/
/***************************** Private constants *****************************/
/*****************************************************************************/
@ -89,8 +83,7 @@ static void Lay_WriteScriptInit (void);
static void Lay_WriteScriptConnectedUsrs (void);
static void Lay_WriteScriptCustomDropzone (void);
static void Lay_WritePageTopHeadingDesktop (void);
static void Lay_WritePageTopHeadingMobile (void);
static void Lay_WritePageTopHeading (void);
static void Lay_WriteTitleAction (void);
@ -127,8 +120,7 @@ void Lay_WriteStartOfPage (void)
/***** Compute connected users *****/
if (Gbl.CurrentAct == ActLstCon ||
(Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP &&
(Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN) &&
((Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN) &&
Gbl.CurrentCrs.Crs.CrsCod > 0))
// Right column visible && There is a course selected
Con_ComputeConnectedUsrsBelongingToCurrentCrs ();
@ -196,10 +188,8 @@ void Lay_WriteStartOfPage (void)
Gbl.Prefs.IconsURL);
/* Style sheet for SWAD */
fprintf (Gbl.F.Out,"<link rel=\"StyleSheet\" href=\"%s/%s\" type=\"text/css\" />\n",
Cfg_HTTPS_URL_SWAD_PUBLIC,
(Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP) ? "swad_desktop.css" :
"swad_mobile.css");
fprintf (Gbl.F.Out,"<link rel=\"StyleSheet\" href=\"%s/swad_desktop.css\" type=\"text/css\" />\n",
Cfg_HTTPS_URL_SWAD_PUBLIC);
/* Style sheet for Dropzone.js (http://www.dropzonejs.com/) */
// The public directory dropzone must hold:
@ -265,38 +255,26 @@ void Lay_WriteStartOfPage (void)
fprintf (Gbl.F.Out,"<div id=\"%s\">",IdWholePage[Gbl.Prefs.Theme]);
/***** Header of layout *****/
switch (Gbl.Prefs.Layout)
{
case Lay_LAYOUT_DESKTOP:
Lay_WritePageTopHeadingDesktop ();
break;
case Lay_LAYOUT_MOBILE:
Lay_WritePageTopHeadingMobile ();
break;
default:
break;
}
Lay_WritePageTopHeading ();
/***** 4th row: main zone *****/
fprintf (Gbl.F.Out,"<div id=\"main_zone\">");
/* Left column */
if (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP)
if (Gbl.Prefs.SideCols & Lay_SHOW_LEFT_COLUMN) // Left column visible
{
fprintf (Gbl.F.Out,"<div class=\"LEFT_COL\">");
Lay_ShowLeftColumn ();
fprintf (Gbl.F.Out,"</div>");
}
if (Gbl.Prefs.SideCols & Lay_SHOW_LEFT_COLUMN) // Left column visible
{
fprintf (Gbl.F.Out,"<div class=\"LEFT_COL\">");
Lay_ShowLeftColumn ();
fprintf (Gbl.F.Out,"</div>");
}
/* Right column */
if (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP)
if (Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN) // Right column visible
{
fprintf (Gbl.F.Out,"<div class=\"RIGHT_COL\">");
Lay_ShowRightColumn ();
fprintf (Gbl.F.Out,"</div>");
}
if (Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN) // Right column visible
{
fprintf (Gbl.F.Out,"<div class=\"RIGHT_COL\">");
Lay_ShowRightColumn ();
fprintf (Gbl.F.Out,"</div>");
}
/* Central (main) part */
switch (Gbl.Prefs.SideCols)
@ -317,47 +295,22 @@ void Lay_WriteStartOfPage (void)
fprintf (Gbl.F.Out,"<div id=\"main_zone_central_container\" class=\"%s\">"
"<div id=\"main_zone_central_content\">",
The_TabOnBgColors[Gbl.Prefs.Theme]);
switch (Gbl.Prefs.Layout)
if (Gbl.Prefs.Menu == Mnu_MENU_VERTICAL)
{
case Lay_LAYOUT_DESKTOP:
/* Left bar used to expand-contract central zone */
/*
fprintf (Gbl.F.Out,"<div class=\"MAIN_ZONE_EXPAND\">");
Pre_PutLeftIconToHideShowCols ();
fprintf (Gbl.F.Out,"</div>");
*/
if (Gbl.Prefs.Menu == Mnu_MENU_VERTICAL)
{
/* Vertical menu (left) */
fprintf (Gbl.F.Out,"<div id=\"main_zone_menu_vertical\">");
Mnu_WriteVerticalMenuThisTabDesktop ();
fprintf (Gbl.F.Out,"</div>");
}
/* Start of main zone for actions output */
fprintf (Gbl.F.Out,"<div id=\"main_zone_canvas\">");
if (Gbl.Prefs.Menu == Mnu_MENU_HORIZONTAL)
/* Horizontal menu */
Mnu_WriteHorizontalMenuThisTabDesktop ();
break;
case Lay_LAYOUT_MOBILE:
/* Start of main zone for actions output */
fprintf (Gbl.F.Out,"<div id=\"main_zone_canvas\">");
Usr_WarningWhenDegreeTypeDoesntAllowDirectLogin ();
if (Act_Actions[Act_Actions[Gbl.CurrentAct].SuperAction].IndexInMenu < 0) // Write vertical menu
{
if (Gbl.CurrentAct == ActMnu)
Mnu_WriteMenuThisTabMobile ();
else
Tab_DrawTabsMobile ();
}
break;
default:
break;
/* Vertical menu (left) */
fprintf (Gbl.F.Out,"<div id=\"main_zone_menu_vertical\">");
Mnu_WriteVerticalMenuThisTabDesktop ();
fprintf (Gbl.F.Out,"</div>");
}
/* Start of main zone for actions output */
fprintf (Gbl.F.Out,"<div id=\"main_zone_canvas\">");
if (Gbl.Prefs.Menu == Mnu_MENU_HORIZONTAL)
/* Horizontal menu */
Mnu_WriteHorizontalMenuThisTabDesktop ();
/* Write warning when degree type does not allow direct login */
Usr_WarningWhenDegreeTypeDoesntAllowDirectLogin ();
@ -366,8 +319,7 @@ void Lay_WriteStartOfPage (void)
Inf_WriteMsgYouMustReadInfo ();
/* Write title of the current action */
if (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP &&
Gbl.Prefs.Menu == Mnu_MENU_VERTICAL &&
if (Gbl.Prefs.Menu == Mnu_MENU_VERTICAL &&
Act_Actions[Act_Actions[Gbl.CurrentAct].SuperAction].IndexInMenu >= 0)
Lay_WriteTitleAction ();
@ -399,26 +351,13 @@ static void Lay_WriteEndOfPage (void)
{
if (!Gbl.Layout.TablEndWritten)
{
Gbl.Layout.TablEndWritten = true;
fprintf (Gbl.F.Out,"</div>"); // main_zone_canvas
/*
if (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP)
{
// Right bar used to expand-contract central zone
fprintf (Gbl.F.Out,"<div id=\"MAIN_ZONE_EXPAND\">");
Pre_PutRigthIconToHideShowCols ();
fprintf (Gbl.F.Out,"</div>");
}
*/
fprintf (Gbl.F.Out,"</div>" // main_zone_central_content
fprintf (Gbl.F.Out,"</div>" // main_zone_canvas
"</div>" // main_zone_central_content
"</div>" // main_zone_central_container
"</div>" // main_zone_central
"</div>"); // main_zone
/***** End of box that contains the whole page except the foot *****/
fprintf (Gbl.F.Out,"</div>\n"); // whole_page_*
"</div>" // main_zone
"</div>\n"); // whole_page_* (box that contains the whole page except the foot)
Gbl.Layout.TablEndWritten = true;
}
}
@ -514,8 +453,7 @@ static void Lay_WriteScripts (void)
}
/***** Prepare script to draw months *****/
if ((Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP &&
(Gbl.Prefs.SideCols & Lay_SHOW_LEFT_COLUMN)) || // Left column visible
if ((Gbl.Prefs.SideCols & Lay_SHOW_LEFT_COLUMN) || // Left column visible
Gbl.CurrentAct == ActSeeCal ||
Gbl.CurrentAct == ActPrnCal)
{
@ -651,13 +589,11 @@ static void Lay_WriteScriptInit (void)
fprintf (Gbl.F.Out,"<script type=\"text/javascript\">\n");
if (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP)
Dat_WriteScriptMonths ();
Dat_WriteScriptMonths ();
fprintf (Gbl.F.Out,"function init(){\n");
if (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP &&
(Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN)) // Right column visible
if ((Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN)) // Right column visible
Con_WriteScriptClockConnected ();
// Put the focus on login form
@ -720,7 +656,7 @@ static void Lay_WriteScriptCustomDropzone (void)
/************************ Write top heading of the page **********************/
/*****************************************************************************/
static void Lay_WritePageTopHeadingDesktop (void)
static void Lay_WritePageTopHeading (void)
{
extern const char *The_ClassHead[The_NUM_THEMES];
const char *IdHeadRow1[The_NUM_THEMES] =
@ -817,71 +753,6 @@ static void Lay_WritePageTopHeadingDesktop (void)
fprintf (Gbl.F.Out,"</div>");
}
static void Lay_WritePageTopHeadingMobile (void)
{
extern const char *The_ClassHead[The_NUM_THEMES];
const char *IdHeadRow1[The_NUM_THEMES] =
{
"head_row_1_white", // The_THEME_WHITE
"head_row_1_grey", // The_THEME_GREY
"head_row_1_blue", // The_THEME_BLUE
"head_row_1_yellow", // The_THEME_YELLOW
};
/***** 1st. row *****/
/* Start of 1st. row */
fprintf (Gbl.F.Out,"<div id=\"%s\">",IdHeadRow1[Gbl.Prefs.Theme]);
/* 1st. row, 1st. column: logo */
fprintf (Gbl.F.Out,"<div id=\"head_row_1_logo\" style=\"width:%upx;\">"
"<a href=\"%s\" target=\"_blank\">"
"<img src=\"%s/%s\""
" alt=\"%s\" title=\"%s\""
" class=\"CENTER_MIDDLE\""
" style=\"width:%upx; height:%upx;\" />"
"</a>"
"</div>",
Cfg_PLATFORM_LOGO_MOBILE_WIDTH,
Cfg_HTTPS_URL_SWAD_CGI,
Gbl.Prefs.IconsURL,Cfg_PLATFORM_LOGO_MOBILE_FILE,
Cfg_PLATFORM_SHORT_NAME,Cfg_PLATFORM_FULL_NAME,
Cfg_PLATFORM_LOGO_MOBILE_WIDTH,
Cfg_PLATFORM_LOGO_MOBILE_HEIGHT);
/* 1st. row, 2nd. column:
logged user / language selection */
fprintf (Gbl.F.Out,"<div id=\"head_row_1_usr_lang\" class=\"%s\">",
The_ClassHead[Gbl.Prefs.Theme]);
if (Gbl.Usrs.Me.Logged)
Usr_WriteLoggedUsrHead ();
else
Pre_PutSelectorToSelectLanguage ();
fprintf (Gbl.F.Out,"</div>");
/* 1st. row, 3rd. column: link to open/close session */
fprintf (Gbl.F.Out,"<div id=\"head_row_1_session\" class=\"%s\">",
The_ClassHead[Gbl.Prefs.Theme]);
if (Gbl.Usrs.Me.Logged)
Usr_PutFormLogOut ();
else
Usr_PutFormLogIn ();
fprintf (Gbl.F.Out,"</div>");
/* End of 1st. row */
fprintf (Gbl.F.Out,"</div>");
/***** 2nd. row *****/
fprintf (Gbl.F.Out,"<div id=\"head_row_2\">");
Deg_WriteCtyInsCtrDeg ();
Crs_WriteSelectorMyCourses ();
fprintf (Gbl.F.Out,"</div>");
/***** 3rd. row (breadcrumb) *****/
fprintf (Gbl.F.Out,"<div id=\"head_row_3\">");
Tab_DrawBreadcrumb ();
fprintf (Gbl.F.Out,"</div>");
}
/*****************************************************************************/
/*********** Write icon and title associated to the current action ***********/
/*****************************************************************************/
@ -1357,7 +1228,8 @@ void Lay_ShowErrorAndExit (const char *Message)
/***** End the output *****/
if (!Gbl.Layout.HTMLEndWritten)
{
fprintf (Gbl.F.Out,"</body>\n</html>\n");
fprintf (Gbl.F.Out,"</body>\n"
"</html>\n");
Gbl.Layout.HTMLEndWritten = true;
}
}
@ -1408,9 +1280,8 @@ void Lay_ShowAlert (Lay_AlertType_t MsgType,const char *Message)
void Lay_RefreshNotifsAndConnected (void)
{
unsigned NumUsr;
bool ShowConnected = (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP &&
(Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN) &&
Gbl.CurrentCrs.Crs.CrsCod > 0); // Right column visible && There is a course selected
bool ShowConnected = (Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN) &&
Gbl.CurrentCrs.Crs.CrsCod > 0; // Right column visible && There is a course selected
// Sometimes, someone must do this work, so who best than processes that refresh via AJAX?
if (!(Gbl.PID % 11)) // Do this only one of 11 times ( 11 is prime)
@ -1473,51 +1344,43 @@ void Lay_WritePageFooter (void)
extern const char *Txt_About_X;
extern const char *Txt_Questions_and_problems;
switch (Gbl.Prefs.Layout)
{
case Lay_LAYOUT_DESKTOP:
Lay_WriteFootFromHTMLFile ();
Lay_WriteFootFromHTMLFile ();
fprintf (Gbl.F.Out,"<div class=\"FOOT CENTER_MIDDLE\""
" style=\"padding-bottom:12px;\">");
fprintf (Gbl.F.Out,"<div class=\"FOOT CENTER_MIDDLE\""
" style=\"padding-bottom:12px;\">");
/***** Institution and centre hosting the platform *****/
fprintf (Gbl.F.Out,"<a href=\"%s\" class=\"FOOT\" target=\"_blank\">"
"<img src=\"%s/%s\""
" alt=\"%s\" title=\"%s\""
" style=\"width:%upx; height:%upx;\" />"
"<div>%s</div>"
"</a>",
Cfg_ABOUT_URL,
Gbl.Prefs.IconsURL,Cfg_ABOUT_LOGO,
Cfg_ABOUT_NAME,Cfg_ABOUT_NAME,
Cfg_ABOUT_LOGO_WIDTH,Cfg_ABOUT_LOGO_HEIGHT,
Cfg_ABOUT_NAME);
/***** Institution and centre hosting the platform *****/
fprintf (Gbl.F.Out,"<a href=\"%s\" class=\"FOOT\" target=\"_blank\">"
"<img src=\"%s/%s\""
" alt=\"%s\" title=\"%s\""
" style=\"width:%upx; height:%upx;\" />"
"<div>%s</div>"
"</a>",
Cfg_ABOUT_URL,
Gbl.Prefs.IconsURL,Cfg_ABOUT_LOGO,
Cfg_ABOUT_NAME,Cfg_ABOUT_NAME,
Cfg_ABOUT_LOGO_WIDTH,Cfg_ABOUT_LOGO_HEIGHT,
Cfg_ABOUT_NAME);
fprintf (Gbl.F.Out,"<div>"
"<a href=\"%s\" class=\"FOOT\" target=\"_blank\">%s:</a> "
"<a href=\"mailto:%s\" class=\"FOOT\" target=\"_blank\">%s</a>"
"</div>",
Cfg_HELP_WEB,Txt_Questions_and_problems,
Cfg_PLATFORM_RESPONSIBLE_E_MAIL,Cfg_PLATFORM_RESPONSIBLE_E_MAIL);
fprintf (Gbl.F.Out,"<div>"
"<a href=\"%s\" class=\"FOOT\" target=\"_blank\">%s:</a> "
"<a href=\"mailto:%s\" class=\"FOOT\" target=\"_blank\">%s</a>"
"</div>",
Cfg_HELP_WEB,Txt_Questions_and_problems,
Cfg_PLATFORM_RESPONSIBLE_E_MAIL,Cfg_PLATFORM_RESPONSIBLE_E_MAIL);
/***** About *****/
fprintf (Gbl.F.Out,"<div>"
"<a href=\"%s\" class=\"FOOT\" target=\"_blank\">",
Cfg_ABOUT_SWAD_URL);
fprintf (Gbl.F.Out,Txt_About_X,Log_PLATFORM_VERSION);
fprintf (Gbl.F.Out,"</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
/***** About *****/
fprintf (Gbl.F.Out,"<div>"
"<a href=\"%s\" class=\"FOOT\" target=\"_blank\">",
Cfg_ABOUT_SWAD_URL);
fprintf (Gbl.F.Out,Txt_About_X,Log_PLATFORM_VERSION);
fprintf (Gbl.F.Out,"</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
/***** Write time to generate and send page *****/
Sta_WriteTimeToGenerateAndSendPage ();
/***** Write time to generate and send page *****/
Sta_WriteTimeToGenerateAndSendPage ();
fprintf (Gbl.F.Out,"</div>"
"</div>");
break;
case Lay_LAYOUT_MOBILE:
default:
break;
}
fprintf (Gbl.F.Out,"</div>"
"</div>");
}
/*****************************************************************************/
@ -1637,81 +1500,6 @@ void Lay_WriteHeaderClassPhoto (unsigned NumColumns,bool PrintView,bool DrawingC
"</tr>");
}
/*****************************************************************************/
/************************ Put icons to select a layout ***********************/
/*****************************************************************************/
void Lay_PutIconsToSelectLayout (void)
{
extern const char *Txt_Layout;
extern const char *Txt_LAYOUT_NAMES[Lay_NUM_LAYOUTS];
Lay_Layout_t Layout;
Lay_StartRoundFrameTable (NULL,2,Txt_Layout);
fprintf (Gbl.F.Out,"<tr>");
for (Layout = (Lay_Layout_t) 0;
Layout < Lay_NUM_LAYOUTS;
Layout++)
{
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_MIDDLE\">",
Layout == Gbl.Prefs.Layout ? "PREF_ON" :
"PREF_OFF");
Act_FormStart (ActChgLay);
Par_PutHiddenParamUnsigned ("Layout",(unsigned) Layout);
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/%s32x32.gif\""
" alt=\"%s\" title=\"%s\" class=\"ICON32x32B\""
" style=\"margin:0 auto;\" />",
Gbl.Prefs.IconsURL,
Lay_LayoutIcons[Layout],
Txt_LAYOUT_NAMES[Layout],
Txt_LAYOUT_NAMES[Layout]);
Act_FormEnd ();
fprintf (Gbl.F.Out,"</td>");
}
fprintf (Gbl.F.Out,"</tr>");
Lay_EndRoundFrameTableWithButton (Lay_NO_BUTTON,NULL);
}
/*****************************************************************************/
/******************************** Change layout ******************************/
/*****************************************************************************/
void Lay_ChangeLayout (void)
{
char Query[512];
/***** Get param layout *****/
Gbl.Prefs.Layout = Lay_GetParamLayout ();
/***** Store layout in database *****/
if (Gbl.Usrs.Me.Logged)
{
sprintf (Query,"UPDATE usr_data SET Layout='%u' WHERE UsrCod='%ld'",
(unsigned) Gbl.Prefs.Layout,Gbl.Usrs.Me.UsrDat.UsrCod);
DB_QueryUPDATE (Query,"can not update your preference about layout");
}
/***** Set preferences from current IP *****/
Pre_SetPrefsFromIP ();
}
/*****************************************************************************/
/**************************** Get parameter layout ***************************/
/*****************************************************************************/
Lay_Layout_t Lay_GetParamLayout (void)
{
char UnsignedStr[1+10+1];
unsigned UnsignedNum;
Par_GetParToText ("Layout",UnsignedStr,1+10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
if (UnsignedNum < Lay_NUM_LAYOUTS)
return (Lay_Layout_t) UnsignedNum;
return Lay_LAYOUT_UNKNOWN;
}
/*****************************************************************************/
/**************** Show advertisement about mobile version ********************/
/*****************************************************************************/

View File

@ -56,16 +56,6 @@ typedef enum
Lay_ERROR = 3,
} Lay_AlertType_t;
#define Lay_NUM_LAYOUTS 2
typedef enum
{
Lay_LAYOUT_DESKTOP = 0,
Lay_LAYOUT_MOBILE = 1,
Lay_LAYOUT_UNKNOWN = 2,
} Lay_Layout_t; // Stored in database. Don't change numbers!
#define Lay_LAYOUT_DEFAULT Lay_LAYOUT_DESKTOP
typedef enum
{
Lay_NO_BUTTON,
@ -115,11 +105,6 @@ void Lay_WritePageFooter (void);
void Lay_WriteHeaderClassPhoto (unsigned NumColumns,bool PrintView,bool DrawingClassPhoto,
long InsCod,long DegCod,long CrsCod);
void Lay_PutIconsToSelectLayout (void);
void Lay_ChangeLayout (void);
Lay_Layout_t Lay_GetParamLayout (void);
Lay_Layout_t Lay_GetLayoutFromStr (const char *Str);
void Lay_AdvertisementMobile (void);
void Lay_IndentDependingOnLevel (unsigned Level,bool IsLastItemInLevel[]);

View File

@ -235,71 +235,6 @@ void Mnu_WriteHorizontalMenuThisTabDesktop (void)
"</div>");
}
/*****************************************************************************/
/************* Write the menu of current tab (mobile layout) *****************/
/*****************************************************************************/
void Mnu_WriteMenuThisTabMobile (void)
{
extern const char *The_ClassMenuOn[The_NUM_THEMES];
extern const char *The_ClassMenuOff[The_NUM_THEMES];
extern const struct Act_Menu Act_Menu[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB];
extern const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB];
unsigned NumOptInMenu;
unsigned NumOptVisible; // Only options I can see
Act_Action_t NumAct;
const char *Title;
/***** Table start *****/
fprintf (Gbl.F.Out,"<table style=\"width:100%%;\">");
/***** Loop to write all options in menu. Each row holds an option *****/
for (NumOptInMenu = NumOptVisible = 0;
NumOptInMenu < Act_MAX_OPTIONS_IN_MENU_PER_TAB;
NumOptInMenu++)
{
if ((NumAct = Act_Menu[Gbl.CurrentTab][NumOptInMenu].Action) == 0) // At the end of each tab, actions are initialized to 0, so 0 marks the end of the menu
break;
if (Act_CheckIfIHavePermissionToExecuteAction (NumAct))
{
Title = Act_GetSubtitleAction (NumAct);
if (NumOptVisible % Cfg_LAYOUT_MOBILE_NUM_COLUMNS == 0)
fprintf (Gbl.F.Out,"<tr>");
/* Icon at top and text at bottom */
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:25%%;\">"
"<div class=\"ICON_HIGHLIGHT\">");
Act_FormStart (NumAct);
Act_LinkFormSubmit (Title,
(NumAct == Act_Actions[Gbl.CurrentAct].SuperAction) ? The_ClassMenuOn[Gbl.Prefs.Theme] :
The_ClassMenuOff[Gbl.Prefs.Theme]);
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/%s/%s64x64.gif\""
" alt=\"%s\" class=\"ICON64x64\""
" style=\"margin:5px;\" />"
"<div>%s</div>"
"</a>",
Gbl.Prefs.PathIconSet,Cfg_ICON_ACTION,
Act_Actions[NumAct].Icon,
Txt_MENU_TITLE[Gbl.CurrentTab][NumOptInMenu],
Txt_MENU_TITLE[Gbl.CurrentTab][NumOptInMenu]);
Act_FormEnd ();
fprintf (Gbl.F.Out,"</div>"
"</td>");
if ((NumOptVisible % Cfg_LAYOUT_MOBILE_NUM_COLUMNS) ==
(Cfg_LAYOUT_MOBILE_NUM_COLUMNS - 1))
fprintf (Gbl.F.Out,"</tr>");
NumOptVisible++;
}
}
/***** Table end *****/
fprintf (Gbl.F.Out,"</table>");
}
/*****************************************************************************/
/************* Put icons to select menu (horizontal or vertical) *************/
/*****************************************************************************/

View File

@ -51,7 +51,6 @@ typedef enum
void Mnu_WriteVerticalMenuThisTabDesktop (void);
void Mnu_WriteHorizontalMenuThisTabDesktop (void);
void Mnu_WriteMenuThisTabMobile (void);
void Mnu_PutIconsToSelectMenu (void);
void Mnu_ChangeMenu (void);

View File

@ -127,7 +127,6 @@ void Par_GetMainParameters (void)
long OtherUsrCod;
char LongStr[1+10+1];
char YearStr[2+1];
Lay_Layout_t LayoutFromForm;
/***** Reset codes of country, institution, centre, degree and course *****/
Gbl.CurrentCty.Cty.CtyCod =
@ -227,8 +226,6 @@ void Par_GetMainParameters (void)
/***** Try to get preferences changed from current IP *****/
Pre_GetPrefsFromIP ();
if (Gbl.Prefs.Layout == Lay_LAYOUT_UNKNOWN)
Gbl.Prefs.Layout = Lay_LAYOUT_DEFAULT;
if (!Gbl.Session.IsOpen) // When no session open (no logged user)...
{
@ -236,20 +233,11 @@ void Par_GetMainParameters (void)
if (Gbl.Prefs.Theme == The_THEME_UNKNOWN)
Gbl.Prefs.Theme = The_THEME_DEFAULT;
/***** Try to get parameter layout (sent via GET method) *****/
if ((LayoutFromForm = Lay_GetParamLayout ()) != Lay_LAYOUT_UNKNOWN)
{
/* Parameter is correct, so set layout */
Gbl.Prefs.Layout = LayoutFromForm;
/* Update preferences from current IP */
Pre_SetPrefsFromIP ();
}
/***** Set path of theme *****/
sprintf (Gbl.Prefs.PathTheme,"%s/%s/%s",
Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_THEMES,The_ThemeId[Gbl.Prefs.Theme]);
/***** Set path of theme *****/
/***** Set path of icon set *****/
sprintf (Gbl.Prefs.PathIconSet,"%s/%s/%s",
Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_ICON_SETS,
Ico_IconSetId[Gbl.Prefs.IconSet]);
@ -446,7 +434,6 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
strcmp (ParamName,"act") && // To execute directly an action (allowed only for fully public actions)
strcmp (ParamName,"ses") && // To use an open session when redirecting from one language to another
strcmp (ParamName,"key")) // To verify an email address
// strcmp (ParamName,"Layout") && // To change the layout of the page (wide or narrow)
return 0; // Return no-parameters-found when method is GET and parameter name is not one of these
}
PtrSrc = Gbl.QueryString;

View File

@ -84,26 +84,20 @@ void Pre_EditPrefs (void)
"</tr>"
"</table>");
/***** Layout, side columns, theme, icon set & menu *****/
/***** Menu, side columns, theme, icon set *****/
fprintf (Gbl.F.Out,"<table style=\"margin:0 auto; border-spacing:16px 0;\">"
"<tr>"
"<td>");
Lay_PutIconsToSelectLayout (); // 3. Layout
fprintf (Gbl.F.Out,"</td>");
if (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP)
{
fprintf (Gbl.F.Out,"<td>");
Mnu_PutIconsToSelectMenu (); // 4. Menu
fprintf (Gbl.F.Out,"</td>"
"<td>");
Pre_PutIconsToSelectSideCols (); // 5. Side columns
fprintf (Gbl.F.Out,"</td>");
}
fprintf (Gbl.F.Out,"<td>");
The_PutIconsToSelectTheme (); // 6. Theme
Mnu_PutIconsToSelectMenu (); // 3. Menu
fprintf (Gbl.F.Out,"</td>"
"<td>");
Pre_PutIconsToSelectSideCols (); // 4. Side columns
fprintf (Gbl.F.Out,"</td>"
"<td>");
Ico_PutIconsToSelectIconSet (); // 7. Icon set
The_PutIconsToSelectTheme (); // 5. Theme
fprintf (Gbl.F.Out,"</td>"
"<td>");
Ico_PutIconsToSelectIconSet (); // 6. Icon set
fprintf (Gbl.F.Out,"</td>"
"</tr>"
"</table>");
@ -135,7 +129,7 @@ void Pre_GetPrefsFromIP (void)
if (Gbl.IP[0])
{
/***** Get preferences from database *****/
sprintf (Query,"SELECT FirstDayOfWeek,Layout,Theme,IconSet,Menu,SideCols"
sprintf (Query,"SELECT FirstDayOfWeek,Theme,IconSet,Menu,SideCols"
" FROM IP_prefs WHERE IP='%s'",
Gbl.IP);
if ((NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get preferences")))
@ -152,26 +146,20 @@ void Pre_GetPrefsFromIP (void)
if (Cal_DayIsValidAsFirstDayOfWeek[UnsignedNum])
Gbl.Prefs.FirstDayOfWeek = UnsignedNum;
/* Get layout (row[1]) */
Gbl.Prefs.Layout = Lay_LAYOUT_DEFAULT;
if (sscanf (row[1],"%u",&UnsignedNum) == 1)
if (UnsignedNum < Lay_NUM_LAYOUTS)
Gbl.Prefs.Layout = (Lay_Layout_t) UnsignedNum;
/* Get theme (row[1]) */
Gbl.Prefs.Theme = The_GetThemeFromStr (row[1]);
/* Get theme (row[2]) */
Gbl.Prefs.Theme = The_GetThemeFromStr (row[2]);
/* Get icon set (row[2]) */
Gbl.Prefs.IconSet = Ico_GetIconSetFromStr (row[2]);
/* Get icon set (row[3]) */
Gbl.Prefs.IconSet = Ico_GetIconSetFromStr (row[3]);
/* Get menu (row[4]) */
/* Get menu (row[3]) */
Gbl.Prefs.Menu = Mnu_MENU_DEFAULT;
if (sscanf (row[4],"%u",&UnsignedNum) == 1)
if (sscanf (row[3],"%u",&UnsignedNum) == 1)
if (UnsignedNum < Mnu_NUM_MENUS)
Gbl.Prefs.Menu = (Lay_Layout_t) UnsignedNum;
Gbl.Prefs.Menu = (Mnu_Menu_t) UnsignedNum;
/* Get if user wants to show side columns (row[5]) */
if (sscanf (row[5],"%u",&Gbl.Prefs.SideCols) == 1)
/* Get if user wants to show side columns (row[4]) */
if (sscanf (row[4],"%u",&Gbl.Prefs.SideCols) == 1)
{
if (Gbl.Prefs.SideCols > Lay_SHOW_BOTH_COLUMNS)
Gbl.Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
@ -193,11 +181,10 @@ void Pre_SetPrefsFromIP (void)
char Query[512];
/***** Update preferences from current IP in database *****/
sprintf (Query,"REPLACE INTO IP_prefs (IP,UsrCod,LastChange,FirstDayOfWeek,Layout,Theme,IconSet,Menu,SideCols)"
" VALUES ('%s','%ld',NOW(),'%u','%u','%s','%s','%u','%u')",
sprintf (Query,"REPLACE INTO IP_prefs (IP,UsrCod,LastChange,FirstDayOfWeek,Theme,IconSet,Menu,SideCols)"
" VALUES ('%s','%ld',NOW(),'%u','%s','%s','%u','%u')",
Gbl.IP,Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Prefs.FirstDayOfWeek,
(unsigned) Gbl.Prefs.Layout,
The_ThemeId[Gbl.Prefs.Theme],
Ico_IconSetId[Gbl.Prefs.IconSet],
(unsigned) Gbl.Prefs.Menu,
@ -207,10 +194,9 @@ void Pre_SetPrefsFromIP (void)
/***** If a user is logged, update its preferences in database for all its IP's *****/
if (Gbl.Usrs.Me.Logged)
{
sprintf (Query,"UPDATE IP_prefs SET FirstDayOfWeek='%u',Layout='%u',Theme='%s',IconSet='%s',Menu='%u',SideCols='%u'"
sprintf (Query,"UPDATE IP_prefs SET FirstDayOfWeek='%u',Theme='%s',IconSet='%s',Menu='%u',SideCols='%u'"
" WHERE UsrCod='%ld'",
Gbl.Prefs.FirstDayOfWeek,
(unsigned) Gbl.Prefs.Layout,
The_ThemeId[Gbl.Prefs.Theme],
Ico_IconSetId[Gbl.Prefs.IconSet],
(unsigned) Gbl.Prefs.Menu,
@ -244,17 +230,12 @@ void Pre_PutSelectorToSelectLanguage (void)
{
extern const char *Txt_STR_LANG_NAME[Txt_NUM_LANGUAGES];
Txt_Language_t Lan;
static const unsigned SelectorWidth[Lay_NUM_LAYOUTS] =
{
112, // Lay_LAYOUT_DESKTOP
150, // Lay_LAYOUT_MOBILE
};
Act_FormStart (ActReqChgLan);
fprintf (Gbl.F.Out,"<select name=\"Lan\""
" style=\"width:%upx; margin:0;\""
" style=\"width:112px; margin:0;\""
" onchange=\"document.getElementById('%s').submit();\">",
SelectorWidth[Gbl.Prefs.Layout],Gbl.FormId);
Gbl.FormId);
for (Lan = (Txt_Language_t) 0;
Lan < Txt_NUM_LANGUAGES;
Lan++)
@ -377,70 +358,6 @@ static void Pre_PutIconsToSelectSideCols (void)
Lay_EndRoundFrameTable ();
}
/*****************************************************************************/
/**************** Put left icon to hide/show side columns ********************/
/*****************************************************************************/
void Pre_PutLeftIconToHideShowCols (void)
{
extern const char *Txt_Hide_left_column;
extern const char *Txt_Show_left_column;
if (Gbl.Prefs.SideCols & Lay_SHOW_LEFT_COLUMN)
{
Act_FormStart (ActHidLftCol);
fprintf (Gbl.F.Out,"<input type=\"image\""
" src=\"%s/central_left_8x800.gif\" alt=\"%s\""
" title=\"%s\" class=\"ICON8x800\" />",
Gbl.Prefs.IconsURL,
Txt_Hide_left_column,
Txt_Hide_left_column);
}
else
{
Act_FormStart (ActShoLftCol);
fprintf (Gbl.F.Out,"<input type=\"image\""
" src=\"%s/central_right_8x800.gif\" alt=\"%s\""
" title=\"%s\" class=\"ICON8x800\" />",
Gbl.Prefs.IconsURL,
Txt_Show_left_column,
Txt_Show_left_column);
}
Act_FormEnd ();
}
/*****************************************************************************/
/**************** Put right icon to hide/show side columns *******************/
/*****************************************************************************/
void Pre_PutRigthIconToHideShowCols (void)
{
extern const char *Txt_Hide_right_column;
extern const char *Txt_Show_right_column;
if (Gbl.Prefs.SideCols & Lay_SHOW_RIGHT_COLUMN)
{
Act_FormStart (ActHidRgtCol);
fprintf (Gbl.F.Out,"<input type=\"image\""
" src=\"%s/central_right_8x800.gif\" alt=\"%s\""
" title=\"%s\" class=\"ICON8x800\" />",
Gbl.Prefs.IconsURL,
Txt_Hide_right_column,
Txt_Hide_right_column);
}
else
{
Act_FormStart (ActShoRgtCol);
fprintf (Gbl.F.Out,"<input type=\"image\""
" src=\"%s/central_left_8x800.gif\" alt=\"%s\""
" title=\"%s\" class=\"ICON8x800\" />",
Gbl.Prefs.IconsURL,
Txt_Show_right_column,
Txt_Show_right_column);
}
Act_FormEnd ();
}
/*****************************************************************************/
/*********************** Change layout of side columns ***********************/
/*****************************************************************************/

View File

@ -50,8 +50,6 @@ void Pre_AskChangeLanguage (void);
void Pre_ChangeLanguage (void);
Txt_Language_t Pre_GetParamLanguage (void);
void Pre_PutLeftIconToHideShowCols (void);
void Pre_PutRigthIconToHideShowCols (void);
void Pre_ChangeSideCols (void);
void Pre_HideLeftCol (void);
void Pre_HideRightCol (void);

View File

@ -286,18 +286,12 @@ unsigned Rol_ConvertUnsignedStrToRoles (const char *UnsignedStr)
void Rol_PutFormToChangeMyRole (bool FormInHead)
{
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
static const unsigned SelectorWidth[Lay_NUM_LAYOUTS] =
{
130, // Lay_LAYOUT_DESKTOP
200, // Lay_LAYOUT_MOBILE
};
Rol_Role_t Role;
Act_FormStart (ActChgMyRol);
fprintf (Gbl.F.Out,"<select name=\"UsrTyp\"");
if (FormInHead)
fprintf (Gbl.F.Out," style=\"width:%upx;\"",
SelectorWidth[Gbl.Prefs.Layout]);
fprintf (Gbl.F.Out," style=\"width:130px;\"");
fprintf (Gbl.F.Out," onchange=\"document.getElementById('%s').submit();\">",
Gbl.FormId);
for (Role = Rol__GUEST_;

View File

@ -241,7 +241,6 @@ static void Sta_GetAndShowNumUsrsPerPrivacy (void);
static void Sta_GetAndShowNumUsrsPerPrivacyForAnObject (const char *TxtObject,const char *FieldName);
static void Sta_GetAndShowNumUsrsPerLanguage (void);
static void Sta_GetAndShowNumUsrsPerFirstDayOfWeek (void);
static void Sta_GetAndShowNumUsrsPerLayout (void);
static void Sta_GetAndShowNumUsrsPerTheme (void);
static void Sta_GetAndShowNumUsrsPerIconSet (void);
static void Sta_GetAndShowNumUsrsPerMenu (void);
@ -3935,10 +3934,6 @@ void Sta_ShowUseOfPlatform (void)
/***** Number of users who have chosen a first day of week *****/
Sta_GetAndShowNumUsrsPerFirstDayOfWeek ();
break;
case Sta_LAYOUTS:
/***** Number of users who have chosen a layout *****/
Sta_GetAndShowNumUsrsPerLayout ();
break;
case Sta_THEMES:
/***** Number of users who have chosen a theme *****/
Sta_GetAndShowNumUsrsPerTheme ();
@ -7791,7 +7786,7 @@ static void Sta_GetAndShowNumUsrsPerFirstDayOfWeek (void)
extern const char *Txt_PERCENT_of_users;
unsigned FirstDayOfWeek;
char Query[1024];
unsigned NumUsrs[Lay_NUM_LAYOUTS];
unsigned NumUsrs[7]; // 7: seven days in a week
unsigned NumUsrsTotal = 0;
Lay_StartRoundFrameTable (NULL,2,Txt_STAT_USE_STAT_TYPES[Sta_FIRST_DAY_OF_WEEK]);
@ -7915,142 +7910,6 @@ static void Sta_GetAndShowNumUsrsPerFirstDayOfWeek (void)
Lay_EndRoundFrameTable ();
}
/*****************************************************************************/
/********* Get and show number of users who have chosen a layout *************/
/*****************************************************************************/
static void Sta_GetAndShowNumUsrsPerLayout (void)
{
extern const char *Lay_LayoutIcons[Lay_NUM_LAYOUTS];
extern const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_FIGURES];
extern const char *Txt_Layout;
extern const char *Txt_No_of_users;
extern const char *Txt_PERCENT_of_users;
extern const char *Txt_LAYOUT_NAMES[Lay_NUM_LAYOUTS];
Lay_Layout_t Layout;
char Query[1024];
unsigned NumUsrs[Lay_NUM_LAYOUTS];
unsigned NumUsrsTotal = 0;
Lay_StartRoundFrameTable (NULL,2,Txt_STAT_USE_STAT_TYPES[Sta_LAYOUTS]);
/***** Heading row *****/
fprintf (Gbl.F.Out,"<tr>"
"<th class=\"LEFT_MIDDLE\">"
"%s"
"</th>"
"<th class=\"RIGHT_MIDDLE\">"
"%s"
"</th>"
"<th class=\"RIGHT_MIDDLE\">"
"%s"
"</th>"
"</tr>",
Txt_Layout,
Txt_No_of_users,
Txt_PERCENT_of_users);
/***** For each layout... *****/
for (Layout = (Lay_Layout_t) 0;
Layout < Lay_NUM_LAYOUTS;
Layout++)
{
/***** Get number of users who have chosen this layout from database *****/
switch (Gbl.Scope.Current)
{
case Sco_SCOPE_SYS:
sprintf (Query,"SELECT COUNT(*) FROM usr_data"
" WHERE Layout='%u'",
(unsigned) Layout);
break;
case Sco_SCOPE_CTY:
sprintf (Query,"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM institutions,centres,degrees,courses,crs_usr,usr_data"
" WHERE institutions.CtyCod='%ld'"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=degrees.CtrCod"
" AND degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.Layout='%u'",
Gbl.CurrentCty.Cty.CtyCod,(unsigned) Layout);
break;
case Sco_SCOPE_INS:
sprintf (Query,"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM centres,degrees,courses,crs_usr,usr_data"
" WHERE centres.InsCod='%ld'"
" AND centres.CtrCod=degrees.CtrCod"
" AND degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.Layout='%u'",
Gbl.CurrentIns.Ins.InsCod,(unsigned) Layout);
break;
case Sco_SCOPE_CTR:
sprintf (Query,"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM degrees,courses,crs_usr,usr_data"
" WHERE degrees.CtrCod='%ld'"
" AND degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.Layout='%u'",
Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) Layout);
break;
case Sco_SCOPE_DEG:
sprintf (Query,"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM courses,crs_usr,usr_data"
" WHERE courses.DegCod='%ld'"
" AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.Layout='%u'",
Gbl.CurrentDeg.Deg.DegCod,(unsigned) Layout);
break;
case Sco_SCOPE_CRS:
sprintf (Query,"SELECT COUNT(DISTINCT usr_data.UsrCod)"
" FROM crs_usr,usr_data"
" WHERE crs_usr.CrsCod='%ld'"
" AND crs_usr.UsrCod=usr_data.UsrCod"
" AND usr_data.Layout='%u'",
Gbl.CurrentCrs.Crs.CrsCod,(unsigned) Layout);
break;
default:
Lay_ShowErrorAndExit ("Wrong scope.");
break;
}
NumUsrs[Layout] = (unsigned) DB_QueryCOUNT (Query,"can not get the number of users who have chosen a layout");
/* Update total number of users */
NumUsrsTotal += NumUsrs[Layout];
}
/***** Write number of users who have chosen each layout *****/
for (Layout = (Lay_Layout_t) 0;
Layout < Lay_NUM_LAYOUTS;
Layout++)
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"CENTER_MIDDLE\">"
"<img src=\"%s/%s32x32.gif\""
" alt=\"%s\" title=\"%s\""
" class=\"ICON32x32\" />"
"</td>"
"<td class=\"DAT RIGHT_MIDDLE\">"
"%u"
"</td>"
"<td class=\"DAT RIGHT_MIDDLE\">"
"%5.2f%%"
"</td>"
"</tr>",
Gbl.Prefs.IconsURL,Lay_LayoutIcons[Layout],
Txt_LAYOUT_NAMES[Layout],
Txt_LAYOUT_NAMES[Layout],
NumUsrs[Layout],
NumUsrsTotal ? (float) NumUsrs[Layout] * 100.0 /
(float) NumUsrsTotal :
0);
Lay_EndRoundFrameTable ();
}
/*****************************************************************************/
/********** Get and show number of users who have chosen a theme *************/
/*****************************************************************************/

View File

@ -97,7 +97,7 @@ typedef enum
Sta_CLICKS_GBL_PER_COURSE = 23,
} Sta_ClicksGroupedBy_t;
#define Sta_NUM_FIGURES 22
#define Sta_NUM_FIGURES 21
typedef enum
{
Sta_USERS, // Number of users
@ -117,7 +117,6 @@ typedef enum
Sta_PRIVACY, // Number of users per privacity
Sta_LANGUAGES, // Number of users per language
Sta_FIRST_DAY_OF_WEEK, // Number of users per first day of week
Sta_LAYOUTS, // Number of users per layout
Sta_THEMES, // Number of users per theme
Sta_ICON_SETS, // Number of users per icon set
Sta_MENUS, // Number of users per menu

View File

@ -159,80 +159,6 @@ void Tab_DrawTabsDeskTop (void)
fprintf (Gbl.F.Out,"</ul>");
}
/*****************************************************************************/
/************************ Draw vertical menu with tabs ***********************/
/*****************************************************************************/
void Tab_DrawTabsMobile (void)
{
extern const char *The_ClassMenuOff[The_NUM_THEMES];
extern const char *Txt_TABS_FULL_TXT[Tab_NUM_TABS];
unsigned NumTabVisible;
Act_Tab_t NumTab;
bool ICanViewTab;
/***** Table start *****/
fprintf (Gbl.F.Out,"<table style=\"width:100%%;\">");
/***** Loop to write all tabs. Each row holds a tab *****/
for (NumTabVisible = 0, NumTab = (Act_Tab_t) 1;
NumTab <= (Act_Tab_t) Tab_NUM_TABS - 1;
NumTab++)
{
ICanViewTab = Tab_CheckIfICanViewTab (NumTab);
if (ICanViewTab || NumTab > TabCrs) // Don't show the first hidden tabs
{
if (NumTabVisible % Cfg_LAYOUT_MOBILE_NUM_COLUMNS == 0)
fprintf (Gbl.F.Out,"<tr>");
/* Icon at top and text at bottom */
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:25%%;\">");
if (ICanViewTab)
{
fprintf (Gbl.F.Out,"<div class=\"ICON_HIGHLIGHT\">");
Act_FormStart (ActMnu);
Par_PutHiddenParamUnsigned ("NxtTab",(unsigned) NumTab);
Act_LinkFormSubmit (Txt_TABS_FULL_TXT[NumTab],The_ClassMenuOff[Gbl.Prefs.Theme]);
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/%s/%s64x64.gif\""
" alt=\"%s\" title=\"%s\" class=\"ICON64x64\""
" style=\"margin:5px;\" />"
"<div>%s</div>"
"</a>",
Gbl.Prefs.PathIconSet,Cfg_ICON_ACTION,
Tab_TabIcons[NumTab],
Txt_TABS_FULL_TXT[NumTab],
Txt_TABS_FULL_TXT[NumTab],
Txt_TABS_FULL_TXT[NumTab]);
Act_FormEnd ();
fprintf (Gbl.F.Out,"</div>");
}
else
fprintf (Gbl.F.Out,"<div class=\"ICON_HIDDEN\">"
"<img src=\"%s/%s/%s64x64.gif\""
" alt=\"%s\" title=\"%s\""
" class=\"ICON64x64\" style=\"margin:5px;\" />"
"<div class=\"%s\">%s</div>"
"</div>",
Gbl.Prefs.PathIconSet,
Cfg_ICON_ACTION,
Tab_TabIcons[NumTab],
Txt_TABS_FULL_TXT[NumTab],
Txt_TABS_FULL_TXT[NumTab],
The_ClassMenuOff[Gbl.Prefs.Theme],
Txt_TABS_FULL_TXT[NumTab]);
fprintf (Gbl.F.Out,"</td>");
if ((NumTabVisible % Cfg_LAYOUT_MOBILE_NUM_COLUMNS) == (Cfg_LAYOUT_MOBILE_NUM_COLUMNS-1))
fprintf (Gbl.F.Out,"</tr>");
NumTabVisible++;
}
}
/***** End of the table *****/
fprintf (Gbl.F.Out,"</table>");
}
/*****************************************************************************/
/************************* Check if I can view a tab *************************/
/*****************************************************************************/

View File

@ -42,7 +42,6 @@
/*****************************************************************************/
void Tab_DrawTabsDeskTop (void);
void Tab_DrawTabsMobile (void);
void Tab_DrawBreadcrumb (void);
void Tab_SetCurrentTab (void);

View File

@ -15257,70 +15257,6 @@ const char *Txt_Last_BR_year = // "Last academic year", the opposite to "First a
"Last<br />year"; // Necessita de tradução
#endif
const char *Txt_Layout =
#if L==0
"Disseny";
#elif L==1
"Layout";
#elif L==2
"Layout";
#elif L==3
"Dise&ntilde;o";
#elif L==4
"Disposition";
#elif L==5
"Ta'&atilde;ngahai";
#elif L==6
"Layout";
#elif L==7
"Uk&lstrok;ad";
#elif L==8
"Layout";
#endif
const char *Txt_LAYOUT_NAMES[Lay_NUM_LAYOUTS] =
{
#if L==0
"Pantalla grande" // Necessita traduccio
#elif L==1
"Desktop" // Need Übersetzung
#elif L==2
"Desktop"
#elif L==3
"Pantalla grande"
#elif L==4
"Desktop" // Besoin de traduction
#elif L==5
"Pantalla grande" // Okoteve traducción
#elif L==6
"Desktop"
#elif L==7
"Pulpit"
#elif L==8
"Desktop" // Necessita de tradução
#endif
,
#if L==0
"M&oacute;vil" // Necessita traduccio
#elif L==1
"Mobile" // Need Übersetzung
#elif L==2
"Mobile"
#elif L==3
"M&oacute;vil"
#elif L==4
"Mobile" // Besoin de traduction
#elif L==5
"M&oacute;vil" // Okoteve traducción
#elif L==6
"Cellulare"
#elif L==7
"Komorka"
#elif L==8
"Mobile" // Necessita de tradução
#endif
};
const char *Txt_LAYOUT_SIDE_COLUMNS[4] =
{
#if L==0
@ -36735,26 +36671,6 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_FIGURES] =
"Calend&aacute;rio"
#endif
,
#if L==0 // Sta_LAYOUTS
"Disseny"
#elif L==1
"layout"
#elif L==2
"Layout"
#elif L==3
"Dise&ntilde;o"
#elif L==4
"Disposition"
#elif L==5
"Ta'&atilde;ngahai"
#elif L==6
"Layout"
#elif L==7
"Uk&lstrok;ad"
#elif L==8
"Layout"
#endif
,
#if L==0 // Sta_THEMES
"Tema (colors)"
#elif L==1

View File

@ -41,7 +41,6 @@
/*****************************************************************************/
extern struct Globals Gbl;
const char *Lay_LayoutIcons[Lay_NUM_LAYOUTS];
/*****************************************************************************/
/******************************** Private constants **************************/

View File

@ -274,7 +274,6 @@ void Usr_ResetUsrDataExceptUsrCodAndIDs (struct UsrData *UsrDat)
UsrDat->Prefs.Language = Cfg_DEFAULT_LANGUAGE_FOR_NEW_USERS;
UsrDat->Prefs.FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT; // Default first day of week
UsrDat->Prefs.Layout = Lay_LAYOUT_DEFAULT;
UsrDat->Prefs.Theme = The_THEME_DEFAULT;
UsrDat->Prefs.IconSet = Ico_ICON_SET_DEFAULT;
UsrDat->Prefs.Menu = Mnu_MENU_DEFAULT;
@ -403,7 +402,7 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
/***** Get user's data from database *****/
sprintf (Query,"SELECT EncryptedUsrCod,Password,Surname1,Surname2,FirstName,Sex,"
"Layout,Theme,IconSet,Language,FirstDayOfWeek,Photo,PhotoVisibility,ProfileVisibility,"
"Theme,IconSet,Language,FirstDayOfWeek,Photo,PhotoVisibility,ProfileVisibility,"
"CtyCod,InsCtyCod,InsCod,DptCod,CtrCod,Office,OfficePhone,"
"LocalAddress,LocalPhone,FamilyAddress,FamilyPhone,OriginPlace,Birthday,Comments,"
"Menu,SideCols,NotifNtfEvents,EmailNtfEvents"
@ -445,18 +444,12 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
/* Get sex */
UsrDat->Sex = Usr_GetSexFromStr (row[5]);
/* Get layout */
UsrDat->Prefs.Layout = Lay_LAYOUT_DEFAULT;
if (sscanf (row[6],"%u",&UnsignedNum) == 1)
if (UnsignedNum < Lay_NUM_LAYOUTS)
UsrDat->Prefs.Layout = (Lay_Layout_t) UnsignedNum;
/* Get theme */
UsrDat->Prefs.Theme = The_THEME_DEFAULT;
for (Theme = (The_Theme_t) 0;
Theme < The_NUM_THEMES;
Theme++)
if (!strcasecmp (row[7],The_ThemeId[Theme]))
if (!strcasecmp (row[6],The_ThemeId[Theme]))
{
UsrDat->Prefs.Theme = Theme;
break;
@ -467,7 +460,7 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
for (IconSet = (Ico_IconSet_t) 0;
IconSet < Ico_NUM_ICON_SETS;
IconSet++)
if (!strcasecmp (row[8],Ico_IconSetId[IconSet]))
if (!strcasecmp (row[7],Ico_IconSetId[IconSet]))
{
UsrDat->Prefs.IconSet = IconSet;
break;
@ -478,7 +471,7 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
for (Lan = (Txt_Language_t) 0;
Lan < Txt_NUM_LANGUAGES;
Lan++)
if (!strcasecmp (row[9],Txt_STR_LANG_ID[Lan]))
if (!strcasecmp (row[8],Txt_STR_LANG_ID[Lan]))
{
UsrDat->Prefs.Language = Lan;
break;
@ -486,51 +479,51 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
/* Get first day of week */
UsrDat->Prefs.FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT;
if (sscanf (row[10],"%u",&UnsignedNum) == 1)
if (sscanf (row[9],"%u",&UnsignedNum) == 1)
if (Cal_DayIsValidAsFirstDayOfWeek[UnsignedNum])
UsrDat->Prefs.FirstDayOfWeek = UnsignedNum;
/* Get rest of data */
strncpy (UsrDat->Photo,row[11],sizeof (UsrDat->Photo) - 1);
strncpy (UsrDat->Photo,row[10],sizeof (UsrDat->Photo) - 1);
UsrDat->Photo[sizeof (UsrDat->Photo) - 1] = '\0';
UsrDat->PhotoVisibility = Pri_GetVisibilityFromStr (row[12]);
UsrDat->ProfileVisibility = Pri_GetVisibilityFromStr (row[13]);
UsrDat->CtyCod = Str_ConvertStrCodToLongCod (row[14]);
UsrDat->InsCtyCod = Str_ConvertStrCodToLongCod (row[15]);
UsrDat->InsCod = Str_ConvertStrCodToLongCod (row[16]);
UsrDat->PhotoVisibility = Pri_GetVisibilityFromStr (row[11]);
UsrDat->ProfileVisibility = Pri_GetVisibilityFromStr (row[12]);
UsrDat->CtyCod = Str_ConvertStrCodToLongCod (row[13]);
UsrDat->InsCtyCod = Str_ConvertStrCodToLongCod (row[14]);
UsrDat->InsCod = Str_ConvertStrCodToLongCod (row[15]);
UsrDat->Tch.DptCod = Str_ConvertStrCodToLongCod (row[17]);
UsrDat->Tch.CtrCod = Str_ConvertStrCodToLongCod (row[18]);
strncpy (UsrDat->Tch.Office ,row[19],sizeof (UsrDat->Tch.Office ) - 1);
UsrDat->Tch.DptCod = Str_ConvertStrCodToLongCod (row[16]);
UsrDat->Tch.CtrCod = Str_ConvertStrCodToLongCod (row[17]);
strncpy (UsrDat->Tch.Office ,row[18],sizeof (UsrDat->Tch.Office ) - 1);
UsrDat->Tch.Office [sizeof (UsrDat->Tch.Office ) - 1] = '\0';
strncpy (UsrDat->Tch.OfficePhone,row[20],sizeof (UsrDat->Tch.OfficePhone) - 1);
strncpy (UsrDat->Tch.OfficePhone,row[19],sizeof (UsrDat->Tch.OfficePhone) - 1);
UsrDat->Tch.OfficePhone[sizeof (UsrDat->Tch.OfficePhone) - 1] = '\0';
strncpy (UsrDat->LocalAddress ,row[21],sizeof (UsrDat->LocalAddress ) - 1);
strncpy (UsrDat->LocalAddress ,row[20],sizeof (UsrDat->LocalAddress ) - 1);
UsrDat->LocalAddress [sizeof (UsrDat->LocalAddress ) - 1] = '\0';
strncpy (UsrDat->LocalPhone ,row[22],sizeof (UsrDat->LocalPhone ) - 1);
strncpy (UsrDat->LocalPhone ,row[21],sizeof (UsrDat->LocalPhone ) - 1);
UsrDat->LocalPhone [sizeof (UsrDat->LocalPhone ) - 1] = '\0';
strncpy (UsrDat->FamilyAddress,row[23],sizeof (UsrDat->FamilyAddress) - 1);
strncpy (UsrDat->FamilyAddress,row[22],sizeof (UsrDat->FamilyAddress) - 1);
UsrDat->FamilyAddress[sizeof (UsrDat->FamilyAddress) - 1] = '\0';
strncpy (UsrDat->FamilyPhone ,row[24],sizeof (UsrDat->FamilyPhone ) - 1);
strncpy (UsrDat->FamilyPhone ,row[23],sizeof (UsrDat->FamilyPhone ) - 1);
UsrDat->FamilyPhone [sizeof (UsrDat->FamilyPhone ) - 1] = '\0';
strncpy (UsrDat->OriginPlace ,row[25],sizeof (UsrDat->OriginPlace ) - 1);
strncpy (UsrDat->OriginPlace ,row[24],sizeof (UsrDat->OriginPlace ) - 1);
UsrDat->OriginPlace [sizeof (UsrDat->OriginPlace ) - 1] = '\0';
strcpy (StrBirthday,
row[26] ? row[26] :
row[25] ? row[25] :
"0000-00-00");
Usr_GetUsrCommentsFromString (row[27] ? row[27] :
Usr_GetUsrCommentsFromString (row[26] ? row[26] :
"",
UsrDat); // Get the comments comunes a todas the courses
/* Get menu */
UsrDat->Prefs.Menu = Mnu_MENU_DEFAULT;
if (sscanf (row[28],"%u",&UnsignedNum) == 1)
if (sscanf (row[27],"%u",&UnsignedNum) == 1)
if (UnsignedNum < Mnu_NUM_MENUS)
UsrDat->Prefs.Menu = (Mnu_Menu_t) UnsignedNum;
/* Get if user wants to show side columns */
if (sscanf (row[29],"%u",&UsrDat->Prefs.SideCols) == 1)
if (sscanf (row[28],"%u",&UsrDat->Prefs.SideCols) == 1)
{
if (UsrDat->Prefs.SideCols > Lay_SHOW_BOTH_COLUMNS)
UsrDat->Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
@ -539,11 +532,11 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
UsrDat->Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
/* Get on which events I want to be notified inside the platform */
if (sscanf (row[30],"%u",&UsrDat->Prefs.NotifNtfEvents) != 1)
if (sscanf (row[29],"%u",&UsrDat->Prefs.NotifNtfEvents) != 1)
UsrDat->Prefs.NotifNtfEvents = (unsigned) -1; // 0xFF..FF
/* Get on which events I want to be notified by e-mail */
if (sscanf (row[31],"%u",&UsrDat->Prefs.EmailNtfEvents) != 1)
if (sscanf (row[30],"%u",&UsrDat->Prefs.EmailNtfEvents) != 1)
UsrDat->Prefs.EmailNtfEvents = 0;
if (UsrDat->Prefs.EmailNtfEvents >= (1 << Ntf_NUM_NOTIFY_EVENTS)) // Maximum binary value for NotifyEvents is 000...0011...11
UsrDat->Prefs.EmailNtfEvents = 0;
@ -1633,11 +1626,6 @@ void Usr_WriteLoggedUsrHead (void)
extern const char *The_ClassUsr[The_NUM_THEMES];
extern const char *The_ClassHead[The_NUM_THEMES];
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
static const unsigned NumCharsName[Lay_NUM_LAYOUTS] =
{
12, // Lay_LAYOUT_DESKTOP
10, // Lay_LAYOUT_MOBILE
};
bool ShowPhoto;
char PhotoURL[PATH_MAX+1];
char UsrName[Usr_MAX_BYTES_NAME+1];
@ -1668,7 +1656,7 @@ void Usr_WriteLoggedUsrHead (void)
if (Gbl.Usrs.Me.UsrDat.FullName[0])
{
strcpy (UsrName,Gbl.Usrs.Me.UsrDat.FirstName);
Str_LimitLengthHTMLStr (UsrName,NumCharsName[Gbl.Prefs.Layout]);
Str_LimitLengthHTMLStr (UsrName,12);
fprintf (Gbl.F.Out,"%s",UsrName);
}
@ -1984,8 +1972,7 @@ void Usr_ChkUsrAndGetUsrData (void)
Act_AdjustActionWhenNoUsrLogged ();
/***** When I change to another tab, go to the first option allowed *****/
if (Gbl.CurrentAct == ActMnu &&
Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP)
if (Gbl.CurrentAct == ActMnu)
{
if (Gbl.Usrs.Me.Logged)
{
@ -2375,11 +2362,8 @@ static void Usr_SetUsrRoleAndPrefs (void)
/***** Set preferences from my preferences *****/
Gbl.Prefs.FirstDayOfWeek = Gbl.Usrs.Me.UsrDat.Prefs.FirstDayOfWeek;
Gbl.Prefs.Layout = Gbl.Usrs.Me.UsrDat.Prefs.Layout;
// TODO: Should layout depend on session instead of user prefs?
// (for example, one user with two sessions with different layouts)
Gbl.Prefs.Menu = Gbl.Usrs.Me.UsrDat.Prefs.Menu;
Gbl.Prefs.SideCols = Gbl.Usrs.Me.UsrDat.Prefs.SideCols;
Gbl.Prefs.Menu = Gbl.Usrs.Me.UsrDat.Prefs.Menu;
Gbl.Prefs.SideCols = Gbl.Usrs.Me.UsrDat.Prefs.SideCols;
Gbl.Prefs.Theme = Gbl.Usrs.Me.UsrDat.Prefs.Theme;
sprintf (Gbl.Prefs.PathTheme,"%s/%s/%s",

View File

@ -152,7 +152,6 @@ struct UsrData
{
Txt_Language_t Language;
unsigned FirstDayOfWeek;
Lay_Layout_t Layout;
The_Theme_t Theme;
Ico_IconSet_t IconSet;
Mnu_Menu_t Menu;