mirror of https://github.com/acanas/swad-core.git
Version 14.51
This commit is contained in:
parent
2bda10d434
commit
f4d8a97900
2
Makefile
2
Makefile
|
@ -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 \
|
||||
|
|
|
@ -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;}
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 169 B |
Binary file not shown.
After Width: | Height: | Size: 165 B |
|
@ -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;
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
--
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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 *******************************/
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 *****/
|
||||
/*
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ******************************/
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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);
|
||||
|
|
65
swad_text.c
65
swad_text.c
|
@ -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áximo";
|
||||
#endif
|
||||
|
||||
const char *Txt_Menu =
|
||||
#if L==0
|
||||
"Menú";
|
||||
#elif L==1
|
||||
"Menü";
|
||||
#elif L==2
|
||||
"Menu";
|
||||
#elif L==3
|
||||
"Menú";
|
||||
#elif L==4
|
||||
"Menu";
|
||||
#elif L==5
|
||||
"Menú"; // 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] =
|
||||
{
|
||||
{
|
||||
|
|
18
swad_user.c
18
swad_user.c
|
@ -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 *****/
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue