Version 16.77

This commit is contained in:
Antonio Cañas Vargas 2016-11-29 15:02:23 +01:00
parent 6add447c4e
commit c899d13400
8 changed files with 1484 additions and 848 deletions

View File

@ -81,7 +81,7 @@ extern struct Globals Gbl;
/************************ Internal global variables **************************/
/*****************************************************************************/
/*
1230 actions in one CGI:
1232 actions in one CGI:
0. ActAll Any action (used for statistics)
1. ActUnk Unknown action
2. ActHom Show home menu
@ -1328,7 +1328,7 @@ Profile:
1141. ActMyCrs Select one of my courses
1142. ActSeeMyTT Show the timetable of all courses of the logged user
1143. ActSeeMyAgd Show my agenda (personal organizer)
1144. ActSeeMyLoc Show my location
1144. ActSeeMyLoc Show my locations
1145. ActFrmMyAcc Show form to the creation or change of user's account
1146. ActReqEdiRecCom Request the edition of the record with the personal data of the user
1147. ActEdiPrf Show forms to edit preferences
@ -1344,89 +1344,91 @@ Profile:
1155. ActAnnSee Mark announcement as seen
1156. ActChgMyRol Change type of logged user
1157. ActEdiLoc Edit my locations
1158. ActNewLoc Request the creation of a location
1159. ActRemLoc Remove a location
1160. ActChgLocStrDat Change start date of a location
1161. ActChgLocEndDat Change end date of a location
1162. ActRenLoc Rename a location
1157. ActFrmNewLoc Form to create a new location
1158. ActEdiOneLoc Edit one location
1159. ActNewLoc Create new location
1160. ActChgLoc Modify data of an existing location
1161. ActReqRemLoc Request the removal of a location
1162. ActRemLoc Remove location
1163. ActHidLoc Hide location
1164. ActShoLoc Show location
1163. ActChkUsrAcc Check if already exists a new account without password associated to a ID
1164. ActCreUsrAcc Create new user account
1165. ActRemID_Me Remove one of my user's IDs
1166. ActNewIDMe Create a new user's ID for me
1167. ActRemOldNic Remove one of my old nicknames
1168. ActChgNic Change my nickname
1169. ActRemMaiMe Remove one of my old emails
1170. ActNewMaiMe Change my email address
1171. ActCnfMai Confirm email address
1172. ActFrmChgMyPwd Show form to the change of the password
1173. ActChgPwd Change the password
1174. ActReqRemMyAcc Request the removal of my account
1175. ActRemMyAcc Remove my account
1165. ActChkUsrAcc Check if already exists a new account without password associated to a ID
1166. ActCreUsrAcc Create new user account
1167. ActRemID_Me Remove one of my user's IDs
1168. ActNewIDMe Create a new user's ID for me
1169. ActRemOldNic Remove one of my old nicknames
1170. ActChgNic Change my nickname
1171. ActRemMaiMe Remove one of my old emails
1172. ActNewMaiMe Change my email address
1173. ActCnfMai Confirm email address
1174. ActFrmChgMyPwd Show form to the change of the password
1175. ActChgPwd Change the password
1176. ActReqRemMyAcc Request the removal of my account
1177. ActRemMyAcc Remove my account
1176. ActChgMyData Update my personal data
1178. ActChgMyData Update my personal data
1177. ActReqMyPho Show form to send my photo
1178. ActDetMyPho Receive my photo and detect faces on it
1179. ActUpdMyPho Update my photo
1180. ActReqRemMyPho Request the removal of my photo
1181. ActRemMyPho Remove my photo
1179. ActReqMyPho Show form to send my photo
1180. ActDetMyPho Receive my photo and detect faces on it
1181. ActUpdMyPho Update my photo
1182. ActReqRemMyPho Request the removal of my photo
1183. ActRemMyPho Remove my photo
1182. ActEdiPri Edit my privacy
1183. ActChgPriPho Change privacy of my photo
1184. ActChgPriPrf Change privacy of my public profile
1184. ActEdiPri Edit my privacy
1185. ActChgPriPho Change privacy of my photo
1186. ActChgPriPrf Change privacy of my public profile
1185. ActReqEdiMyIns Request the edition of my institution, centre and department
1186. ActChgCtyMyIns Change the country of my institution
1187. ActChgMyIns Change my institution
1188. ActChgMyCtr Change my centre
1189. ActChgMyDpt Change my department
1190. ActChgMyOff Change my office
1191. ActChgMyOffPho Change my office phone
1187. ActReqEdiMyIns Request the edition of my institution, centre and department
1188. ActChgCtyMyIns Change the country of my institution
1189. ActChgMyIns Change my institution
1190. ActChgMyCtr Change my centre
1191. ActChgMyDpt Change my department
1192. ActChgMyOff Change my office
1193. ActChgMyOffPho Change my office phone
1192. ActReqEdiMyNet Request the edition of my social networks
1193. ActChgMyNet Change my web and social networks
1194. ActReqEdiMyNet Request the edition of my social networks
1195. ActChgMyNet Change my web and social networks
1194. ActChgThe Change theme
1195. ActReqChgLan Ask if change language
1196. ActChgLan Change language
1197. ActChg1stDay Change first day of the week
1198. ActChgCol Change side columns
1119. ActHidLftCol Hide left side column
1200. ActHidRgtCol Hide right side column
1201. ActShoLftCol Show left side column
1202. ActShoRgtCol Show right side column
1203. ActChgIco Change icon set
1204. ActChgMnu Change menu
1205. ActChgNtfPrf Change whether to notify by email new messages
1206. ActPrnUsrQR Show my QR code ready to print
1196. ActChgThe Change theme
1197. ActReqChgLan Ask if change language
1198. ActChgLan Change language
1199. ActChg1stDay Change first day of the week
1200. ActChgCol Change side columns
1201. ActHidLftCol Hide left side column
1202. ActHidRgtCol Hide right side column
1203. ActShoLftCol Show left side column
1204. ActShoRgtCol Show right side column
1205. ActChgIco Change icon set
1206. ActChgMnu Change menu
1207. ActChgNtfPrf Change whether to notify by email new messages
1208. ActPrnUsrQR Show my QR code ready to print
1207. ActPrnMyTT Show the timetable listo to impresión of all my courses
1208. ActEdiTut Edit the timetable of tutorías
1209. ActChgTut Modify the timetable of tutorías
1210. ActChgMyTT1stDay Change first day of week and show timetable of the course
1209. ActPrnMyTT Show the timetable listo to impresión of all my courses
1210. ActEdiTut Edit the timetable of tutorías
1211. ActChgTut Modify the timetable of tutorías
1212. ActChgMyTT1stDay Change first day of week and show timetable of the course
1211. ActReqRemFilBrf Request removal of a file of the briefcase
1212. ActRemFilBrf Remove a file of the briefcase
1213. ActRemFolBrf Remove a folder empty of the briefcase
1214. ActCopBrf Set source of copy in the briefcase
1215. ActPasBrf Paste a folder or file in the briefcase
1216. ActRemTreBrf Remove a folder no empty of the briefcase
1217. ActFrmCreBrf Form to crear a folder or file in the briefcase
1218. ActCreFolBrf Create a new folder in the briefcase
1219. ActCreLnkBrf Create a new link in the briefcase
1220. ActRenFolBrf Rename a folder of the briefcase
1221. ActRcvFilBrfDZ Receive a file in the briefcase using Dropzone.js
1222. ActRcvFilBrfCla Receive a file in the briefcase using the classic way
1223. ActExpBrf Expand a folder in briefcase
1224. ActConBrf Contract a folder in briefcase
1225. ActZIPBrf Compress a folder in briefcase
1226. ActReqDatBrf Ask for metadata of a file in the briefcase
1227. ActChgDatBrf Change metadata of a file in the briefcase
1228. ActDowBrf Download a file in the briefcase
1229. ActReqRemOldBrf Ask for removing old files in the briefcase
1230. ActRemOldBrf Remove old files in the briefcase
1213. ActReqRemFilBrf Request removal of a file of the briefcase
1214. ActRemFilBrf Remove a file of the briefcase
1215. ActRemFolBrf Remove a folder empty of the briefcase
1216. ActCopBrf Set source of copy in the briefcase
1217. ActPasBrf Paste a folder or file in the briefcase
1218. ActRemTreBrf Remove a folder no empty of the briefcase
1219. ActFrmCreBrf Form to crear a folder or file in the briefcase
1220. ActCreFolBrf Create a new folder in the briefcase
1221. ActCreLnkBrf Create a new link in the briefcase
1222. ActRenFolBrf Rename a folder of the briefcase
1223. ActRcvFilBrfDZ Receive a file in the briefcase using Dropzone.js
1224. ActRcvFilBrfCla Receive a file in the briefcase using the classic way
1225. ActExpBrf Expand a folder in briefcase
1226. ActConBrf Contract a folder in briefcase
1227. ActZIPBrf Compress a folder in briefcase
1228. ActReqDatBrf Ask for metadata of a file in the briefcase
1229. ActChgDatBrf Change metadata of a file in the briefcase
1230. ActDowBrf Download a file in the briefcase
1231. ActReqRemOldBrf Ask for removing old files in the briefcase
1232. ActRemOldBrf Remove old files in the briefcase
*/
struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
@ -2792,12 +2794,14 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActAnnSee */{1234,-1,TabUnk,ActFrmRolSes ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Ann_MarkAnnouncementAsSeen ,NULL},
/* ActChgMyRol */{ 589,-1,TabUnk,ActFrmRolSes ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,Rol_ChangeMyRole ,Usr_ShowFormsLogoutAndRole ,NULL},
/* ActEdiLoc */{1603,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_EditLocations ,NULL},
/* ActNewLoc */{1604,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_RecFormNewLocation ,NULL},
/* ActRemLoc */{1605,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_RemoveLocation ,NULL},
/* ActChgLocStrDat */{1606,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_ChangeStartDate ,NULL},
/* ActChgLocEndDat */{1607,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_ChangeEndDate ,NULL},
/* ActRenLoc */{1608,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_RenameLocation ,NULL},
/* ActFrmNewLoc */{1603,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_RequestCreatOrEditLoc ,NULL},
/* ActEdiOneLoc */{1604,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_RequestCreatOrEditLoc ,NULL},
/* ActNewLoc */{1605,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_RecFormLocation ,NULL},
/* ActChgLoc */{1606,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_RecFormLocation ,NULL},
/* ActReqRemLoc */{1607,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_AskRemLocation ,NULL},
/* ActRemLoc */{1608,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_RemoveLocation ,NULL},
/* ActHidLoc */{1609,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_HideLocation ,NULL},
/* ActShoLoc */{1610,-1,TabUnk,ActSeeMyLoc ,0x100,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Loc_ShowLocation ,NULL},
/* ActChkUsrAcc */{1584,-1,TabUnk,ActFrmMyAcc ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_CheckIfEmptyAccountExists ,NULL},
/* ActCreUsrAcc */{1163,-1,TabUnk,ActFrmMyAcc ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_AfterCreationNewAccount ,NULL},
@ -4491,12 +4495,14 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
ActRenCrsFulCfg, // #1600
ActRenCrsShoCfg, // #1601
ActSeeMyLoc, // #1602
ActEdiLoc, // #1603
ActNewLoc, // #1604
ActRemLoc, // #1605
ActChgLocStrDat, // #1606
ActChgLocEndDat, // #1607
ActRenLoc, // #1608
ActFrmNewLoc, // #1603
ActEdiOneLoc, // #1604
ActNewLoc, // #1605
ActChgLoc, // #1606
ActReqRemLoc, // #1607
ActRemLoc, // #1608
ActHidLoc, // #1609
ActShoLoc, // #1610
};
/*****************************************************************************/

View File

@ -55,9 +55,9 @@ typedef enum
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_NUM_ACTIONS (1+9+51+14+93+73+70+249+186+155+172+36+31+92)
#define Act_NUM_ACTIONS (1+9+51+14+93+73+70+249+186+155+172+36+31+94)
#define Act_MAX_ACTION_COD 1608
#define Act_MAX_ACTION_COD 1610
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 11
@ -1381,90 +1381,92 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
#define ActAutUsrChgLan (ActSeeMyUsgRep+16)
#define ActAnnSee (ActSeeMyUsgRep+17)
#define ActChgMyRol (ActSeeMyUsgRep+18)
#define ActEdiLoc (ActSeeMyUsgRep+19)
#define ActNewLoc (ActSeeMyUsgRep+20)
#define ActRemLoc (ActSeeMyUsgRep+21)
#define ActChgLocStrDat (ActSeeMyUsgRep+22)
#define ActChgLocEndDat (ActSeeMyUsgRep+23)
#define ActRenLoc (ActSeeMyUsgRep+24)
#define ActChkUsrAcc (ActSeeMyUsgRep+25)
#define ActCreUsrAcc (ActSeeMyUsgRep+26)
#define ActRemID_Me (ActSeeMyUsgRep+27)
#define ActNewIDMe (ActSeeMyUsgRep+28)
#define ActRemOldNic (ActSeeMyUsgRep+29)
#define ActChgNic (ActSeeMyUsgRep+30)
#define ActRemMaiMe (ActSeeMyUsgRep+31)
#define ActNewMaiMe (ActSeeMyUsgRep+32)
#define ActCnfMai (ActSeeMyUsgRep+33)
#define ActFrmChgMyPwd (ActSeeMyUsgRep+34)
#define ActChgPwd (ActSeeMyUsgRep+35)
#define ActReqRemMyAcc (ActSeeMyUsgRep+36)
#define ActRemMyAcc (ActSeeMyUsgRep+37)
#define ActFrmNewLoc (ActSeeMyUsgRep+19)
#define ActEdiOneLoc (ActSeeMyUsgRep+20)
#define ActNewLoc (ActSeeMyUsgRep+21)
#define ActChgLoc (ActSeeMyUsgRep+22)
#define ActReqRemLoc (ActSeeMyUsgRep+23)
#define ActRemLoc (ActSeeMyUsgRep+24)
#define ActHidLoc (ActSeeMyUsgRep+25)
#define ActShoLoc (ActSeeMyUsgRep+26)
#define ActChkUsrAcc (ActSeeMyUsgRep+27)
#define ActCreUsrAcc (ActSeeMyUsgRep+28)
#define ActRemID_Me (ActSeeMyUsgRep+29)
#define ActNewIDMe (ActSeeMyUsgRep+30)
#define ActRemOldNic (ActSeeMyUsgRep+31)
#define ActChgNic (ActSeeMyUsgRep+32)
#define ActRemMaiMe (ActSeeMyUsgRep+33)
#define ActNewMaiMe (ActSeeMyUsgRep+34)
#define ActCnfMai (ActSeeMyUsgRep+35)
#define ActFrmChgMyPwd (ActSeeMyUsgRep+36)
#define ActChgPwd (ActSeeMyUsgRep+37)
#define ActReqRemMyAcc (ActSeeMyUsgRep+38)
#define ActRemMyAcc (ActSeeMyUsgRep+39)
#define ActChgMyData (ActSeeMyUsgRep+38)
#define ActChgMyData (ActSeeMyUsgRep+40)
#define ActReqMyPho (ActSeeMyUsgRep+39)
#define ActDetMyPho (ActSeeMyUsgRep+40)
#define ActUpdMyPho (ActSeeMyUsgRep+41)
#define ActReqRemMyPho (ActSeeMyUsgRep+42)
#define ActRemMyPho (ActSeeMyUsgRep+43)
#define ActReqMyPho (ActSeeMyUsgRep+41)
#define ActDetMyPho (ActSeeMyUsgRep+42)
#define ActUpdMyPho (ActSeeMyUsgRep+43)
#define ActReqRemMyPho (ActSeeMyUsgRep+44)
#define ActRemMyPho (ActSeeMyUsgRep+45)
#define ActEdiPri (ActSeeMyUsgRep+44)
#define ActChgPriPho (ActSeeMyUsgRep+45)
#define ActChgPriPrf (ActSeeMyUsgRep+46)
#define ActEdiPri (ActSeeMyUsgRep+46)
#define ActChgPriPho (ActSeeMyUsgRep+47)
#define ActChgPriPrf (ActSeeMyUsgRep+48)
#define ActReqEdiMyIns (ActSeeMyUsgRep+47)
#define ActChgCtyMyIns (ActSeeMyUsgRep+48)
#define ActChgMyIns (ActSeeMyUsgRep+49)
#define ActChgMyCtr (ActSeeMyUsgRep+50)
#define ActChgMyDpt (ActSeeMyUsgRep+51)
#define ActChgMyOff (ActSeeMyUsgRep+52)
#define ActChgMyOffPho (ActSeeMyUsgRep+53)
#define ActReqEdiMyIns (ActSeeMyUsgRep+49)
#define ActChgCtyMyIns (ActSeeMyUsgRep+50)
#define ActChgMyIns (ActSeeMyUsgRep+51)
#define ActChgMyCtr (ActSeeMyUsgRep+52)
#define ActChgMyDpt (ActSeeMyUsgRep+53)
#define ActChgMyOff (ActSeeMyUsgRep+54)
#define ActChgMyOffPho (ActSeeMyUsgRep+55)
#define ActReqEdiMyNet (ActSeeMyUsgRep+54)
#define ActChgMyNet (ActSeeMyUsgRep+55)
#define ActReqEdiMyNet (ActSeeMyUsgRep+56)
#define ActChgMyNet (ActSeeMyUsgRep+57)
#define ActChgThe (ActSeeMyUsgRep+56)
#define ActReqChgLan (ActSeeMyUsgRep+57)
#define ActChgLan (ActSeeMyUsgRep+58)
#define ActChg1stDay (ActSeeMyUsgRep+59)
#define ActChgCol (ActSeeMyUsgRep+60)
#define ActHidLftCol (ActSeeMyUsgRep+61)
#define ActHidRgtCol (ActSeeMyUsgRep+62)
#define ActShoLftCol (ActSeeMyUsgRep+63)
#define ActShoRgtCol (ActSeeMyUsgRep+64)
#define ActChgIco (ActSeeMyUsgRep+65)
#define ActChgMnu (ActSeeMyUsgRep+66)
#define ActChgNtfPrf (ActSeeMyUsgRep+67)
#define ActChgThe (ActSeeMyUsgRep+58)
#define ActReqChgLan (ActSeeMyUsgRep+59)
#define ActChgLan (ActSeeMyUsgRep+60)
#define ActChg1stDay (ActSeeMyUsgRep+61)
#define ActChgCol (ActSeeMyUsgRep+62)
#define ActHidLftCol (ActSeeMyUsgRep+63)
#define ActHidRgtCol (ActSeeMyUsgRep+64)
#define ActShoLftCol (ActSeeMyUsgRep+65)
#define ActShoRgtCol (ActSeeMyUsgRep+66)
#define ActChgIco (ActSeeMyUsgRep+67)
#define ActChgMnu (ActSeeMyUsgRep+68)
#define ActChgNtfPrf (ActSeeMyUsgRep+69)
#define ActPrnUsrQR (ActSeeMyUsgRep+68)
#define ActPrnUsrQR (ActSeeMyUsgRep+70)
#define ActPrnMyTT (ActSeeMyUsgRep+69)
#define ActEdiTut (ActSeeMyUsgRep+70)
#define ActChgTut (ActSeeMyUsgRep+71)
#define ActChgMyTT1stDay (ActSeeMyUsgRep+72)
#define ActPrnMyTT (ActSeeMyUsgRep+71)
#define ActEdiTut (ActSeeMyUsgRep+72)
#define ActChgTut (ActSeeMyUsgRep+73)
#define ActChgMyTT1stDay (ActSeeMyUsgRep+74)
#define ActReqRemFilBrf (ActSeeMyUsgRep+73)
#define ActRemFilBrf (ActSeeMyUsgRep+74)
#define ActRemFolBrf (ActSeeMyUsgRep+75)
#define ActCopBrf (ActSeeMyUsgRep+76)
#define ActPasBrf (ActSeeMyUsgRep+77)
#define ActRemTreBrf (ActSeeMyUsgRep+78)
#define ActFrmCreBrf (ActSeeMyUsgRep+79)
#define ActCreFolBrf (ActSeeMyUsgRep+80)
#define ActCreLnkBrf (ActSeeMyUsgRep+81)
#define ActRenFolBrf (ActSeeMyUsgRep+82)
#define ActRcvFilBrfDZ (ActSeeMyUsgRep+83)
#define ActRcvFilBrfCla (ActSeeMyUsgRep+84)
#define ActExpBrf (ActSeeMyUsgRep+85)
#define ActConBrf (ActSeeMyUsgRep+86)
#define ActZIPBrf (ActSeeMyUsgRep+87)
#define ActReqDatBrf (ActSeeMyUsgRep+88)
#define ActChgDatBrf (ActSeeMyUsgRep+89)
#define ActDowBrf (ActSeeMyUsgRep+90)
#define ActReqRemFilBrf (ActSeeMyUsgRep+75)
#define ActRemFilBrf (ActSeeMyUsgRep+76)
#define ActRemFolBrf (ActSeeMyUsgRep+77)
#define ActCopBrf (ActSeeMyUsgRep+78)
#define ActPasBrf (ActSeeMyUsgRep+79)
#define ActRemTreBrf (ActSeeMyUsgRep+80)
#define ActFrmCreBrf (ActSeeMyUsgRep+81)
#define ActCreFolBrf (ActSeeMyUsgRep+82)
#define ActCreLnkBrf (ActSeeMyUsgRep+83)
#define ActRenFolBrf (ActSeeMyUsgRep+84)
#define ActRcvFilBrfDZ (ActSeeMyUsgRep+85)
#define ActRcvFilBrfCla (ActSeeMyUsgRep+86)
#define ActExpBrf (ActSeeMyUsgRep+87)
#define ActConBrf (ActSeeMyUsgRep+88)
#define ActZIPBrf (ActSeeMyUsgRep+89)
#define ActReqDatBrf (ActSeeMyUsgRep+90)
#define ActChgDatBrf (ActSeeMyUsgRep+91)
#define ActDowBrf (ActSeeMyUsgRep+92)
#define ActReqRemOldBrf (ActSeeMyUsgRep+91)
#define ActRemOldBrf (ActSeeMyUsgRep+92)
#define ActReqRemOldBrf (ActSeeMyUsgRep+93)
#define ActRemOldBrf (ActSeeMyUsgRep+94)
/*****************************************************************************/
/******************************** Public types *******************************/

View File

@ -172,17 +172,23 @@
// TODO: List only confirmed emails to send a message with MESSAGES > Email ?
// TODO: When activating folders in groups, go to section for that type of group
// TODO: I can not remove a folder inside assignments (see swad.ugr.es -> EC -> assignment acanas)
// TODO: When teacher sees "No hay estudiantes", put a button to add students
// TODO: When admin sees "No hay profesores", put a button to add teachers
/*****************************************************************************/
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.76 (2016-11-29)"
#define Log_PLATFORM_VERSION "SWAD 16.77 (2016-11-29)"
#define CSS_FILE "swad16.69.css"
#define JS_FILE "swad16.46.1.js"
// 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 16.77: Nov 29, 2016 Changes in location. Not finished. (209483 lines)
Version 16.76: Nov 29, 2016 New form to create location. Not finished. (208936 lines)
8 changes necessary in database:
CREATE TABLE IF NOT EXISTS locations (LocCod INT NOT NULL AUTO_INCREMENT,StartDate DATE NOT NULL,EndDate DATE NOT NULL,Location VARCHAR(255) NOT NULL,UNIQUE INDEX(LocCod));

View File

@ -357,11 +357,11 @@ struct Globals
} MyCrss;
struct
{
bool LstIsRead; // Is the list already read from database, or it needs to be read?
unsigned Num; // Number of locations
struct Location *Lst; // List of locations
struct Location EditingLoc;
Loc_OrderType_t SelectedOrderType;
bool LstIsRead; // Is the list already read from database, or it needs to be read?
unsigned Num; // Number of locations
long *LstLocCods; // List of location codes
Loc_Order_t SelectedOrderType;
long LocCodToEdit; // Used as parameter in contextual links
} Locs;
Usr_ShowUsrsType_t ListType; // My preference about user's list type
unsigned NumFollowers; // Number of users who follow me

View File

@ -227,8 +227,9 @@ const char *Hlp_PROFILE_Courses = WIKI "PROFILE.Courses";
const char *Hlp_PROFILE_Timetable = WIKI "PROFILE.Timetable";
const char *Hlp_PROFILE_Location = WIKI "PROFILE.Location";
const char *Hlp_PROFILE_Location_edit = WIKI "PROFILE.Location#edit";
const char *Hlp_PROFILE_Location = WIKI "PROFILE.Location";
const char *Hlp_PROFILE_Location_new_location = WIKI "PROFILE.Location#new-location";
const char *Hlp_PROFILE_Location_edit_location = WIKI "PROFILE.Location#edit-location";
const char *Hlp_PROFILE_Record = WIKI "PROFILE.Record";
const char *Hlp_PROFILE_Institution = WIKI "PROFILE.Institution";

File diff suppressed because it is too large Load Diff

View File

@ -28,33 +28,51 @@
/*****************************************************************************/
#include "swad_date.h"
#include "swad_place.h"
#include "swad_user.h"
/*****************************************************************************/
/************************** Public types and constants ***********************/
/*****************************************************************************/
#define Loc_MAX_LENGTH_LOCATION 255
#define Loc_MAX_LENGTH_ASSIGNMENT_TITLE 255
#define Loc_MAX_LENGTH_FOLDER 32
#define Loc_NUM_TYPES_SEND_WORK 2
typedef enum
{
LOC_START_DATE,
LOC_END_DATE
} Loc_StartOrEndDate_t;
Loc_DO_NOT_SEND_WORK = 0,
Loc_SEND_WORK = 1,
} Loc_SendWork_t;
#define Loc_NUM_DATES 2
typedef enum
{
Loc_START_TIME = 0,
Loc_END_TIME = 1,
} Loc_StartOrEndTime_t;
struct Location
{
long LocCod;
struct Date StartDate;
struct Date EndDate;
char Location[Loc_MAX_LENGTH_LOCATION+1];
bool Hidden;
long UsrCod;
time_t TimeUTC[Loc_NUM_DATES];
bool Open;
char Title[Loc_MAX_LENGTH_ASSIGNMENT_TITLE+1];
Loc_SendWork_t SendWork;
char Folder[Loc_MAX_LENGTH_FOLDER+1];
bool IBelongToCrsOrGrps; // I can do this location
// (it is associated to no groups
// or, if associated to groups,
// I belong to any of the groups)
};
typedef enum
{
Loc_ORDER_BY_START_DATE = 0,
Loc_ORDER_BY_END_DATE = 1,
} Loc_OrderType_t;
} Loc_Order_t;
#define Loc_DEFAULT_ORDER_TYPE Loc_ORDER_BY_START_DATE
@ -63,15 +81,24 @@ typedef enum
/*****************************************************************************/
void Loc_SeeLocations (void);
void Loc_EditLocations (void);
void Loc_PutHiddenParamLocOrderType (void);
void Loc_RequestCreatOrEditLoc (void);
void Loc_GetListLocations (void);
void Loc_GetDataOfLocationByCod (struct Location *Loc);
void Loc_FreeListLocations (void);
void Loc_GetNotifLocation (char *SummaryStr,char **ContentStr,long LocCod,unsigned MaxChars,bool GetContent);
long Loc_GetParamLocCod (void);
void Loc_AskRemLocation (void);
void Loc_RemoveLocation (void);
void Loc_ChangeStartDate (void);
void Loc_ChangeEndDate (void);
void Loc_RenameLocation (void);
void Loc_RecFormNewLocation (void);
void Loc_HideLocation (void);
void Loc_ShowLocation (void);
void Loc_RecFormLocation (void);
void Loc_RemoveCrsLocations (long CrsCod);
unsigned Loc_GetNumLocationsInCrs(long CrsCod);
unsigned Loc_GetNumCoursesWithLocations (Sco_Scope_t Scope);
unsigned Loc_GetNumLocations (Sco_Scope_t Scope,unsigned *NumNotif);
#endif

View File

@ -6842,25 +6842,25 @@ const char *Txt_Created_new_link_X = // Warning: it is very important to include
"Criado nova liga&ccedil;&atilde;o <strong>%s</strong>.";
#endif
const char *Txt_Created_new_location =
const char *Txt_Created_new_location_X = // Warning: it is very important to include %s in the following sentences
#if L==1
"Creada nova ubicaci&oacute;.";
"Creada nova ubicaci&oacute; <strong>%s</strong>.";
#elif L==2
"Neuer Standort eingegeben.";
"Neuer Standort <strong>%s</strong> eingegeben.";
#elif L==3
"Created new location.";
"Created new location <strong>%s</strong>.";
#elif L==4
"Creada nueva ubicaci&oacute;n.";
"Creada nueva ubicaci&oacute;n <strong>%s</strong>.";
#elif L==5
"Cr&eacute;&eacute; nouvel emplacement.";
"Cr&eacute;&eacute; nouvel emplacement <strong>%s</strong>.";
#elif L==6
"Creada nueva ubicaci&oacute;n."; // Okoteve traducción
"Creada nueva ubicaci&oacute;n <strong>%s</strong>."; // Okoteve traducción
#elif L==7
"Creata nuova posizione.";
"Creata nuova posizione <strong>%s</strong>.";
#elif L==8
"Utworzono nowe lokacja.";
"Utworzono nowe lokacja <strong>%s</strong>.";
#elif L==9
"Criado nova localiza&ccedil;&atilde;o.";
"Criado nova localiza&ccedil;&atilde;o <strong>%s</strong>.";
#endif
const char *Txt_Created_new_place_X = // Warning: it is very important to include %s in the following sentences
@ -17110,25 +17110,25 @@ const char *Txt_Location =
"Localiza&ccedil;&atilde;o";
#endif
const char *Txt_Location_removed =
const char *Txt_Location_X_removed = // Warning: it is very important to include %s in the following sentences
#if L==1
"Ubicaci&oacute; eliminada.";
"Ubicaci&oacute; <strong>%s</strong> eliminada.";
#elif L==2
"Standort entfernt.";
"Standort <strong>%s</strong> entfernt.";
#elif L==3
"Location removed.";
"Location <strong>%s</strong> removed.";
#elif L==4
"Ubicaci&oacute;n eliminada.";
"Ubicaci&oacute;n <strong>%s</strong> eliminada.";
#elif L==5
"Emplacement supprim&eacute;.";
"Emplacement <strong>%s</strong> supprim&eacute;.";
#elif L==6
"Ubicaci&oacute;n eliminada."; // Okoteve traducción
"Ubicaci&oacute;n <strong>%s</strong> eliminada."; // Okoteve traducción
#elif L==7
"Posizione rimossa.";
"Posizione <strong>%s</strong> rimossa.";
#elif L==8
"Lokacja usuniete.";
"Lokacja <strong>%s</strong> usuniete.";
#elif L==9
"Localiza&ccedil;&atilde;o removida.";
"Localiza&ccedil;&atilde;o <strong>%s</strong> removida.";
#endif
const char *Txt_Locations =
@ -24572,6 +24572,27 @@ const char *Txt_No_institutions =
"N&atilde;o h&aacute; institu&ccedil;&otilde;es.";
#endif
const char *Txt_No_locations =
#if L==1
"No hi ha ubicacions.";
#elif L==2
"Es gibt keine Standorte.";
#elif L==3
"No locations.";
#elif L==4
"No existen ubicaciones.";
#elif L==5
"Il n'y a pas d'emplacements.";
#elif L==6
"No existen ubicaciones."; // Okoteve traducción
#elif L==7
"Non ci sono posizioni.";
#elif L==8
"Brak lokalizacje.";
#elif L==9
"N&atilde;o existem localiza&ccedil;&otilde;es.";
#endif
const char *Txt_No_BR_msgs =
#if L==1
"N&ordm;<br />mens."; // Necessita traduccio
@ -30787,6 +30808,27 @@ const char *Txt_Remove_link =
"Remover liga&ccedil;&atilde;o";
#endif
const char *Txt_Remove_location =
#if L==1
"Eliminar ubicaci&oacute;";
#elif L==2
"Entfernen Standort";
#elif L==3
"Remove location";
#elif L==4
"Eliminar ubicaci&oacute;n";
#elif L==5
"Supprimer emplacement";
#elif L==6
"Eliminar ubicaci&oacute;n"; // Okoteve traducción
#elif L==7
"Rimuovere posizione";
#elif L==8
"Usu&nacute; lokacja";
#elif L==9
"Remover localiza&ccedil;&atilde;o";
#endif
const char *Txt_Remove_logo =
#if L==1
"Eliminar logo";
@ -42287,27 +42329,6 @@ const char *Txt_The_date_of_the_holiday_X_has_changed_to_Y = // Warning: it is v
"The date of the holiday <strong>%s</strong> has changed to <strong>%s</strong>."; // Necessita de tradução
#endif
const char *Txt_The_date_of_the_location_has_changed_to_X = // Warning: it is very important to include %s in the following sentences
#if L==1
"La fecha de la festividad ha cambiado a <strong>%s</strong>."; // Necessita traduccio
#elif L==2
"The date of the location has changed to <strong>%s</strong>."; // Need Übersetzung
#elif L==3
"The date of the location has changed to <strong>%s</strong>.";
#elif L==4
"La fecha de la ubicaci&oacute;n ha cambiado a <strong>%s</strong>.";
#elif L==5
"The date of the location has changed to <strong>%s</strong>."; // Besoin de traduction
#elif L==6
"La fecha de la ubicaci&oacute;n ha cambiado a <strong>%s</strong>."; // Okoteve traducción
#elif L==7
"La data delle posizione &egrave; cambiata a <strong>%s</strong>.";
#elif L==8
"The date of the location has changed to <strong>%s</strong>."; // Potrzebujesz tlumaczenie
#elif L==9
"The date of the location has changed to <strong>%s</strong>."; // Necessita de tradução
#endif
const char *Txt_The_date_range_must_be_less_than_or_equal_to_X_days = // Warning: it is very important to include %u in the following sentences
#if L==1
"El rango de fechas debe ser menor o igual a %u d&iacute;as."; // Necessita traduccio
@ -43580,48 +43601,6 @@ const char *Txt_The_list_of_X_users_is_too_large_to_be_displayed = // Warning: i
"The list of %u users is too large to be displayed."; // Necessita de tradução
#endif
const char *Txt_The_location_has_changed_to_X = // Warning: it is very important to include %s in the following sentences
#if L==1
"La ubicaci&oacute; ha canviat a <strong>%s</strong>.";
#elif L==2
"Der Standort wurde in <strong>%s</strong> ge&auml;ndert.";
#elif L==3
"The location has changed to <strong>%s</strong>.";
#elif L==4
"La ubicaci&oacute;n ha cambiado a <strong>%s</strong>.";
#elif L==5
"L'emplacement a chang&eacute; en <strong>%s</strong>.";
#elif L==6
"La ubicaci&oacute;n ha cambiado a <strong>%s</strong>."; // Okoteve traducción
#elif L==7
"La posizione &egrave; cambiato a <strong>%s</strong>.";
#elif L==8
"Zmieniona na miejscu <strong>%s</strong>.";
#elif L==9
"A localiza&ccedil;&atilde;o mudou para <strong>%s</strong>.";
#endif
const char *Txt_The_location_has_not_changed =
#if L==1
"La ubicaci&oacute; no ha canviat.";
#elif L==2
"Der Standort wurde nicht ge&auml;ndert.";
#elif L==3
"The location has not changed.";
#elif L==4
"La ubicaci&oacute;n no ha cambiado.";
#elif L==5
"L'emplacement n'a pas chang&eacute;.";
#elif L==6
"La ubicaci&oacute;n no ha cambiado."; // Okoteve traducción
#elif L==7
"La posizione non &egrave; cambiato.";
#elif L==8
"Miejsca nie uleg&lstrok;a zmianie.";
#elif L==9
"A localiza&ccedil;&atilde;o n&atilde;o foi alterado.";
#endif
const char *Txt_The_lower_limit_of_correct_answers_must_be_less_than_or_equal_to_the_upper_limit =
#if L==1
"El l&iacute;mite inferior del intervalo de respuestas correctas"
@ -46634,27 +46613,6 @@ const char *Txt_There_are_no_links =
"There are no links."; // Necessita de tradução
#endif
const char *Txt_There_are_no_locations =
#if L==1
"No hi ha ubicacions.";
#elif L==2
"Es gibt keine Standorte.";
#elif L==3
"There are no locations.";
#elif L==4
"No existen ubicaciones.";
#elif L==5
"Il n'y a pas d'emplacements.";
#elif L==6
"No existen ubicaciones."; // Okoteve traducción
#elif L==7
"Non ci sono posizioni.";
#elif L==8
"Brak lokalizacje.";
#elif L==9
"N&atilde;o existem localiza&ccedil;&otilde;es.";
#endif
const char *Txt_There_are_no_places =
#if L==1
"No existen lugares."; // Necessita traduccio
@ -52169,27 +52127,6 @@ const char *Txt_You_can_not_leave_the_IP_address_empty =
"You can not leave the IP address empty."; // Necessita de tradução
#endif
const char *Txt_You_can_not_leave_the_location_empty =
#if L==1
"No es pot deixar la ubicaci&oacute; buido.";
#elif L==2
"Sie k&ouml;nnen den Standort nicht leer lassen.";
#elif L==3
"You can not leave the location empty.";
#elif L==4
"No puede dejar la ubicaci&oacute;n vac&iacute;a.";
#elif L==5
"Vous ne pouvez pas laisser l'emplacement vide.";
#elif L==6
"No puede dejar la ubicaci&oacute;n vac&iacute;a."; // Okoteve traducción
#elif L==7
"Non puoi lasciare la posizione vuota.";
#elif L==8
"Nie mo&zdot;na pozostawi&cacute; miejsca pustego.";
#elif L==9
"Voc&ecirc; n&atilde;o pode deixar a localiza&ccedil;&atilde;o vazia.";
#endif
const char *Txt_You_can_not_leave_the_logo_empty =
#if L==1
"No puede dejar el logo vac&iacute;o."; // Necessita traduccio
@ -54092,27 +54029,6 @@ const char *Txt_You_must_specify_the_name_of_the_new_type_of_group =
"You must specify the name of the new type of group."; // Necessita de tradução
#endif
const char *Txt_You_must_specify_the_new_location =
#if L==1
"Cal especificar la nova ubicaci&oacute;.";
#elif L==2
"Sie m&uuml;ssen den neuen Speicherort angeben.";
#elif L==3
"You must specify the new location.";
#elif L==4
"Debe especificar la nueva ubicaci&oacute;n.";
#elif L==5
"Vous devez sp&eacute;cifier le nouvel emplacement.";
#elif L==6
"Debe especificar la nueva ubicaci&oacute;n."; // Okoteve traducción
#elif L==7
"Devi specificare la nuova posizione.";
#elif L==8
"Musisz poda&cacute; nazw&eogon; nowej lokalizacji.";
#elif L==9
"Voc&ecirc; deve especificar a nova localiza&ccedil;&atilde;o.";
#endif
const char *Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_banner =
#if L==1
"Debe especificar el nombre breve y el nombre completo"