Version 14.51

This commit is contained in:
Antonio Cañas Vargas 2015-01-02 01:19:27 +01:00
parent 2bda10d434
commit f4d8a97900
19 changed files with 197 additions and 90 deletions

View File

@ -36,7 +36,7 @@ OBJS = swad_account.o swad_action.o swad_announcement.o swad_assignment.o swad_a
swad_holiday.o \
swad_icon.o swad_ID.o swad_import.o swad_indicator.o swad_info.o swad_institution.o \
swad_layout.o swad_link.o \
swad_mail.o swad_main.o swad_mark.o swad_message.o \
swad_mail.o swad_main.o swad_mark.o swad_menu.o swad_message.o \
swad_network.o swad_nickname.o swad_notice.o swad_notification.o \
swad_pagination.o swad_parameter.o swad_password.o swad_photo.o swad_place.o swad_plugin.o swad_preference.o \
swad_QR.o \

View File

@ -658,15 +658,15 @@ a:hover img.CENTRE_PHOTO_SHOW
}
/********************************* Menu fonts ********************************/
.WHITE_MENU_OFF {color:#4D88A1; font-size:11pt; font-weight:bold; line-height:110%;}
.GREY_MENU_OFF {color:#707070; font-size:11pt; font-weight:bold; line-height:110%;}
.BLUE_MENU_OFF {color:#4D88A1; font-size:11pt; font-weight:bold; line-height:110%;}
.YELLOW_MENU_OFF {color:#BD4815; font-size:11pt; font-weight:bold; line-height:110%;}
.WHITE_MENU_OFF {color:#4D88A1; font-size:10pt; font-weight:bold; line-height:110%;}
.GREY_MENU_OFF {color:#707070; font-size:10pt; font-weight:bold; line-height:110%;}
.BLUE_MENU_OFF {color:#4D88A1; font-size:10pt; font-weight:bold; line-height:110%;}
.YELLOW_MENU_OFF {color:#BD4815; font-size:10pt; font-weight:bold; line-height:110%;}
.WHITE_MENU_ON {color:#4D88A1; font-size:11pt; font-weight:bold; line-height:110%;}
.GREY_MENU_ON {color:#606060; font-size:11pt; font-weight:bold; line-height:110%;}
.BLUE_MENU_ON {color:#4D88A1; font-size:11pt; font-weight:bold; line-height:110%;}
.YELLOW_MENU_ON {color:#BD4815; font-size:11pt; font-weight:bold; line-height:110%;}
.WHITE_MENU_ON {color:#4D88A1; font-size:10pt; font-weight:bold; line-height:110%;}
.GREY_MENU_ON {color:#606060; font-size:10pt; font-weight:bold; line-height:110%;}
.BLUE_MENU_ON {color:#4D88A1; font-size:10pt; font-weight:bold; line-height:110%;}
.YELLOW_MENU_ON {color:#BD4815; font-size:10pt; font-weight:bold; line-height:110%;}
/********************************* Form fonts ********************************/
.WHITE_FORM {color:#4D88A1; font-size:11pt;}

BIN
icon/horizontal32x32.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

BIN
icon/vertical32x32.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

View File

@ -10441,4 +10441,12 @@ INSERT INTO announcements (Roles,Subject,Content) VALUES ('16','ENCUESTA AN&Oacu
SELECT tst_questions.QstCod,tst_questions.AnsType,tst_questions.Shuffle,tst_questions.Stem,tst_questions.Feedback FROM tst_questions,tst_question_tags,tst_tags WHERE tst_questions.CrsCod='5432' AND tst_questions.QstCod NOT IN (SELECT tst_question_tags.QstCod FROM tst_tags,tst_question_tags WHERE tst_tags.CrsCod='5432' AND tst_tags.TagHidden='Y' AND tst_tags.TagCod=tst_question_tags.TagCod) AND tst_questions.QstCod=tst_question_tags.QstCod AND tst_question_tags.TagCod=tst_tags.TagCod AND tst_tags.CrsCod='5432' AND (UNIX_TIMESTAMP(tst_questions.EditTime)>='0' OR UNIX_TIMESTAMP(tst_tags.ChangeTime)>='0') ORDER BY QstCod;
----- 2015-01-01, swad14.51
ALTER TABLE usr_data ADD COLUMN Menu TINYINT NOT NULL DEFAULT 0 AFTER Comments;
ALTER TABLE usr_data ADD INDEX (Menu);
UPDATE usr_data SET Menu=1;
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1243','es','N','Cambiar menú');
ALTER TABLE IP_prefs ADD COLUMN Menu TINYINT NOT NULL DEFAULT 0 AFTER IconSet;

View File

@ -18,6 +18,7 @@ CREATE TABLE IF NOT EXISTS IP_prefs (
Layout TINYINT NOT NULL DEFAULT 0,
Theme CHAR(16) NOT NULL,
IconSet CHAR(16) NOT NULL,
Menu TINYINT NOT NULL DEFAULT 0,
SideCols TINYINT NOT NULL,
PRIMARY KEY(IP),
INDEX(UsrCod),
@ -1137,6 +1138,7 @@ CREATE TABLE IF NOT EXISTS usr_data (
OriginPlace VARCHAR(127) NOT NULL,
Birthday DATE NOT NULL,
Comments TEXT NOT NULL,
Menu TINYINT NOT NULL DEFAULT 0,
SideCols TINYINT NOT NULL DEFAULT 3,
NotifNtfEvents INT NOT NULL DEFAULT 0,
EmailNtfEvents INT NOT NULL DEFAULT 0,
@ -1146,12 +1148,14 @@ CREATE TABLE IF NOT EXISTS usr_data (
INDEX(Theme),
INDEX(IconSet),
INDEX(Language),
INDEX(SideCols),
INDEX(CtyCod),
INDEX(InsCtyCod),
INDEX(InsCod),
INDEX(DptCod),
INDEX(CtrCod));
INDEX(CtrCod),
INDEX(Menu),
INDEX(SideCols));
);
--
-- Table usr_emails: stores the users' e-mails
--

View File

@ -434,12 +434,12 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat)
"Layout,Theme,IconSet,Language,PublicPhoto,"
"CtyCod,"
"LocalAddress,LocalPhone,FamilyAddress,FamilyPhone,OriginPlace,Birthday,Comments,"
"SideCols,NotifNtfEvents,EmailNtfEvents)"
"Menu,SideCols,NotifNtfEvents,EmailNtfEvents)"
" VALUES ('%s','%s','%s','%s','%s','%s',"
"'%u','%s','%s','%s','%c',"
"'%ld',"
"'%s','%s','%s','%s','%s','%04u-%02u-%02u','%s',"
"'%u','-1','0')",
"'%u','%u','-1','0')",
UsrDat->EncryptedUsrCod,
UsrDat->Password,
UsrDat->Surname1,UsrDat->Surname2,UsrDat->FirstName,
@ -457,6 +457,7 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat)
UsrDat->Birthday.Year,UsrDat->Birthday.Month,UsrDat->Birthday.Day,
UsrDat->Comments ? UsrDat->Comments :
"",
Mnu_MENU_DEFAULT,
Cfg_DEFAULT_COLUMNS);
UsrDat->UsrCod = DB_QueryINSERTandReturnCode (Query,"can not create user");

View File

@ -1021,6 +1021,7 @@ Profile:
875. ActShoLftCol Show left side column
876. ActShoRgtCol Show right side column
877. ActChgIco Change icon set
---. ActChgMnu Change menu
879. ActChgNtfPrf Change whether to notify by e-mail new messages
880. ActPrnUsrQR Show my QR code ready to print
881. ActPrnMyTimTbl Show the timetable listo to impresión of all my courses
@ -2243,6 +2244,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActShoLftCol */{ 670,-1,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Prf_ShowLeftCol ,Prf_EditPrefs ,NULL},
/* ActShoRgtCol */{ 671,-1,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Prf_ShowRightCol ,Prf_EditPrefs ,NULL},
/* ActChgIco */{1092,-1,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Ico_ChangeIconSet ,Prf_EditPrefs ,NULL},
/* ActChgMnu */{1243,-1,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Mnu_ChangeMenu ,Prf_EditPrefs ,NULL},
/* ActChgNtfPrf */{ 775,-1,TabPrf,ActEdiPrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Ntf_ChangeNotifyEvents ,Prf_EditPrefs ,NULL},
/* ActPrnUsrQR */{1022,-1,TabPrf,ActFrmUsrAcc ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_NEW_WINDOW ,NULL ,QR_PrintQRCode ,NULL},
@ -3516,6 +3518,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
ActRemIDOth, // #1240
ActNewIDOth, // #1241
ActSeeSyl, // #1242
ActChgMnu, // #1243
};
/*****************************************************************************/

View File

@ -71,9 +71,9 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
/* Related with tabs, menus, etc. */
#define Act_NUM_TABS (1+11)
#define Act_NUM_ACTIONS (7+52+15+39+22+17+206+182+94+168+28+74)
#define Act_NUM_ACTIONS (7+52+15+39+22+17+206+182+94+168+28+75)
#define Act_MAX_ACTION_COD 1242
#define Act_MAX_ACTION_COD 1243
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
@ -1088,31 +1088,32 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
#define ActShoLftCol (ActSeeAllStaCrs+49)
#define ActShoRgtCol (ActSeeAllStaCrs+50)
#define ActChgIco (ActSeeAllStaCrs+51)
#define ActChgNtfPrf (ActSeeAllStaCrs+52)
#define ActChgMnu (ActSeeAllStaCrs+52)
#define ActChgNtfPrf (ActSeeAllStaCrs+53)
#define ActPrnUsrQR (ActSeeAllStaCrs+53)
#define ActPrnUsrQR (ActSeeAllStaCrs+54)
#define ActPrnMyTimTbl (ActSeeAllStaCrs+54)
#define ActEdiTut (ActSeeAllStaCrs+55)
#define ActChgTut (ActSeeAllStaCrs+56)
#define ActReqRemFilBrf (ActSeeAllStaCrs+57)
#define ActRemFilBrf (ActSeeAllStaCrs+58)
#define ActRemFolBrf (ActSeeAllStaCrs+59)
#define ActCopBrf (ActSeeAllStaCrs+60)
#define ActPasBrf (ActSeeAllStaCrs+61)
#define ActRemTreBrf (ActSeeAllStaCrs+62)
#define ActFrmCreBrf (ActSeeAllStaCrs+63)
#define ActCreFolBrf (ActSeeAllStaCrs+64)
#define ActCreLnkBrf (ActSeeAllStaCrs+65)
#define ActRenFolBrf (ActSeeAllStaCrs+66)
#define ActRcvFilBrfDZ (ActSeeAllStaCrs+67)
#define ActRcvFilBrfCla (ActSeeAllStaCrs+68)
#define ActExpBrf (ActSeeAllStaCrs+69)
#define ActConBrf (ActSeeAllStaCrs+70)
#define ActZIPBrf (ActSeeAllStaCrs+71)
#define ActReqDatBrf (ActSeeAllStaCrs+72)
#define ActChgDatBrf (ActSeeAllStaCrs+73)
#define ActDowBrf (ActSeeAllStaCrs+74)
#define ActPrnMyTimTbl (ActSeeAllStaCrs+55)
#define ActEdiTut (ActSeeAllStaCrs+56)
#define ActChgTut (ActSeeAllStaCrs+57)
#define ActReqRemFilBrf (ActSeeAllStaCrs+58)
#define ActRemFilBrf (ActSeeAllStaCrs+59)
#define ActRemFolBrf (ActSeeAllStaCrs+60)
#define ActCopBrf (ActSeeAllStaCrs+61)
#define ActPasBrf (ActSeeAllStaCrs+62)
#define ActRemTreBrf (ActSeeAllStaCrs+63)
#define ActFrmCreBrf (ActSeeAllStaCrs+64)
#define ActCreFolBrf (ActSeeAllStaCrs+65)
#define ActCreLnkBrf (ActSeeAllStaCrs+66)
#define ActRenFolBrf (ActSeeAllStaCrs+67)
#define ActRcvFilBrfDZ (ActSeeAllStaCrs+68)
#define ActRcvFilBrfCla (ActSeeAllStaCrs+69)
#define ActExpBrf (ActSeeAllStaCrs+70)
#define ActConBrf (ActSeeAllStaCrs+71)
#define ActZIPBrf (ActSeeAllStaCrs+72)
#define ActReqDatBrf (ActSeeAllStaCrs+73)
#define ActChgDatBrf (ActSeeAllStaCrs+74)
#define ActDowBrf (ActSeeAllStaCrs+75)
/*****************************************************************************/
/******************************** Public types *******************************/

View File

@ -35,11 +35,20 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 14.50.4 (2015/01/01)"
#define Log_PLATFORM_VERSION "SWAD 14.51 (2015/01/01)"
// 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.51 :Jan 01, 2014 Users can select horizontal or vertical menu. (172958 lines)
1 change necessary in Makefile:
Add swad_menu.o to list of object files
4 changes necessary in database:
ALTER TABLE usr_data ADD COLUMN Menu TINYINT NOT NULL DEFAULT 0 AFTER Comments;
ALTER TABLE usr_data ADD INDEX (Menu);
UPDATE usr_data SET Menu=1;
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1243','es','N','Cambiar menú');
Version 14.50.4 :Jan 01, 2014 Changes in preferences and photos. (172705 lines)
Version 14.50.3 :Jan 01, 2014 Changes in layout of preferences. (172691 lines)
Version 14.50.2 :Jan 01, 2014 Changes in CSS. (172739 lines)

View File

@ -113,9 +113,10 @@ mysql> DESCRIBE IP_prefs;
| 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 | |
+------------+------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
8 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS IP_prefs ("
"IP CHAR(15) NOT NULL,"
@ -124,6 +125,7 @@ mysql> DESCRIBE IP_prefs;
"Layout TINYINT NOT NULL DEFAULT 0,"
"Theme CHAR(16) NOT NULL,"
"IconSet CHAR(16) NOT NULL,"
"Menu TINYINT NOT NULL DEFAULT 0,"
"SideCols TINYINT NOT NULL,"
"PRIMARY KEY (IP),INDEX(UsrCod),INDEX(LastChange))");
@ -2280,11 +2282,12 @@ mysql> DESCRIBE usr_data;
| OriginPlace | varchar(127) | NO | | NULL | |
| Birthday | date | NO | | NULL | |
| Comments | text | NO | | NULL | |
| Menu | tinyint(4) | NO | MUL | 0 | |
| SideCols | tinyint(4) | NO | MUL | 3 | |
| NotifNtfEvents | int(11) | NO | | 0 | |
| EmailNtfEvents | int(11) | NO | | 0 | |
+-----------------+---------------------------------+------+-----+---------+----------------+
33 rows in set (0.00 sec)
34 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS usr_data ("
"UsrCod INT NOT NULL AUTO_INCREMENT,"
@ -2317,10 +2320,11 @@ mysql> DESCRIBE usr_data;
"OriginPlace VARCHAR(127) NOT NULL,"
"Birthday DATE NOT NULL,"
"Comments TEXT NOT NULL,"
"Menu TINYINT NOT NULL DEFAULT 0,"
"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(SideCols),INDEX(CtyCod),INDEX(InsCtyCod),INDEX(InsCod),INDEX(DptCod),INDEX(CtrCod))");
"PRIMARY KEY(UsrCod),UNIQUE INDEX(EncryptedUsrCod),INDEX(Layout),INDEX(Theme),INDEX(IconSet),INDEX(Language),INDEX(CtyCod),INDEX(InsCtyCod),INDEX(InsCod),INDEX(DptCod),INDEX(CtrCod),INDEX(Menu),INDEX(SideCols))");
/***** Table usr_emails *****/
/*

View File

@ -130,6 +130,7 @@ void Gbl_InitializeGlobals (void)
sprintf (Gbl.Prefs.IconsURL,"%s/%s",
Cfg_HTTPS_URL_SWAD_PUBLIC,Cfg_FOLDER_PUBLIC_ICON);
Gbl.Prefs.Language = Txt_Current_CGI_SWAD_Language;
Gbl.Prefs.Menu = Mnu_MENU_DEFAULT; // Default menu
Gbl.Prefs.SideCols = Cfg_DEFAULT_COLUMNS; // Show both side columns, left and right
sprintf (Gbl.Prefs.PathTheme,"%s/%s/%s",
Gbl.Prefs.IconsURL,

View File

@ -51,9 +51,10 @@
#include "swad_institution.h"
#include "swad_layout.h"
#include "swad_link.h"
#include "swad_message.h"
#include "swad_mail.h"
#include "swad_mark.h"
#include "swad_message.h"
#include "swad_menu.h"
#include "swad_password.h"
#include "swad_photo.h"
#include "swad_place.h"
@ -136,6 +137,7 @@ struct Globals
Ico_IconSet_t IconSet;
char PathIconSet[PATH_MAX+1];
char IconsURL[PATH_MAX+1];
Mnu_Menu_t Menu;
} Prefs;
struct

View File

@ -63,8 +63,6 @@ const char *Lay_LayoutIcons[Lay_NUM_LAYOUTS] =
/****************************** Private constants ****************************/
/*****************************************************************************/
#define HORIZONTAL_MENU 1
const char *Lay_TabIcons[Act_NUM_TABS] =
{
/* TabUnk */ NULL,
@ -109,20 +107,14 @@ static void Lay_DrawTabsDeskTop (void);
static void Lay_DrawTabsMobile (void);
static bool Lay_CheckIfICanViewTab (Act_Tab_t Tab);
static void Lay_DrawBreadcrumb (void);
#ifndef HORIZONTAL_MENU
static void Lay_WriteVerticalMenuThisTabDesktop (void);
#endif
#ifdef HORIZONTAL_MENU
static void Lay_WriteHorizontalMenuThisTabDesktop (void);
#endif
static void Lay_WriteMenuThisTabMobile (void);
static void Lay_WriteBreadcrumbHome (void);
static void Lay_WriteBreadcrumbTab (void);
static void Lay_WriteBreadcrumbAction (void);
#ifndef HORIZONTAL_MENU
static void Lay_WriteTitleAction (void);
#endif
static void Lay_ShowLeftColumn (void);
static void Lay_ShowRightColumn (void);
@ -304,14 +296,14 @@ void Lay_WriteStartOfPage (void)
Prf_PutLeftIconToHideShowCols ();
fprintf (Gbl.F.Out,"</td>");
#ifndef HORIZONTAL_MENU
/* Tab content, including always vertical menu (left) and always main zone (right) */
fprintf (Gbl.F.Out,"<td style=\"width:140px; text-align:left;"
" vertical-align:top;\">");
Lay_WriteVerticalMenuThisTabDesktop ();
fprintf (Gbl.F.Out,"</td>");
#endif
if (Gbl.Prefs.Menu == Mnu_MENU_VERTICAL)
{
/* Tab content, including vertical menu (left) and main zone (right) */
fprintf (Gbl.F.Out,"<td style=\"width:140px; text-align:left;"
" vertical-align:top;\">");
Lay_WriteVerticalMenuThisTabDesktop ();
fprintf (Gbl.F.Out,"</td>");
}
break;
case Lay_LAYOUT_MOBILE:
/* Tab content */
@ -335,10 +327,9 @@ void Lay_WriteStartOfPage (void)
fprintf (Gbl.F.Out,"<td style=\"padding:0 10px 10px 10px;"
" text-align:left; vertical-align:top;\">");
#ifdef HORIZONTAL_MENU
if (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP)
if (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP &&
Gbl.Prefs.Menu == Mnu_MENU_HORIZONTAL)
Lay_WriteHorizontalMenuThisTabDesktop ();
#endif
Usr_WarningWhenDegreeTypeDoesntAllowDirectLogin ();
@ -346,12 +337,11 @@ void Lay_WriteStartOfPage (void)
if (Gbl.CurrentCrs.Info.ShowMsgMustBeRead)
Inf_WriteMsgYouMustReadInfo ();
#ifndef HORIZONTAL_MENU
/* Write title of the current action */
if (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP &&
Act_Actions[Act_Actions[Gbl.CurrentAct].SuperAction].IndexInMenu >= 0)
Gbl.Prefs.Menu == Mnu_MENU_VERTICAL &&
Act_Actions[Act_Actions[Gbl.CurrentAct].SuperAction].IndexInMenu >= 0)
Lay_WriteTitleAction ();
#endif
Gbl.Layout.WritingHTMLStart = false;
Gbl.Layout.HTMLStartWritten = true;
@ -1132,7 +1122,6 @@ static void Lay_DrawBreadcrumb (void)
/************* Write the menu of current tab (desktop layout) ****************/
/*****************************************************************************/
#ifndef HORIZONTAL_MENU
static void Lay_WriteVerticalMenuThisTabDesktop (void)
{
extern const char *The_ClassMenuOn[The_NUM_THEMES];
@ -1220,13 +1209,11 @@ static void Lay_WriteVerticalMenuThisTabDesktop (void)
/***** List end *****/
fprintf (Gbl.F.Out,"</ul>");
}
#endif
/*****************************************************************************/
/********** Write horizontal menu of current tab (desktop layout) ************/
/*****************************************************************************/
#ifdef HORIZONTAL_MENU
static void Lay_WriteHorizontalMenuThisTabDesktop (void)
{
extern const char *The_ClassMenuOn[The_NUM_THEMES];
@ -1293,7 +1280,6 @@ static void Lay_WriteHorizontalMenuThisTabDesktop (void)
fprintf (Gbl.F.Out,"</ul>"
"</div>");
}
#endif
/*****************************************************************************/
/************* Write the menu of current tab (mobile layout) *****************/
@ -1419,7 +1405,6 @@ static void Lay_WriteBreadcrumbAction (void)
/*********** Write icon and title associated to the current action ***********/
/*****************************************************************************/
#ifndef HORIZONTAL_MENU
static void Lay_WriteTitleAction (void)
{
extern const char *The_ClassTitleAction[The_NUM_THEMES];
@ -1446,7 +1431,6 @@ static void Lay_WriteTitleAction (void)
/***** Container end *****/
fprintf (Gbl.F.Out,"</div>");
}
#endif
/*****************************************************************************/
/***************************** Show left column ******************************/

View File

@ -35,6 +35,7 @@
#include "swad_global.h"
#include "swad_layout.h"
#include "swad_notification.h"
#include "swad_menu.h"
#include "swad_parameter.h"
#include "swad_preference.h"
#include "swad_text.h"
@ -53,6 +54,7 @@ extern struct Globals Gbl;
/****************************** Private prototypes ***************************/
/*****************************************************************************/
static void Prf_PutIconsToSelectSideCols (void);
static void Prf_UpdateSideColsOnUsrDataTable (void);
/*****************************************************************************/
@ -85,11 +87,17 @@ void Prf_EditPrefs (void)
fprintf (Gbl.F.Out,"</td>"
"<td>");
The_PutIconsToSelectTheme ();
fprintf (Gbl.F.Out,"</td>"
"<td>");
Prf_PutIconsToSelectSideCols ();
fprintf (Gbl.F.Out,"</td>"
"</tr>"
fprintf (Gbl.F.Out,"</td>");
if (Gbl.Prefs.Layout == Lay_LAYOUT_DESKTOP)
{
fprintf (Gbl.F.Out,"<td>");
Mnu_PutIconsToSelectMenu ();
fprintf (Gbl.F.Out,"</td>"
"<td>");
Prf_PutIconsToSelectSideCols ();
fprintf (Gbl.F.Out,"</td>");
}
fprintf (Gbl.F.Out,"</tr>"
"</table>");
if (Gbl.Usrs.Me.Logged)
@ -118,7 +126,7 @@ void Prf_GetPrefsFromIP (void)
if (Gbl.IP[0])
{
/***** Get preferences from database *****/
sprintf (Query,"SELECT Layout,Theme,IconSet,SideCols"
sprintf (Query,"SELECT Layout,Theme,IconSet,Menu,SideCols"
" FROM IP_prefs WHERE IP='%s'",
Gbl.IP);
if ((NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get preferences")))
@ -141,8 +149,14 @@ void Prf_GetPrefsFromIP (void)
/* Get icon set (row[2]) */
Gbl.Prefs.IconSet = Ico_GetIconSetFromStr (row[2]);
/* Get if user wants to show side columns (row[3]) */
if (sscanf (row[3],"%u",&Gbl.Prefs.SideCols) == 1)
/* Get menu (row[3]) */
Gbl.Prefs.Menu = Mnu_MENU_DEFAULT;
if (sscanf (row[3],"%u",&UnsignedNum) == 1)
if (UnsignedNum < Mnu_NUM_MENUS)
Gbl.Prefs.Menu = (Lay_Layout_t) UnsignedNum;
/* 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;
@ -164,23 +178,25 @@ void Prf_SetPrefsFromIP (void)
char Query[512];
/***** Update preferences from current IP in database *****/
sprintf (Query,"REPLACE INTO IP_prefs (IP,UsrCod,LastChange,Layout,Theme,IconSet,SideCols)"
" VALUES ('%s','%ld',NOW(),'%u','%s','%s','%u')",
sprintf (Query,"REPLACE INTO IP_prefs (IP,UsrCod,LastChange,Layout,Theme,IconSet,Menu,SideCols)"
" VALUES ('%s','%ld',NOW(),'%u','%s','%s','%u','%u')",
Gbl.IP,Gbl.Usrs.Me.UsrDat.UsrCod,
(unsigned) Gbl.Prefs.Layout,
The_ThemeId[Gbl.Prefs.Theme],
Ico_IconSetId[Gbl.Prefs.IconSet],
(unsigned) Gbl.Prefs.Menu,
Gbl.Prefs.SideCols);
DB_QueryREPLACE (Query,"can not store preferences from current IP address");
/***** 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 Layout='%u',Theme='%s',IconSet='%s',SideCols='%u'"
sprintf (Query,"UPDATE IP_prefs SET Layout='%u',Theme='%s',IconSet='%s',Menu='%u',SideCols='%u'"
" WHERE UsrCod='%ld'",
(unsigned) Gbl.Prefs.Layout,
The_ThemeId[Gbl.Prefs.Theme],
Ico_IconSetId[Gbl.Prefs.IconSet],
(unsigned) Gbl.Prefs.Menu,
Gbl.Prefs.SideCols,
Gbl.Usrs.Me.UsrDat.UsrCod);
DB_QueryUPDATE (Query,"can not update your preferences");
@ -320,7 +336,7 @@ Txt_Language_t Prf_GetParamLanguage (void)
/************ Put icons to select the layout of the side columns *************/
/*****************************************************************************/
void Prf_PutIconsToSelectSideCols (void)
static void Prf_PutIconsToSelectSideCols (void)
{
extern const char *Txt_Columns;
extern const char *Txt_LAYOUT_SIDE_COLUMNS[4];

View File

@ -50,7 +50,6 @@ void Prf_AskChangeLanguage (void);
void Prf_ChangeLanguage (void);
Txt_Language_t Prf_GetParamLanguage (void);
void Prf_PutIconsToSelectSideCols (void);
void Prf_PutLeftIconToHideShowCols (void);
void Prf_PutRigthIconToHideShowCols (void);
void Prf_ChangeSideCols (void);

View File

@ -75,6 +75,7 @@
#include "swad_forum.h"
#include "swad_holiday.h"
#include "swad_info.h"
#include "swad_menu.h"
#include "swad_notification.h"
#include "swad_photo.h"
#include "swad_QR.h"
@ -15515,6 +15516,70 @@ const char *Txt_maximum =
"m&aacute;ximo";
#endif
const char *Txt_Menu =
#if L==0
"Men&uacute;";
#elif L==1
"Men&uuml;";
#elif L==2
"Menu";
#elif L==3
"Men&uacute;";
#elif L==4
"Menu";
#elif L==5
"Men&uacute;"; // Okoteve traducción
#elif L==6
"Menu";
#elif L==7
"Menu";
#elif L==8
"Menu";
#endif
const char *Txt_MENU_NAMES[Mnu_NUM_MENUS] =
{
#if L==0
"Horitzontal"
#elif L==1
"Horizontal"
#elif L==2
"Horizontal"
#elif L==3
"Horizontal"
#elif L==4
"Horizontal"
#elif L==5
"Horizontal" // Okoteve traducción
#elif L==6
"Orizzontale"
#elif L==7
"Poziomy"
#elif L==8
"Horizontal"
#endif
,
#if L==0
"Vertical"
#elif L==1
"Vertikal"
#elif L==2
"Vertical"
#elif L==3
"Vertical"
#elif L==4
"Vertical"
#elif L==5
"Vertical" // Okoteve traducción
#elif L==6
"Verticale"
#elif L==7
"Pionowy"
#elif L==8
"Vertical"
#endif
};
const char *Txt_MENU_TITLE[Act_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
{
{

View File

@ -266,8 +266,9 @@ void Usr_ResetUsrDataExceptUsrCodAndIDs (struct UsrData *UsrDat)
UsrDat->Prefs.Language = Cfg_DEFAULT_LANGUAGE_FOR_NEW_USERS;
UsrDat->Prefs.Layout = Lay_LAYOUT_DEFAULT;
UsrDat->Prefs.Theme = The_THEME_DEFAULT;
UsrDat->Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
UsrDat->Prefs.IconSet = Ico_ICON_SET_DEFAULT;
UsrDat->Prefs.Menu = Mnu_MENU_DEFAULT;
UsrDat->Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
UsrDat->Prefs.EmailNtfEvents = 0; // By default, don't notify anything
}
@ -394,7 +395,7 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
"Layout,Theme,IconSet,Language,Photo,PublicPhoto,"
"CtyCod,InsCtyCod,InsCod,DptCod,CtrCod,Office,OfficePhone,"
"LocalAddress,LocalPhone,FamilyAddress,FamilyPhone,OriginPlace,Birthday,Comments,"
"SideCols,NotifNtfEvents,EmailNtfEvents"
"Menu,SideCols,NotifNtfEvents,EmailNtfEvents"
" FROM usr_data WHERE UsrCod='%ld'",
UsrDat->UsrCod);
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get user's data");
@ -494,8 +495,14 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
"",
UsrDat); // Get the comments comunes a todas the courses
/* Get menu */
UsrDat->Prefs.Menu = Mnu_MENU_DEFAULT;
if (sscanf (row[26],"%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[26],"%u",&UsrDat->Prefs.SideCols) == 1)
if (sscanf (row[27],"%u",&UsrDat->Prefs.SideCols) == 1)
{
if (UsrDat->Prefs.SideCols > Lay_SHOW_BOTH_COLUMNS)
UsrDat->Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
@ -504,10 +511,10 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat)
UsrDat->Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
/* Get on which events I want to be notified by e-mail */
if (sscanf (row[27],"%u",&UsrDat->Prefs.NotifNtfEvents) != 1)
if (sscanf (row[28],"%u",&UsrDat->Prefs.NotifNtfEvents) != 1)
UsrDat->Prefs.NotifNtfEvents = (unsigned) -1; // 0xFF..FF
if (sscanf (row[28],"%u",&UsrDat->Prefs.EmailNtfEvents) != 1)
if (sscanf (row[29],"%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;
@ -2191,6 +2198,7 @@ static void Usr_SetUsrRoleAndPrefs (void)
Gbl.Prefs.IconsURL,Cfg_ICON_FOLDER_ICON_SETS,
Ico_IconSetId[Gbl.Prefs.IconSet]);
Gbl.Prefs.Menu = Gbl.Usrs.Me.UsrDat.Prefs.Menu;
Gbl.Prefs.SideCols = Gbl.Usrs.Me.UsrDat.Prefs.SideCols;
/***** Get my last data *****/

View File

@ -36,6 +36,7 @@
#include "swad_degree.h"
#include "swad_icon.h"
#include "swad_layout.h"
#include "swad_menu.h"
#include "swad_nickname.h"
#include "swad_role.h"
#include "swad_scope.h"
@ -149,8 +150,9 @@ struct UsrData
Txt_Language_t Language;
Lay_Layout_t Layout;
The_Theme_t Theme;
unsigned SideCols;
Ico_IconSet_t IconSet;
Mnu_Menu_t Menu;
unsigned SideCols;
unsigned NotifNtfEvents; // One bit activated for each type of event
unsigned EmailNtfEvents; // One bit activated for each type of event
} Prefs;