diff --git a/sql/cambios.sql b/sql/cambios.sql index aa1ade1b..b503e4d9 100644 --- a/sql/cambios.sql +++ b/sql/cambios.sql @@ -11521,3 +11521,22 @@ SELECT COUNT(*) FROM social_notes WHERE NoteType='10'; ----- SWAD 15.199 (2016/04/16) ----- SELECT degrees.DegCod,degrees.CtrCod,degrees.DegTypCod,degrees.Status,degrees.RequesterUsrCod,degrees.ShortName,degrees.FullName,degrees.WWW FROM degrees,courses,crs_usr WHERE degrees.DegCod=courses.CrsCod AND courses.CrsCod=crs_usr.CrsCod AND crs_usr.Role='3' ORDER BY degrees.ShortName; + +----- SWAD 15.201 (2016/04/21) ----- + +CREATE TABLE notif_backup LIKE notif; +INSERT INTO notif_backup SELECT * FROM notif; + +CREATE TABLE sta_notif_backup LIKE sta_notif; +INSERT INTO sta_notif_backup SELECT * FROM sta_notif; + +CREATE TABLE usr_data_backup LIKE usr_data; +INSERT INTO usr_data_backup SELECT * FROM usr_data; + +UPDATE notif SET NotifyEvent=NotifyEvent+1 WHERE NotifyEvent>=2; +UPDATE sta_notif SET NotifyEvent=NotifyEvent+1 WHERE NotifyEvent>=2; +UPDATE usr_data SET NotifNtfEvents = (((NotifNtfEvents & ~0x3) << 1) | (NotifNtfEvents & 0x3) | 0x04); +UPDATE usr_data SET EmailNtfEvents = (((EmailNtfEvents & ~0x3) << 1) | (EmailNtfEvents & 0x3)); + + + diff --git a/swad_action.c b/swad_action.c index 75b1499f..6a1f04f8 100644 --- a/swad_action.c +++ b/swad_action.c @@ -77,7 +77,7 @@ extern struct Globals Gbl; /************************ Internal global variables **************************/ /*****************************************************************************/ /* -1153 actions in one CGI: +1193 actions in one CGI: 0. ActAll Any action (used for statistics) 1. ActUnk Unknown action 2. ActHom Show home menu @@ -252,22 +252,22 @@ Institution: 148. ActReqRemFilShaIns Request removal of a shared file of the institution 149. ActRemFilShaIns Remove a shared file of the institution - 150. ActRemFolShaIns Remove a folder empty común of the institution - 151. ActCopShaIns Set source of copy in common zone of the institution - 152. ActPasShaIns Paste a folder or file in common zone of the institution - 153. ActRemTreShaIns Remove a folder no empty of common zone of the institution - 154. ActFrmCreShaIns Form to crear a folder or file in common zone of the institution - 155. ActCreFolShaIns Create a new folder in common zone of the institution - 156. ActCreLnkShaIns Create a new link in common zone of the institution - 157. ActRenFolShaIns Rename a folder in common zone of the institution - 158. ActRcvFilShaInsDZ Receive a file in common zone of the institution using Dropzone.js - 159. ActRcvFilShaInsCla Receive a file in common zone of the institution using the classic way - 160. ActExpShaIns Expand a folder in common zone of the institution - 161. ActConShaIns Contract a folder in common zone of the institution - 162. ActZIPShaIns Compress a folder in common zone of the institution - 163. ActReqDatShaIns Ask for metadata of a file of the common zone of the institution - 164. ActChgDatShaIns Change metadata of a file of the common zone of the institution - 165. ActDowShaIns Download a file of the common zone of the institution + 150. ActRemFolShaIns Remove an empty shared folder of the institution + 151. ActCopShaIns Set source of copy in shared zone of the institution + 152. ActPasShaIns Paste a folder or file in shared zone of the institution + 153. ActRemTreShaIns Remove a folder no empty of shared zone of the institution + 154. ActFrmCreShaIns Form to crear a folder or file in shared zone of the institution + 155. ActCreFolShaIns Create a new folder in shared zone of the institution + 156. ActCreLnkShaIns Create a new link in shared zone of the institution + 157. ActRenFolShaIns Rename a folder in shared zone of the institution + 158. ActRcvFilShaInsDZ Receive a file in shared zone of the institution using Dropzone.js + 159. ActRcvFilShaInsCla Receive a file in shared zone of the institution using the classic way + 160. ActExpShaIns Expand a folder in shared zone of the institution + 161. ActConShaIns Contract a folder in shared zone of the institution + 162. ActZIPShaIns Compress a folder in shared zone of the institution + 163. ActReqDatShaIns Ask for metadata of a file of the shared zone of the institution + 164. ActChgDatShaIns Change metadata of a file of the shared zone of the institution + 165. ActDowShaIns Download a file of the shared zone of the institution Centre: 166. ActCtrReqSch Request search in centre tab @@ -332,22 +332,22 @@ Centre: 218. ActReqRemFilShaCtr Request removal of a shared file of the centre 219. ActRemFilShaCtr Remove a shared file of the centre - 220. ActRemFolShaCtr Remove a folder empty común of the centre - 221. ActCopShaCtr Set source of copy in common zone of the centre - 222. ActPasShaCtr Paste a folder or file in common zone of the centre - 223. ActRemTreShaCtr Remove a folder no empty of common zone of the centre - 224. ActFrmCreShaCtr Form to crear a folder or file in common zone of the centre - 225. ActCreFolShaCtr Create a new folder in common zone of the centre - 226. ActCreLnkShaCtr Create a new link in common zone of the centre - 227. ActRenFolShaCtr Rename a folder in common zone of the centre - 228. ActRcvFilShaCtrDZ Receive a file in common zone of the centre using Dropzone.js - 229. ActRcvFilShaCtrCla Receive a file in common zone of the centre using the classic way - 230. ActExpShaCtr Expand a folder in common zone of the centre - 231. ActConShaCtr Contract a folder in common zone of the centre - 232. ActZIPShaCtr Compress a folder in common zone of the centre - 233. ActReqDatShaCtr Ask for metadata of a file of the common zone of the centre - 234. ActChgDatShaCtr Change metadata of a file of the common zone of the centre - 235. ActDowShaCtr Download a file of the common zone of the centre + 220. ActRemFolShaCtr Remove an empty shared folder of the centre + 221. ActCopShaCtr Set source of copy in shared zone of the centre + 222. ActPasShaCtr Paste a folder or file in shared zone of the centre + 223. ActRemTreShaCtr Remove a folder no empty of shared zone of the centre + 224. ActFrmCreShaCtr Form to crear a folder or file in shared zone of the centre + 225. ActCreFolShaCtr Create a new folder in shared zone of the centre + 226. ActCreLnkShaCtr Create a new link in shared zone of the centre + 227. ActRenFolShaCtr Rename a folder in shared zone of the centre + 228. ActRcvFilShaCtrDZ Receive a file in shared zone of the centre using Dropzone.js + 229. ActRcvFilShaCtrCla Receive a file in shared zone of the centre using the classic way + 230. ActExpShaCtr Expand a folder in shared zone of the centre + 231. ActConShaCtr Contract a folder in shared zone of the centre + 232. ActZIPShaCtr Compress a folder in shared zone of the centre + 233. ActReqDatShaCtr Ask for metadata of a file of the shared zone of the centre + 234. ActChgDatShaCtr Change metadata of a file of the shared zone of the centre + 235. ActDowShaCtr Download a file of the shared zone of the centre Degree: 236. ActDegReqSch Request search in degree tab @@ -409,22 +409,22 @@ Degree: 285. ActReqRemFilShaDeg Request removal of a shared file of the degree 286. ActRemFilShaDeg Remove a shared file of the degree - 287. ActRemFolShaDeg Remove a folder empty común of the degree - 288. ActCopShaDeg Set source of copy in common zone of the degree - 289. ActPasShaDeg Paste a folder or file in common zone of the degree - 290. ActRemTreShaDeg Remove a folder no empty of common zone of the degree - 291. ActFrmCreShaDeg Form to crear a folder or file in common zone of the degree - 292. ActCreFolShaDeg Create a new folder in common zone of the degree - 293. ActCreLnkShaDeg Create a new link in common zone of the degree - 294. ActRenFolShaDeg Rename a folder in common zone of the degree - 295. ActRcvFilShaDegDZ Receive a file in common zone of the degree using Dropzone.js - 296. ActRcvFilShaDegCla Receive a file in common zone of the degree using the classic way - 297. ActExpShaDeg Expand a folder in common zone of the degree - 298. ActConShaDeg Contract a folder in common zone of the degree - 299. ActZIPShaDeg Compress a folder in common zone of the degree - 300. ActReqDatShaDeg Ask for metadata of a file of the common zone of the degree - 301. ActChgDatShaDeg Change metadata of a file of the common zone of the degree - 302. ActDowShaDeg Download a file of the common zone of the degree + 287. ActRemFolShaDeg Remove an empty shared folder of the degree + 288. ActCopShaDeg Set source of copy in shared zone of the degree + 289. ActPasShaDeg Paste a folder or file in shared zone of the degree + 290. ActRemTreShaDeg Remove a folder no empty of shared zone of the degree + 291. ActFrmCreShaDeg Form to crear a folder or file in shared zone of the degree + 292. ActCreFolShaDeg Create a new folder in shared zone of the degree + 293. ActCreLnkShaDeg Create a new link in shared zone of the degree + 294. ActRenFolShaDeg Rename a folder in shared zone of the degree + 295. ActRcvFilShaDegDZ Receive a file in shared zone of the degree using Dropzone.js + 296. ActRcvFilShaDegCla Receive a file in shared zone of the degree using the classic way + 297. ActExpShaDeg Expand a folder in shared zone of the degree + 298. ActConShaDeg Contract a folder in shared zone of the degree + 299. ActZIPShaDeg Compress a folder in shared zone of the degree + 300. ActReqDatShaDeg Ask for metadata of a file of the shared zone of the degree + 301. ActChgDatShaDeg Change metadata of a file of the shared zone of the degree + 302. ActDowShaDeg Download a file of the shared zone of the degree Course: 303. ActCrsReqSch Request search in course tab @@ -434,912 +434,956 @@ Course: 307. ActSeeSylLec Show the syllabus of lectures 308. ActSeeSylPra Show the syllabus of practicals 309. ActSeeAdmDocCrsGrp Documents zone of the course (see or admin) - 310. ActAdmShaCrsGrp Request the administration of the files of the common zone of the course or of a group - 311. ActSeeCrsTT Show the timetable - 312. ActSeeBib Show the bibliography - 313. ActSeeFAQ Show the FAQ - 314. ActSeeCrsLnk Show links related to the course - 315. ActCrsSch Search for courses, teachers, documents... + 310. ActAdmTchCrsGrp Request the administration of the files of the teachers' zone of the course or of a group + 311. ActAdmShaCrsGrp Request the administration of the files of the shared zone of the course or of a group + 312. ActSeeCrsTT Show the timetable + 313. ActSeeBib Show the bibliography + 314. ActSeeFAQ Show the FAQ + 315. ActSeeCrsLnk Show links related to the course - 316. ActPrnCrsInf Print information on the course - 317. ActChgCrsLog Change log in method for this course - 318. ActEdiCrsInf Edit general information about the course - 319. ActEdiTchGui Edit teaching guide of the course - 320. ActPrnCrsTT Show print view of the timetable - 321. ActEdiCrsTT Edit the timetable - 322. ActChgCrsTT Modify the timetable of the course - 323. ActChgCrsTT1stDay Change first day of week and show timetable of the course - 324. ActEdiSylLec Edit the syllabus of lectures - 325. ActEdiSylPra Edit the syllabus of practicals - 326. ActDelItmSylLec Remove a item from syllabus of lectures - 327. ActDelItmSylPra Remove a item from syllabus of practicals - 328. ActUp_IteSylLec Subir the posición of a subtree of the syllabus of lectures - 329. ActUp_IteSylPra Subir the posición of a subtree of the syllabus of practicals - 330. ActDwnIteSylLec Bajar the posición of a subtree of the syllabus of lectures - 331. ActDwnIteSylPra Bajar the posición of a subtree of the syllabus of practicals - 332. ActRgtIteSylLec Aumentar the level of a item of the syllabus of lectures - 333. ActRgtIteSylPra Aumentar the level of a item of the syllabus of practicals - 334. ActLftIteSylLec Disminuir the level of a item of the syllabus of lectures - 335. ActLftIteSylPra Disminuir the level of a item of the syllabus of practicals - 336. ActInsIteSylLec Insertar a new item in the syllabus of lectures - 337. ActInsIteSylPra Insertar a new item in the syllabus of practicals - 338. ActModIteSylLec Modify a item of the syllabus of lectures - 339. ActModIteSylPra Modify a item of the syllabus of practicals + 316. ActCrsSch Search for courses, teachers, documents... - 340. ActChgToSeeDocCrs Change to see course/group documents + 317. ActPrnCrsInf Print information on the course + 318. ActChgCrsLog Change log in method for this course + 319. ActEdiCrsInf Edit general information about the course + 320. ActEdiTchGui Edit teaching guide of the course + 321. ActPrnCrsTT Show print view of the timetable + 322. ActEdiCrsTT Edit the timetable + 323. ActChgCrsTT Modify the timetable of the course + 324. ActChgCrsTT1stDay Change first day of week and show timetable of the course + 325. ActEdiSylLec Edit the syllabus of lectures + 326. ActEdiSylPra Edit the syllabus of practicals + 327. ActDelItmSylLec Remove a item from syllabus of lectures + 328. ActDelItmSylPra Remove a item from syllabus of practicals + 329. ActUp_IteSylLec Subir the posición of a subtree of the syllabus of lectures + 330. ActUp_IteSylPra Subir the posición of a subtree of the syllabus of practicals + 331. ActDwnIteSylLec Bajar the posición of a subtree of the syllabus of lectures + 332. ActDwnIteSylPra Bajar the posición of a subtree of the syllabus of practicals + 333. ActRgtIteSylLec Aumentar the level of a item of the syllabus of lectures + 334. ActRgtIteSylPra Aumentar the level of a item of the syllabus of practicals + 335. ActLftIteSylLec Disminuir the level of a item of the syllabus of lectures + 336. ActLftIteSylPra Disminuir the level of a item of the syllabus of practicals + 337. ActInsIteSylLec Insertar a new item in the syllabus of lectures + 338. ActInsIteSylPra Insertar a new item in the syllabus of practicals + 339. ActModIteSylLec Modify a item of the syllabus of lectures + 340. ActModIteSylPra Modify a item of the syllabus of practicals - 341. ActSeeDocCrs See the files of the documents zone of the course - 342. ActExpSeeDocCrs Expand a folder in course documents - 343. ActConSeeDocCrs Contract a folder in course documents - 344. ActZIPSeeDocCrs Compress a folder in course documents - 345. ActReqDatSeeDocCrs Ask for metadata of a file of the documents zone of the course - 346. ActDowSeeDocCrs Download a file in documents zone of the course + 341. ActChgToSeeDocCrs Change to see course/group documents - 347. ActSeeDocGrp See the files of the documents zone of a group - 348. ActExpSeeDocGrp Expand a folder in group documents - 349. ActConSeeDocGrp Contract a folder in group documents - 350. ActZIPSeeDocGrp Compress a folder in group documents - 351. ActReqDatSeeDocGrp Ask for metadata of a file of the documents zone of a group - 352. ActDowSeeDocGrp Download a file of the documents zone of a group + 342. ActSeeDocCrs See the files of the documents zone of the course + 343. ActExpSeeDocCrs Expand a folder in course documents + 344. ActConSeeDocCrs Contract a folder in course documents + 345. ActZIPSeeDocCrs Compress a folder in course documents + 346. ActReqDatSeeDocCrs Ask for metadata of a file of the documents zone of the course + 347. ActDowSeeDocCrs Download a file in documents zone of the course - 353. ActChgToAdmDocCrs Change to administrate course/group documents + 348. ActSeeDocGrp See the files of the documents zone of a group + 349. ActExpSeeDocGrp Expand a folder in group documents + 350. ActConSeeDocGrp Contract a folder in group documents + 351. ActZIPSeeDocGrp Compress a folder in group documents + 352. ActReqDatSeeDocGrp Ask for metadata of a file of the documents zone of a group + 353. ActDowSeeDocGrp Download a file of the documents zone of a group - 354. ActAdmDocCrs Admin the files of the documents zone of the course - 355. ActReqRemFilDocCrs Request removal of a file in the documents zone of the course - 356. ActRemFilDocCrs Remove a file in the documents zone of the course - 357. ActRemFolDocCrs Remove a folder empty the documents zone of the course - 358. ActCopDocCrs Set source of copy in the documents zone of the course - 359. ActPasDocCrs Paste a folder or file in the documents zone of the course - 360. ActRemTreDocCrs Remove a folder no empty in the documents zone of the course - 361. ActFrmCreDocCrs Form to crear a folder or file in the documents zone of the course - 362. ActCreFolDocCrs Create a new folder in the documents zone of the course - 363. ActCreLnkDocCrs Create a new link in the documents zone of the course - 364. ActRenFolDocCrs Rename a folder in the documents zone of the course - 365. ActRcvFilDocCrsDZ Receive a file in the documents zone of the course using Dropzone.js - 366. ActRcvFilDocCrsCla Receive a file in the documents zone of the course using the classic way - 367. ActExpAdmDocCrs Expand a folder when administrating the documents zone of the course - 368. ActConAdmDocCrs Contract a folder when administrating the documents zone of the course - 369. ActZIPAdmDocCrs Compress a folder when administrating the documents zone of the course - 370. ActShoDocCrs Show hidden folder or file of the documents zone - 371. ActHidDocCrs Hide folder or file of the documents zone - 372. ActReqDatAdmDocCrs Ask for metadata of a file of the documents zone - 373. ActChgDatAdmDocCrs Change metadata of a file of the documents zone - 374. ActDowAdmDocCrs Download a file of the documents zone + 354. ActChgToAdmDocCrs Change to administrate course/group documents - 375. ActAdmDocGrp Admin the files of the documents zone of a group - 376. ActReqRemFilDocGrp Request removal of a file in the documents zone of a group - 377. ActRemFilDocGrp Remove a file in the documents zone of a group - 378. ActRemFolDocGrp Remove a folder empty in the documents zone of a group - 379. ActCopDocGrp Set source of copy in the documents zone of a group - 380. ActPasDocGrp Paste a folder or file in the documents zone of a group - 381. ActRemTreDocGrp Remove a folder no empty in the documents zone of a group - 382. ActFrmCreDocGrp Form to crear a folder or file in the documents zone of a group - 383. ActCreFolDocGrp Create a new folder in the documents zone of a group - 384. ActCreLnkDocGrp Create a new link in the documents zone of a group - 385. ActRenFolDocGrp Rename a folder in the documents zone of a group - 386. ActRcvFilDocGrpDZ Receive a file in the documents zone of a group using Dropzone.js - 387. ActRcvFilDocGrpCla Receive a file in the documents zone of a group using the classic way - 388. ActExpAdmDocGrp Expand a folder when administrating the documents zone of a group - 389. ActConAdmDocGrp Contract a folder when administrating the documents zone of a group - 390. ActZIPAdmDocGrp Compress a folder when administrating the documents zone of a group - 391. ActShoDocGrp Show hidden folder or file of download - 392. ActHidDocGrp Hide folder or file of download - 393. ActReqDatAdmDocGrp Ask for metadata of a file of the documents zone of a group - 394. ActChgDatAdmDocGrp Change metadata of a file of the documents zone of a group - 395. ActDowAdmDocGrp Download a file of the documents zone of a group + 355. ActAdmDocCrs Admin the files of the documents zone of the course + 356. ActReqRemFilDocCrs Request removal of a file in the documents zone of the course + 357. ActRemFilDocCrs Remove a file in the documents zone of the course + 358. ActRemFolDocCrs Remove a folder empty the documents zone of the course + 359. ActCopDocCrs Set source of copy in the documents zone of the course + 360. ActPasDocCrs Paste a folder or file in the documents zone of the course + 361. ActRemTreDocCrs Remove a folder no empty in the documents zone of the course + 362. ActFrmCreDocCrs Form to crear a folder or file in the documents zone of the course + 363. ActCreFolDocCrs Create a new folder in the documents zone of the course + 364. ActCreLnkDocCrs Create a new link in the documents zone of the course + 365. ActRenFolDocCrs Rename a folder in the documents zone of the course + 366. ActRcvFilDocCrsDZ Receive a file in the documents zone of the course using Dropzone.js + 367. ActRcvFilDocCrsCla Receive a file in the documents zone of the course using the classic way + 368. ActExpAdmDocCrs Expand a folder when administrating the documents zone of the course + 369. ActConAdmDocCrs Contract a folder when administrating the documents zone of the course + 370. ActZIPAdmDocCrs Compress a folder when administrating the documents zone of the course + 371. ActShoDocCrs Show hidden folder or file of the documents zone + 372. ActHidDocCrs Hide folder or file of the documents zone + 373. ActReqDatAdmDocCrs Ask for metadata of a file of the documents zone + 374. ActChgDatAdmDocCrs Change metadata of a file of the documents zone + 375. ActDowAdmDocCrs Download a file of the documents zone - 396. ActChgToAdmSha Change to administrate shared files of the course/group + 376. ActAdmDocGrp Admin the files of the documents zone of a group + 377. ActReqRemFilDocGrp Request removal of a file in the documents zone of a group + 378. ActRemFilDocGrp Remove a file in the documents zone of a group + 379. ActRemFolDocGrp Remove a folder empty in the documents zone of a group + 380. ActCopDocGrp Set source of copy in the documents zone of a group + 381. ActPasDocGrp Paste a folder or file in the documents zone of a group + 382. ActRemTreDocGrp Remove a folder no empty in the documents zone of a group + 383. ActFrmCreDocGrp Form to crear a folder or file in the documents zone of a group + 384. ActCreFolDocGrp Create a new folder in the documents zone of a group + 385. ActCreLnkDocGrp Create a new link in the documents zone of a group + 386. ActRenFolDocGrp Rename a folder in the documents zone of a group + 387. ActRcvFilDocGrpDZ Receive a file in the documents zone of a group using Dropzone.js + 388. ActRcvFilDocGrpCla Receive a file in the documents zone of a group using the classic way + 389. ActExpAdmDocGrp Expand a folder when administrating the documents zone of a group + 390. ActConAdmDocGrp Contract a folder when administrating the documents zone of a group + 391. ActZIPAdmDocGrp Compress a folder when administrating the documents zone of a group + 392. ActShoDocGrp Show hidden folder or file of download + 393. ActHidDocGrp Hide folder or file of download + 394. ActReqDatAdmDocGrp Ask for metadata of a file of the documents zone of a group + 395. ActChgDatAdmDocGrp Change metadata of a file of the documents zone of a group + 396. ActDowAdmDocGrp Download a file of the documents zone of a group - 397. ActAdmShaCrs Admin the shared files zone of the course - 398. ActReqRemFilShaCrs Request removal of a shared file of the course - 399. ActRemFilShaCrs Remove a shared file of the course - 400. ActRemFolShaCrs Remove a folder empty común of the course - 401. ActCopShaCrs Set source of copy in common zone of the course - 402. ActPasShaCrs Paste a folder or file in common zone of the course - 403. ActRemTreShaCrs Remove a folder no empty of common zone of the course - 404. ActFrmCreShaCrs Form to crear a folder or file in common zone of the course - 405. ActCreFolShaCrs Create a new folder in common zone of the course - 406. ActCreLnkShaCrs Create a new link in common zone of the course - 407. ActRenFolShaCrs Rename a folder in common zone of the course - 408. ActRcvFilShaCrsDZ Receive a file in common zone of the course using Dropzone.js - 409. ActRcvFilShaCrsCla Receive a file in common zone of the course using the classic way - 410. ActExpShaCrs Expand a folder in common zone of the course - 411. ActConShaCrs Contract a folder in common zone of the course - 412. ActZIPShaCrs Compress a folder in common zone of the course - 413. ActReqDatShaCrs Ask for metadata of a file of the common zone of the course - 414. ActChgDatShaCrs Change metadata of a file of the common zone of the course - 415. ActDowShaCrs Download a file of the common zone of the course + 397. ActChgToAdmTch Change to administrate teachers' files of the course/group - 416. ActAdmShaGrp Admin the shared files zone of a group - 417. ActReqRemFilShaGrp Request removal of a shared file of a group - 418. ActRemFilShaGrp Remove a shared file of a group - 419. ActRemFolShaGrp Remove a folder empty común of a group - 420. ActCopShaGrp Set source of copy in common zone of a group - 421. ActPasShaGrp Paste a folder or file in common zone of a group - 422. ActRemTreShaGrp Remove a folder no empty of common zone of a group - 423. ActFrmCreShaGrp Form to crear a folder or file in common zone of a group - 424. ActCreFolShaGrp Create a new folder in common zone of a group - 425. ActCreLnkShaGrp Create a new link in common zone of a group - 426. ActRenFolShaGrp Rename a folder in common zone of a group - 427. ActRcvFilShaGrpDZ Receive a file in common zone of a group using Dropzone.js - 428. ActRcvFilShaGrpCla Receive a file in common zone of a group using the classic way - 429. ActExpShaGrp Expand a folder in common zone of a group - 430. ActConShaGrp Contract a folder in common zone of a group - 431. ActZIPShaGrp Compress a folder in common zone of a group - 432. ActReqDatShaGrp Ask for metadata of a file of the common zone of a group - 433. ActChgDatShaGrp Change metadata of a file of the common zone of a group - 434. ActDowShaGrp Download a file of the common zone of a group + 398. ActAdmTchCrs Admin the teachers' files zone of the course + 399. ActReqRemFilTchCrs Request removal of a teachers' file of the course + 400. ActRemFilTchCrs Remove a teachers' file of the course + 401. ActRemFolTchCrs Remove an empty teachers' folder of the course + 402. ActCopTchCrs Set source of teachers' zone of the course + 403. ActPasTchCrs Paste a folder or file in teachers' zone of the course + 404. ActRemTreTchCrs Remove a folder no empty of teachers' zone of the course + 405. ActFrmCreTchCrs Form to crear a folder or file in teachers' zone of the course + 406. ActCreFolTchCrs Create a new folder in teachers' zone of the course + 407. ActCreLnkTchCrs Create a new link in teachers' zone of the course + 408. ActRenFolTchCrs Rename a folder in teachers' zone of the course + 409. ActRcvFilTchCrsDZ Receive a file in teachers' zone of the course using Dropzone.js + 410. ActRcvFilTchCrsCla Receive a file in teachers' zone of the course using the classic way + 411. ActExpTchCrs Expand a folder in teachers' zone of the course + 412. ActConTchCrs Contract a folder in teachers' zone of the course + 413. ActZIPTchCrs Compress a folder in teachers' zone of the course + 414. ActReqDatTchCrs Ask for metadata of a file of the teachers' zone of the course + 415. ActChgDatTchCrs Change metadata of a file of the teachers' zone of the course + 416. ActDowTchCrs Download a file of the teachers' zone of the course - 435. ActEdiBib Edit the bibliography - 436. ActEdiFAQ Edit the FAQ - 437. ActEdiCrsLnk Edit the links relacionados with the course - 438. ActChgFrcReaCrsInf Change force students to read course info - 439. ActChgFrcReaTchGui Change force students to read teaching guide - 440. ActChgFrcReaSylLec Change force students to read lectures syllabus - 441. ActChgFrcReaSylPra Change force students to read practicals syllabus - 442. ActChgFrcReaBib Change force students to read bibliography - 443. ActChgFrcReaFAQ Change force students to read FAQ - 444. ActChgFrcReaCrsLnk Change force students to read links - 445. ActChgHavReaCrsInf Change if I have read course info - 446. ActChgHavReaTchGui Change if I have read teaching guide - 447. ActChgHavReaSylLec Change if I have read lectures syllabus - 448. ActChgHavReaSylPra Change if I have read practicals syllabus - 449. ActChgHavReaBib Change if I have read bibliography - 450. ActChgHavReaFAQ Change if I have read FAQ - 451. ActChgHavReaCrsLnk Change if I have read links - 452. ActSelInfSrcCrsInf Select the type of info shown in the general information about the course - 453. ActSelInfSrcTchGui Select the type of info shown in the teaching guide - 454. ActSelInfSrcSylLec Select the type of info shown in the lectures syllabus - 455. ActSelInfSrcSylPra Select the type of info shown in the practicals syllabus - 456. ActSelInfSrcBib Select the type of info shown in the bibliography - 457. ActSelInfSrcFAQ Select the type of info shown in the FAQ - 458. ActSelInfSrcCrsLnk Select the type of info shown in the links - 459. ActRcvURLCrsInf Receive a link a the general information about the course - 460. ActRcvURLTchGui Receive a link a the teaching guide - 461. ActRcvURLSylLec Receive a link al syllabus of lectures - 462. ActRcvURLSylPra Receive a link al syllabus of practicals - 463. ActRcvURLBib Receive a link a bibliography - 464. ActRcvURLFAQ Receive a link a FAQ - 465. ActRcvURLCrsLnk Receive a link a links - 466. ActRcvPagCrsInf Receive a page with the general information about the course - 467. ActRcvPagTchGui Receive a page with the teaching guide - 468. ActRcvPagSylLec Receive a page with the syllabus of lectures - 469. ActRcvPagSylPra Receive a page with the syllabus of practicals - 470. ActRcvPagBib Receive a page with bibliography - 471. ActRcvPagFAQ Receive a page with FAQ - 472. ActRcvPagCrsLnk Receive a page with links - 473. ActEditorCrsInf Integrated editor of the general information about the course - 474. ActEditorTchGui Integrated editor of the teaching guide - 475. ActEditorSylLec Integrated editor of the syllabus of lectures - 476. ActEditorSylPra Integrated editor of the syllabus of practicals - 477. ActEditorBib Integrated editor of bibliography - 478. ActEditorFAQ Integrated editor of FAQ - 479. ActEditorCrsLnk Integrated editor of links - 480. ActPlaTxtEdiCrsInf Editor of plain text of the general information about the course - 481. ActPlaTxtEdiTchGui Editor of plain text of the teaching guide - 482. ActPlaTxtEdiSylLec Editor of plain text of the syllabus of lectures - 483. ActPlaTxtEdiSylPra Editor of plain text of the syllabus of practicals - 484. ActPlaTxtEdiBib Editor of plain text of the bibliography - 485. ActPlaTxtEdiFAQ Editor of plain text of the FAQ - 486. ActPlaTxtEdiCrsLnk Editor of plain text of the links - 487. ActRchTxtEdiCrsInf Editor of plain text of the general information about the course - 488. ActRchTxtEdiTchGui Editor of plain text of the teaching guide - 489. ActRchTxtEdiSylLec Editor of plain text of the syllabus of lectures - 490. ActRchTxtEdiSylPra Editor of plain text of the syllabus of practicals - 491. ActRchTxtEdiBib Editor of plain text of the bibliography - 492. ActRchTxtEdiFAQ Editor of plain text of the FAQ - 493. ActRchTxtEdiCrsLnk Editor of plain text of the links - 494. ActRcvPlaTxtCrsInf Receive and change the plain text of the general information about the course - 495. ActRcvPlaTxtTchGui Receive and change the plain text of the teaching guide - 496. ActRcvPlaTxtSylLec Receive and change the plain text of the syllabus of lectures - 497. ActRcvPlaTxtSylPra Receive and change the plain text of the syllabus of practicals - 498. ActRcvPlaTxtBib Receive and change the plain text of the bibliography - 499. ActRcvPlaTxtFAQ Receive and change the plain text of the FAQ - 500. ActRcvPlaTxtCrsLnk Receive and change the plain text of the links - 501. ActRcvPlaTxtCrsInf Receive and change the rich text of the general information about the course - 502. ActRcvPlaTxtTchGui Receive and change the rich text of the teaching guide - 503. ActRcvPlaTxtSylLec Receive and change the rich text of the syllabus of lectures - 504. ActRcvPlaTxtSylPra Receive and change the rich text of the syllabus of practicals - 505. ActRcvPlaTxtBib Receive and change the rich text of the bibliography - 506. ActRcvPlaTxtFAQ Receive and change the rich text of the FAQ - 507. ActRcvPlaTxtCrsLnk Receive and change the rich text of the links + 417. ActAdmTchGrp Admin the teachers' files zone of a group + 418. ActReqRemFilTchGrp Request removal of a teachers' file of a group + 419. ActRemFilTchGrp Remove a teachers' file of a group + 420. ActRemFolTchGrp Remove an empty teachers' folder of a group + 421. ActCopTchGrp Set source of copy in teachers' zone of a group + 422. ActPasTchGrp Paste a folder or file in teachers' zone of a group + 423. ActRemTreTchGrp Remove a folder no empty of teachers' zone of a group + 424. ActFrmCreTchGrp Form to crear a folder or file in teachers' zone of a group + 425. ActCreFolTchGrp Create a new folder in teachers' zone of a group + 426. ActCreLnkTchGrp Create a new link in teachers' zone of a group + 427. ActRenFolTchGrp Rename a folder in teachers' zone of a group + 428. ActRcvFilTchGrpDZ Receive a file in teachers' zone of a group using Dropzone.js + 429. ActRcvFilTchGrpCla Receive a file in teachers' zone of a group using the classic way + 430. ActExpTchGrp Expand a folder in teachers' zone of a group + 431. ActConTchGrp Contract a folder in teachers' zone of a group + 432. ActZIPTchGrp Compress a folder in teachers' zone of a group + 433. ActReqDatTchGrp Ask for metadata of a file of the teachers' zone of a group + 434. ActChgDatTchGrp Change metadata of a file of the teachers' zone of a group + 435. ActDowTchGrp Download a file of the teachers' zone of a group + + 436. ActChgToAdmSha Change to administrate shared files of the course/group + + 437. ActAdmShaCrs Admin the shared files zone of the course + 438. ActReqRemFilShaCrs Request removal of a shared file of the course + 439. ActRemFilShaCrs Remove a shared file of the course + 440. ActRemFolShaCrs Remove a empty shared folder of the course + 441. ActCopShaCrs Set source of copy in shared zone of the course + 442. ActPasShaCrs Paste a folder or file in shared zone of the course + 443. ActRemTreShaCrs Remove a folder no empty of shared zone of the course + 444. ActFrmCreShaCrs Form to crear a folder or file in shared zone of the course + 445. ActCreFolShaCrs Create a new folder in shared zone of the course + 446. ActCreLnkShaCrs Create a new link in shared zone of the course + 447. ActRenFolShaCrs Rename a folder in shared zone of the course + 448. ActRcvFilShaCrsDZ Receive a file in shared zone of the course using Dropzone.js + 449. ActRcvFilShaCrsCla Receive a file in shared zone of the course using the classic way + 450. ActExpShaCrs Expand a folder in shared zone of the course + 451. ActConShaCrs Contract a folder in shared zone of the course + 452. ActZIPShaCrs Compress a folder in shared zone of the course + 453. ActReqDatShaCrs Ask for metadata of a file of the shared zone of the course + 454. ActChgDatShaCrs Change metadata of a file of the shared zone of the course + 455. ActDowShaCrs Download a file of the shared zone of the course + + 456. ActAdmShaGrp Admin the shared files zone of a group + 457. ActReqRemFilShaGrp Request removal of a shared file of a group + 458. ActRemFilShaGrp Remove a shared file of a group + 459. ActRemFolShaGrp Remove a folder empty común of a group + 460. ActCopShaGrp Set source of copy in shared zone of a group + 461. ActPasShaGrp Paste a folder or file in shared zone of a group + 462. ActRemTreShaGrp Remove a folder no empty of shared zone of a group + 463. ActFrmCreShaGrp Form to crear a folder or file in shared zone of a group + 464. ActCreFolShaGrp Create a new folder in shared zone of a group + 465. ActCreLnkShaGrp Create a new link in shared zone of a group + 466. ActRenFolShaGrp Rename a folder in shared zone of a group + 467. ActRcvFilShaGrpDZ Receive a file in shared zone of a group using Dropzone.js + 468. ActRcvFilShaGrpCla Receive a file in shared zone of a group using the classic way + 469. ActExpShaGrp Expand a folder in shared zone of a group + 470. ActConShaGrp Contract a folder in shared zone of a group + 471. ActZIPShaGrp Compress a folder in shared zone of a group + 472. ActReqDatShaGrp Ask for metadata of a file of the shared zone of a group + 473. ActChgDatShaGrp Change metadata of a file of the shared zone of a group + 474. ActDowShaGrp Download a file of the shared zone of a group + + 475. ActEdiBib Edit the bibliography + 476. ActEdiFAQ Edit the FAQ + 477. ActEdiCrsLnk Edit the links relacionados with the course + 478. ActChgFrcReaCrsInf Change force students to read course info + 479. ActChgFrcReaTchGui Change force students to read teaching guide + 480. ActChgFrcReaSylLec Change force students to read lectures syllabus + 481. ActChgFrcReaSylPra Change force students to read practicals syllabus + 482. ActChgFrcReaBib Change force students to read bibliography + 483. ActChgFrcReaFAQ Change force students to read FAQ + 484. ActChgFrcReaCrsLnk Change force students to read links + 485. ActChgHavReaCrsInf Change if I have read course info + 486. ActChgHavReaTchGui Change if I have read teaching guide + 487. ActChgHavReaSylLec Change if I have read lectures syllabus + 488. ActChgHavReaSylPra Change if I have read practicals syllabus + 489. ActChgHavReaBib Change if I have read bibliography + 490. ActChgHavReaFAQ Change if I have read FAQ + 491. ActChgHavReaCrsLnk Change if I have read links + 492. ActSelInfSrcCrsInf Select the type of info shown in the general information about the course + 493. ActSelInfSrcTchGui Select the type of info shown in the teaching guide + 494. ActSelInfSrcSylLec Select the type of info shown in the lectures syllabus + 495. ActSelInfSrcSylPra Select the type of info shown in the practicals syllabus + 496. ActSelInfSrcBib Select the type of info shown in the bibliography + 497. ActSelInfSrcFAQ Select the type of info shown in the FAQ + 498. ActSelInfSrcCrsLnk Select the type of info shown in the links + 499. ActRcvURLCrsInf Receive a link a the general information about the course + 500. ActRcvURLTchGui Receive a link a the teaching guide + 501. ActRcvURLSylLec Receive a link al syllabus of lectures + 502. ActRcvURLSylPra Receive a link al syllabus of practicals + 503. ActRcvURLBib Receive a link a bibliography + 504. ActRcvURLFAQ Receive a link a FAQ + 505. ActRcvURLCrsLnk Receive a link a links + 506. ActRcvPagCrsInf Receive a page with the general information about the course + 507. ActRcvPagTchGui Receive a page with the teaching guide + 508. ActRcvPagSylLec Receive a page with the syllabus of lectures + 509. ActRcvPagSylPra Receive a page with the syllabus of practicals + 510. ActRcvPagBib Receive a page with bibliography + 511. ActRcvPagFAQ Receive a page with FAQ + 512. ActRcvPagCrsLnk Receive a page with links + 513. ActEditorCrsInf Integrated editor of the general information about the course + 514. ActEditorTchGui Integrated editor of the teaching guide + 515. ActEditorSylLec Integrated editor of the syllabus of lectures + 516. ActEditorSylPra Integrated editor of the syllabus of practicals + 517. ActEditorBib Integrated editor of bibliography + 518. ActEditorFAQ Integrated editor of FAQ + 519. ActEditorCrsLnk Integrated editor of links + 520. ActPlaTxtEdiCrsInf Editor of plain text of the general information about the course + 521. ActPlaTxtEdiTchGui Editor of plain text of the teaching guide + 522. ActPlaTxtEdiSylLec Editor of plain text of the syllabus of lectures + 523. ActPlaTxtEdiSylPra Editor of plain text of the syllabus of practicals + 524. ActPlaTxtEdiBib Editor of plain text of the bibliography + 525. ActPlaTxtEdiFAQ Editor of plain text of the FAQ + 526. ActPlaTxtEdiCrsLnk Editor of plain text of the links + 527. ActRchTxtEdiCrsInf Editor of plain text of the general information about the course + 528. ActRchTxtEdiTchGui Editor of plain text of the teaching guide + 529. ActRchTxtEdiSylLec Editor of plain text of the syllabus of lectures + 530. ActRchTxtEdiSylPra Editor of plain text of the syllabus of practicals + 531. ActRchTxtEdiBib Editor of plain text of the bibliography + 532. ActRchTxtEdiFAQ Editor of plain text of the FAQ + 533. ActRchTxtEdiCrsLnk Editor of plain text of the links + 534. ActRcvPlaTxtCrsInf Receive and change the plain text of the general information about the course + 535. ActRcvPlaTxtTchGui Receive and change the plain text of the teaching guide + 536. ActRcvPlaTxtSylLec Receive and change the plain text of the syllabus of lectures + 537. ActRcvPlaTxtSylPra Receive and change the plain text of the syllabus of practicals + 538. ActRcvPlaTxtBib Receive and change the plain text of the bibliography + 539. ActRcvPlaTxtFAQ Receive and change the plain text of the FAQ + 540. ActRcvPlaTxtCrsLnk Receive and change the plain text of the links + 541. ActRcvPlaTxtCrsInf Receive and change the rich text of the general information about the course + 542. ActRcvPlaTxtTchGui Receive and change the rich text of the teaching guide + 543. ActRcvPlaTxtSylLec Receive and change the rich text of the syllabus of lectures + 544. ActRcvPlaTxtSylPra Receive and change the rich text of the syllabus of practicals + 545. ActRcvPlaTxtBib Receive and change the rich text of the bibliography + 546. ActRcvPlaTxtFAQ Receive and change the rich text of the FAQ + 547. ActRcvPlaTxtCrsLnk Receive and change the rich text of the links Assessment: - 508. ActSeeAss Show the assessment system - 509. ActSeeAsg Show assignments - 510. ActAdmAsgWrkUsr One user sends works of the course - 511. ActReqAsgWrkCrs A teacher requests edition of works sent to the course - 512. ActReqTst Request a test of self-assesment - 513. ActSeeCal Show the academic calendar of the course with exam announcements - 514. ActSeeExaAnn Show the exam announcements - 515. ActSeeAdmMrk Marks zone (see or admin) + 548. ActSeeAss Show the assessment system + 549. ActSeeAsg Show assignments + 550. ActAdmAsgWrkUsr One user sends works of the course + 551. ActReqAsgWrkCrs A teacher requests edition of works sent to the course + 552. ActReqTst Request a test of self-assesment + 553. ActSeeCal Show the academic calendar of the course with exam announcements + 554. ActSeeExaAnn Show the exam announcements + 555. ActSeeAdmMrk Marks zone (see or admin) - 516. ActEdiAss Edit the assessment system - 517. ActChgFrcReaAss Change force students to read assessment system - 518. ActChgHavReaAss Change if I have read assessment system - 519. ActSelInfSrcAss Selec. type of assessment - 520. ActRcvURLAss Receive a link a assessment - 521. ActRcvPagAss Receive a page with assessment - 522. ActEditorAss Integrated editor of assessment - 523. ActPlaTxtEdiAss Editor of plain text of assessment - 524. ActRchTxtEdiAss Editor of rich text of assessment - 525. ActRcvPlaTxtAss Receive and change the plain text of the assessment system - 526. ActRcvRchTxtAss Receive and change the rich text of the assessment system - 527. ActFrmNewAsg Form to create a new assignment - 528. ActEdiOneAsg Edit one assignment - 529. ActNewAsg Create new assignment - 530. ActChgAsg Modify data of an existing assignment - 531. ActReqRemAsg Request the removal of an assignment - 532. ActRemAsg Remove assignment - 533. ActHidAsg Hide assignment - 534. ActShoAsg Show assignment - 535. ActAdmAsgWrkCrs Edit all the works sent to the course - 536. ActReqRemFilAsgUsr Request removal of a file of assignments from a user - 537. ActRemFilAsgUsr Remove a file of assignments from a user - 538. ActRemFolAsgUsr Remove an empty folder of assignments of a user - 539. ActCopAsgUsr Set origin of copy in assignments of a user - 540. ActPasAsgUsr Paste a file or folder of assignments of a user - 541. ActRemTreAsgUsr Remove a not empty folder of assignments of a user - 542. ActFrmCreAsgUsr Form to create a new folder or file of assignments of a user - 543. ActCreFolAsgUsr Create a new folder of assignments of a user - 544. ActCreLnkAsgUsr Create a new link of assignments of a user - 545. ActRenFolAsgUsr Rename a folder of assignments of a user - 546. ActRcvFilAsgUsrDZ Receive a new file of assignments of a user using Dropzone.js - 547. ActRcvFilAsgUsrCla Receive a new file of assignments of a user using the classic way - 548. ActExpAsgUsr Expand a folder of assignments of a user - 549. ActConAsgUsr Contract a folder of assignments of a user - 550. ActZIPAsgUsr Compress a folder of assignments of a user - 551. ActReqDatAsgUsr Ask for metadata of a file of assignments of a user - 552. ActChgDatAsgUsr Change metadata of a file of assignments of a user - 553. ActDowAsgUsr Download a file of assignments of a user - 554. ActReqRemFilWrkUsr Request removal of a file of works from a user - 555. ActRemFilWrkUsr Remove a file of works from a user - 556. ActRemFolWrkUsr Remove an empty folder of works of a user - 557. ActCopWrkUsr Set origin of copy in works of a user - 558. ActPasWrkUsr Paste a file or folder of works of a user - 559. ActRemTreWrkUsr Remove a not empty folder of works of a user - 560. ActFrmCreWrkUsr Form to create a new folder or file of works of a user - 561. ActCreFolWrkUsr Create a new folder of works of a user - 562. ActCreLnkWrkUsr Create a new link of works of a user - 563. ActRenFolWrkUsr Rename a folder of works of a user - 564. ActRcvFilWrkUsrDZ Receive a new file of works of a user using Dropzone.js - 565. ActRcvFilWrkUsrCla Receive a new file of works of a user using the classic way - 566. ActExpWrkUsr Expand a folder of works of a user - 567. ActConWrkUsr Contract a folder of works of a user - 568. ActZIPWrkUsr Compress a folder of works of a user - 569. ActReqDatWrkUsr Ask for metadata of a file of works of a user - 570. ActChgDatWrkUsr Change metadata of a file of works of a user - 571. ActDowWrkUsr Download a file of works of a user - 572. ActReqRemFilAsgCrs Request removal of a file of assignments in the course - 573. ActRemFilAsgCrs Remove a file of assignments in the course - 574. ActRemFolAsgCrs Remove an empty folder of assignments in the course - 575. ActCopAsgCrs Set origin of copy in assignments in the course - 576. ActPasAsgCrs Paste a file or folder of assignments in the course - 577. ActRemTreAsgCrs Remove a not empty folder of assignments in the course - 578. ActFrmCreAsgCrs Form to create a new folder or file of assignments in the course - 579. ActCreFolAsgCrs Create a new folder of assignments in the course - 580. ActCreLnkAsgCrs Create a new link of assignments in the course - 581. ActRenFolAsgCrs Rename a folder of assignments in the course - 582. ActRcvFilAsgCrsDZ Receive a file of assignments in the course using Dropzone.js - 583. ActRcvFilAsgCrsCla Receive a file of assignments in the course using the classic way - 584. ActExpAsgCrs Expand a folder of assignments in a course - 585. ActConAsgCrs Contract a folder of assignments in a course - 586. ActZIPAsgCrs Compress a folder of assignments in a course - 587. ActReqDatAsgCrs Ask for metadata of a file of assignments in a course - 588. ActChgDatAsgCrs Change metadata of a file of assignments in a course - 589. ActDowAsgCrs Download a file of assignments in a course - 590. ActReqRemFilWrkCrs Request removal of a file of works in the course - 591. ActRemFilWrkCrs Remove a file of works in the course - 592. ActRemFolWrkCrs Remove an empty folder of works in the course - 593. ActCopWrkCrs Set origin of copy in works in the course - 594. ActPasWrkCrs Paste a file or folder of works in the course - 595. ActRemTreWrkCrs Remove a not empty folder of works in the course - 596. ActFrmCreWrkCrs Form to create a new folder or file of works in the course - 597. ActCreFolWrkCrs Create a new folder of works in the course - 598. ActCreLnkWrkCrs Create a new link of works in the course - 599. ActRenFolWrkCrs Rename a folder of works in the course - 600. ActRcvFilWrkCrsDZ Receive a file of works in the course using Dropzone.js - 601. ActRcvFilWrkCrsCla Receive a file of works in the course using the classic way - 602. ActExpWrkCrs Expand a folder of works in a course - 603. ActConWrkCrs Contract a folder of works in a course - 604. ActZIPWrkCrs Compress a folder of works in a course - 605. ActReqDatWrkCrs Ask for metadata of a file of works in a course - 606. ActChgDatWrkCrs Change metadata of a file of works in a course - 607. ActDowWrkCrs Download a file of works in a course - 608. ActSeeTst Show the seft-assessment test - 609. ActAssTst Assess a self-assessment test - 610. ActEdiTstQst Request the edition of self-assessment questions - 611. ActEdiOneTstQst Edit one self-assesment test question - 612. ActReqImpTstQst Put form to ask for an XML with test questions to import - 613. ActImpTstQst Import test questions from XML file - 614. ActLstTstQst List for edition several self-assessment test questions - 615. ActRcvTstQst Receive a question of self-assessment - 616. ActShfTstQst Change shuffle of of a question of self-assessment - 617. ActReqRemTstQst Request removing a self-assesment test question - 618. ActRemTstQst Remove a self-assesment test question - 619. ActCfgTst Request renaming of tags of questions of self-assesment - 620. ActEnableTag Enable a tag - 621. ActDisableTag Disable a tag - 622. ActRenTag Rename a tag - 623. ActRcvCfgTst Receive configuration of test - 624. ActReqSeeMyTstExa Select range of dates to see my results of test exams - 625. ActSeeMyTstExa Show my test results - 626. ActReqSeeUsrTstExa Select users and range of dates to see results of test exams - 627. ActSeeUsrTstExa Show test results of several users - 628. ActSeeOneTstExaMe Show one test exam of me as student - 629. ActSeeOneTstExaOth Show one test exam of other user + 556. ActEdiAss Edit the assessment system + 557. ActChgFrcReaAss Change force students to read assessment system + 558. ActChgHavReaAss Change if I have read assessment system + 559. ActSelInfSrcAss Selec. type of assessment + 560. ActRcvURLAss Receive a link a assessment + 561. ActRcvPagAss Receive a page with assessment + 562. ActEditorAss Integrated editor of assessment + 563. ActPlaTxtEdiAss Editor of plain text of assessment + 564. ActRchTxtEdiAss Editor of rich text of assessment + 565. ActRcvPlaTxtAss Receive and change the plain text of the assessment system + 566. ActRcvRchTxtAss Receive and change the rich text of the assessment system + 567. ActFrmNewAsg Form to create a new assignment + 568. ActEdiOneAsg Edit one assignment + 569. ActNewAsg Create new assignment + 570. ActChgAsg Modify data of an existing assignment + 571. ActReqRemAsg Request the removal of an assignment + 572. ActRemAsg Remove assignment + 573. ActHidAsg Hide assignment + 574. ActShoAsg Show assignment + 575. ActAdmAsgWrkCrs Edit all the works sent to the course + 576. ActReqRemFilAsgUsr Request removal of a file of assignments from a user + 577. ActRemFilAsgUsr Remove a file of assignments from a user + 578. ActRemFolAsgUsr Remove an empty folder of assignments of a user + 579. ActCopAsgUsr Set origin of copy in assignments of a user + 580. ActPasAsgUsr Paste a file or folder of assignments of a user + 581. ActRemTreAsgUsr Remove a not empty folder of assignments of a user + 582. ActFrmCreAsgUsr Form to create a new folder or file of assignments of a user + 583. ActCreFolAsgUsr Create a new folder of assignments of a user + 584. ActCreLnkAsgUsr Create a new link of assignments of a user + 585. ActRenFolAsgUsr Rename a folder of assignments of a user + 586. ActRcvFilAsgUsrDZ Receive a new file of assignments of a user using Dropzone.js + 587. ActRcvFilAsgUsrCla Receive a new file of assignments of a user using the classic way + 588. ActExpAsgUsr Expand a folder of assignments of a user + 589. ActConAsgUsr Contract a folder of assignments of a user + 590. ActZIPAsgUsr Compress a folder of assignments of a user + 591. ActReqDatAsgUsr Ask for metadata of a file of assignments of a user + 592. ActChgDatAsgUsr Change metadata of a file of assignments of a user + 593. ActDowAsgUsr Download a file of assignments of a user + 594. ActReqRemFilWrkUsr Request removal of a file of works from a user + 595. ActRemFilWrkUsr Remove a file of works from a user + 596. ActRemFolWrkUsr Remove an empty folder of works of a user + 597. ActCopWrkUsr Set origin of copy in works of a user + 598. ActPasWrkUsr Paste a file or folder of works of a user + 599. ActRemTreWrkUsr Remove a not empty folder of works of a user + 600. ActFrmCreWrkUsr Form to create a new folder or file of works of a user + 601. ActCreFolWrkUsr Create a new folder of works of a user + 602. ActCreLnkWrkUsr Create a new link of works of a user + 603. ActRenFolWrkUsr Rename a folder of works of a user + 604. ActRcvFilWrkUsrDZ Receive a new file of works of a user using Dropzone.js + 605. ActRcvFilWrkUsrCla Receive a new file of works of a user using the classic way + 606. ActExpWrkUsr Expand a folder of works of a user + 607. ActConWrkUsr Contract a folder of works of a user + 608. ActZIPWrkUsr Compress a folder of works of a user + 609. ActReqDatWrkUsr Ask for metadata of a file of works of a user + 610. ActChgDatWrkUsr Change metadata of a file of works of a user + 611. ActDowWrkUsr Download a file of works of a user + 612. ActReqRemFilAsgCrs Request removal of a file of assignments in the course + 613. ActRemFilAsgCrs Remove a file of assignments in the course + 614. ActRemFolAsgCrs Remove an empty folder of assignments in the course + 615. ActCopAsgCrs Set origin of copy in assignments in the course + 616. ActPasAsgCrs Paste a file or folder of assignments in the course + 617. ActRemTreAsgCrs Remove a not empty folder of assignments in the course + 618. ActFrmCreAsgCrs Form to create a new folder or file of assignments in the course + 619. ActCreFolAsgCrs Create a new folder of assignments in the course + 620. ActCreLnkAsgCrs Create a new link of assignments in the course + 621. ActRenFolAsgCrs Rename a folder of assignments in the course + 622. ActRcvFilAsgCrsDZ Receive a file of assignments in the course using Dropzone.js + 623. ActRcvFilAsgCrsCla Receive a file of assignments in the course using the classic way + 624. ActExpAsgCrs Expand a folder of assignments in a course + 625. ActConAsgCrs Contract a folder of assignments in a course + 626. ActZIPAsgCrs Compress a folder of assignments in a course + 627. ActReqDatAsgCrs Ask for metadata of a file of assignments in a course + 628. ActChgDatAsgCrs Change metadata of a file of assignments in a course + 629. ActDowAsgCrs Download a file of assignments in a course + 630. ActReqRemFilWrkCrs Request removal of a file of works in the course + 631. ActRemFilWrkCrs Remove a file of works in the course + 632. ActRemFolWrkCrs Remove an empty folder of works in the course + 633. ActCopWrkCrs Set origin of copy in works in the course + 634. ActPasWrkCrs Paste a file or folder of works in the course + 635. ActRemTreWrkCrs Remove a not empty folder of works in the course + 636. ActFrmCreWrkCrs Form to create a new folder or file of works in the course + 637. ActCreFolWrkCrs Create a new folder of works in the course + 638. ActCreLnkWrkCrs Create a new link of works in the course + 639. ActRenFolWrkCrs Rename a folder of works in the course + 640. ActRcvFilWrkCrsDZ Receive a file of works in the course using Dropzone.js + 641. ActRcvFilWrkCrsCla Receive a file of works in the course using the classic way + 642. ActExpWrkCrs Expand a folder of works in a course + 643. ActConWrkCrs Contract a folder of works in a course + 644. ActZIPWrkCrs Compress a folder of works in a course + 645. ActReqDatWrkCrs Ask for metadata of a file of works in a course + 646. ActChgDatWrkCrs Change metadata of a file of works in a course + 647. ActDowWrkCrs Download a file of works in a course + 648. ActSeeTst Show the seft-assessment test + 649. ActAssTst Assess a self-assessment test + 650. ActEdiTstQst Request the edition of self-assessment questions + 651. ActEdiOneTstQst Edit one self-assesment test question + 652. ActReqImpTstQst Put form to ask for an XML with test questions to import + 653. ActImpTstQst Import test questions from XML file + 654. ActLstTstQst List for edition several self-assessment test questions + 655. ActRcvTstQst Receive a question of self-assessment + 656. ActShfTstQst Change shuffle of of a question of self-assessment + 657. ActReqRemTstQst Request removing a self-assesment test question + 658. ActRemTstQst Remove a self-assesment test question + 659. ActCfgTst Request renaming of tags of questions of self-assesment + 660. ActEnableTag Enable a tag + 661. ActDisableTag Disable a tag + 662. ActRenTag Rename a tag + 663. ActRcvCfgTst Receive configuration of test + 664. ActReqSeeMyTstExa Select range of dates to see my results of test exams + 665. ActSeeMyTstExa Show my test results + 666. ActReqSeeUsrTstExa Select users and range of dates to see results of test exams + 667. ActSeeUsrTstExa Show test results of several users + 668. ActSeeOneTstExaMe Show one test exam of me as student + 669. ActSeeOneTstExaOth Show one test exam of other user - 630. ActPrnCal Show print view of the academic calendar of the course - 631. ActChgCal1stDay Change first day of week and show academic calendar of the course + 670. ActPrnCal Show print view of the academic calendar of the course + 671. ActChgCal1stDay Change first day of week and show academic calendar of the course - 632. ActEdiExaAnn Edit an exam announcement - 633. ActRcvExaAnn Receive an exam announcement - 634. ActPrnExaAnn Show an exam announcement ready to be printed - 635. ActRemExaAnn Remove an exam announcement + 672. ActEdiExaAnn Edit an exam announcement + 673. ActRcvExaAnn Receive an exam announcement + 674. ActPrnExaAnn Show an exam announcement ready to be printed + 675. ActRemExaAnn Remove an exam announcement - 636. ActChgToSeeMrk Change to see marks in course/group + 676. ActChgToSeeMrk Change to see marks in course/group - 637. ActSeeMrkCrs See marks in course - 638. ActExpSeeMrkCrs Expand a folder in marks in course - 639. ActConSeeMrkCrs Contract a folder in marks in course - 640. ActReqDatSeeMrkCrs Ask for metadata of a file of the marks zone of the course - 641. ActSeeMyMrkCrs Individualized access to marks in course + 677. ActSeeMrkCrs See marks in course + 678. ActExpSeeMrkCrs Expand a folder in marks in course + 679. ActConSeeMrkCrs Contract a folder in marks in course + 680. ActReqDatSeeMrkCrs Ask for metadata of a file of the marks zone of the course + 681. ActSeeMyMrkCrs Individualized access to marks in course - 642. ActSeeMrkGrp See marks in group - 643. ActExpSeeMrkGrp Expand a folder in marks in group - 644. ActConSeeMrkGrp Contract a folder in marks in group - 645. ActReqDatSeeMrkGrp Ask for metadata of a file of the marks zone of a group - 646. ActSeeMyMrkGrp Individualized access to marks in group + 682. ActSeeMrkGrp See marks in group + 683. ActExpSeeMrkGrp Expand a folder in marks in group + 684. ActConSeeMrkGrp Contract a folder in marks in group + 685. ActReqDatSeeMrkGrp Ask for metadata of a file of the marks zone of a group + 686. ActSeeMyMrkGrp Individualized access to marks in group - 647. ActChgToAdmMrk Change to admin marks in course/group + 687. ActChgToAdmMrk Change to admin marks in course/group - 648. ActAdmMrkCrs Admin the files of the zone of marks in course - 649. ActReqRemFilMrkCrs Request removal of a file of marks in course - 650. ActRemFilMrkCrs Remove a file of marks in course - 651. ActRemFolMrkCrs Remove a folder empty of marks in course - 652. ActCopMrkCrs Set source of copy in marks in course - 653. ActPasMrkCrs Paste a folder or file in marks in course - 654. ActRemTreMrkCrs Remove a folder no empty of marks in course - 655. ActFrmCreMrkCrs Form to crear a folder or file in marks in course - 656. ActCreFolMrkCrs Create a new folder in marks in course - 657. ActRenFolMrkCrs Rename a folder in marks in course - 658. ActRcvFilMrkCrsDZ Receive a file of marks in course using Dropzone.js - 659. ActRcvFilMrkCrsCla Receive a file of marks in course using the classic way - 660. ActExpAdmMrkCrs Expand a folder in marks administration in course - 661. ActConAdmMrkCrs Contract a folder in marks administration in course - 662. ActZIPAdmMrkCrs Compress a folder in marks administration in course - 663. ActShoMrkCrs Show hidden folder or file of the marks administration in course - 664. ActHidMrkCrs Hide folder or file of the marks administration in course - 665. ActReqDatAdmMrkCrs Ask for metadata of a file in marks administration in course - 666. ActChgDatAdmMrkCrs Change metadata of a file in marks administration in course - 667. ActDowAdmMrkCrs Download a file in marks administration in course - 668. ActChgNumRowHeaCrs Change the number of rows of cabecera of a file of marks in course - 669. ActChgNumRowFooCrs Change the number of rows of pie of a file of marks in course + 688. ActAdmMrkCrs Admin the files of the zone of marks in course + 689. ActReqRemFilMrkCrs Request removal of a file of marks in course + 690. ActRemFilMrkCrs Remove a file of marks in course + 691. ActRemFolMrkCrs Remove a folder empty of marks in course + 692. ActCopMrkCrs Set source of copy in marks in course + 693. ActPasMrkCrs Paste a folder or file in marks in course + 694. ActRemTreMrkCrs Remove a folder no empty of marks in course + 695. ActFrmCreMrkCrs Form to crear a folder or file in marks in course + 696. ActCreFolMrkCrs Create a new folder in marks in course + 697. ActRenFolMrkCrs Rename a folder in marks in course + 698. ActRcvFilMrkCrsDZ Receive a file of marks in course using Dropzone.js + 699. ActRcvFilMrkCrsCla Receive a file of marks in course using the classic way + 700. ActExpAdmMrkCrs Expand a folder in marks administration in course + 701. ActConAdmMrkCrs Contract a folder in marks administration in course + 702. ActZIPAdmMrkCrs Compress a folder in marks administration in course + 703. ActShoMrkCrs Show hidden folder or file of the marks administration in course + 704. ActHidMrkCrs Hide folder or file of the marks administration in course + 705. ActReqDatAdmMrkCrs Ask for metadata of a file in marks administration in course + 706. ActChgDatAdmMrkCrs Change metadata of a file in marks administration in course + 707. ActDowAdmMrkCrs Download a file in marks administration in course + 708. ActChgNumRowHeaCrs Change the number of rows of cabecera of a file of marks in course + 709. ActChgNumRowFooCrs Change the number of rows of pie of a file of marks in course - 670. ActAdmMrkGrp Admin the files of the zone of marks in group - 671. ActReqRemFilMrkGrp Request removal of a file of marks in group - 672. ActRemFilMrkGrp Remove a file of marks in group - 673. ActRemFolMrkGrp Remove a folder empty of marks in group - 674. ActCopMrkGrp Set source of copy in marks in group - 675. ActPasMrkGrp Paste a folder or file in marks in group - 676. ActRemTreMrkGrp Remove a folder no empty of marks in group - 677. ActFrmCreMrkGrp Form to crear a folder or file in marks in group - 678. ActCreFolMrkGrp Create a new folder in marks in group - 679. ActRenFolMrkGrp Rename a folder in marks in group - 680. ActRcvFilMrkGrpDZ Receive a file to marks in group using Dropzone.js - 681. ActRcvFilMrkGrpCla Receive a file to marks in group using the classic way - 682. ActExpAdmMrkGrp Expand a folder in marks administration in group - 683. ActConAdmMrkGrp Contract a folder in marks administration in group - 684. ActZIPAdmMrkGrp Compress a folder in marks administration in group - 685. ActShoMrkGrp Show hidden folder or file of the marks administration in group - 686. ActHidMrkGrp Hide folder or file of the marks administration in group - 687. ActReqDatAdmMrkGrp Ask for metadata of a file in marks administration in group - 688. ActChgDatAdmMrkGrp Change metadata of a file in marks administration in group - 689. ActDowAdmMrkGrp Download a file in marks administration in group - 690. ActChgNumRowHeaGrp Change the number of rows of cabecera of a file of marks in group - 691. ActChgNumRowFooGrp Change the number of rows of pie of a file of marks in group + 710. ActAdmMrkGrp Admin the files of the zone of marks in group + 711. ActReqRemFilMrkGrp Request removal of a file of marks in group + 712. ActRemFilMrkGrp Remove a file of marks in group + 713. ActRemFolMrkGrp Remove a folder empty of marks in group + 714. ActCopMrkGrp Set source of copy in marks in group + 715. ActPasMrkGrp Paste a folder or file in marks in group + 716. ActRemTreMrkGrp Remove a folder no empty of marks in group + 717. ActFrmCreMrkGrp Form to crear a folder or file in marks in group + 718. ActCreFolMrkGrp Create a new folder in marks in group + 719. ActRenFolMrkGrp Rename a folder in marks in group + 720. ActRcvFilMrkGrpDZ Receive a file to marks in group using Dropzone.js + 721. ActRcvFilMrkGrpCla Receive a file to marks in group using the classic way + 722. ActExpAdmMrkGrp Expand a folder in marks administration in group + 723. ActConAdmMrkGrp Contract a folder in marks administration in group + 724. ActZIPAdmMrkGrp Compress a folder in marks administration in group + 725. ActShoMrkGrp Show hidden folder or file of the marks administration in group + 726. ActHidMrkGrp Hide folder or file of the marks administration in group + 727. ActReqDatAdmMrkGrp Ask for metadata of a file in marks administration in group + 728. ActChgDatAdmMrkGrp Change metadata of a file in marks administration in group + 729. ActDowAdmMrkGrp Download a file in marks administration in group + 730. ActChgNumRowHeaGrp Change the number of rows of cabecera of a file of marks in group + 731. ActChgNumRowFooGrp Change the number of rows of pie of a file of marks in group Users: - 692. ActReqSelGrp Request the selection of groups of students - 693. ActLstStd Show class photo or list of students - 694. ActLstTch Show class photo or list of teachers - 695. ActLstOth Show class photo or list of guests - 696. ActSeeAtt Show attendance events - 697. ActReqSignUp Apply for my enrollment - 698. ActSeeSignUpReq Show pending requests for inscription in the current course - 699. ActLstCon List connected users + 732. ActReqSelGrp Request the selection of groups of students + 733. ActLstStd Show class photo or list of students + 734. ActLstTch Show class photo or list of teachers + 735. ActLstOth Show class photo or list of guests + 736. ActSeeAtt Show attendance events + 737. ActReqSignUp Apply for my enrollment + 738. ActSeeSignUpReq Show pending requests for inscription in the current course + 739. ActLstCon List connected users - 700. ActChgGrp Change my groups - 701. ActReqEdiGrp Request the edition of groups - 702. ActNewGrpTyp Request the creation of a type of group of students - 703. ActReqRemGrpTyp Request the removal of a type of group of students - 704. ActRemGrpTyp Remove a type of group of students - 705. ActRenGrpTyp Request renaming of a type of group of students - 706. ActChgMdtGrpTyp Request change if it is mandatory to register in groups of a type - 707. ActChgMulGrpTyp Request change if it is possible to register in multiple groups of a type - 708. ActChgTimGrpTyp Request change when the groups of a type will be open - 709. ActNewGrp Request the creation of a group of students - 710. ActReqRemGrp Request the removal of a group of students - 711. ActRemGrp Remove a group of students - 712. ActOpeGrp Abrir a group of students - 713. ActCloGrp Cerrar a group of students - 714. ActEnaFilZonGrp Enable zonas of files of a group - 715. ActDisFilZonGrp Disable zonas of files of a group - 716. ActChgGrpTyp Request change in the type of group of students - 717. ActRenGrp Request renaming of a group of students - 718. ActChgMaxStdGrp Request change in the number máximo of students of a group + 740. ActChgGrp Change my groups + 741. ActReqEdiGrp Request the edition of groups + 742. ActNewGrpTyp Request the creation of a type of group of students + 743. ActReqRemGrpTyp Request the removal of a type of group of students + 744. ActRemGrpTyp Remove a type of group of students + 745. ActRenGrpTyp Request renaming of a type of group of students + 746. ActChgMdtGrpTyp Request change if it is mandatory to register in groups of a type + 747. ActChgMulGrpTyp Request change if it is possible to register in multiple groups of a type + 748. ActChgTimGrpTyp Request change when the groups of a type will be open + 749. ActNewGrp Request the creation of a group of students + 750. ActReqRemGrp Request the removal of a group of students + 751. ActRemGrp Remove a group of students + 752. ActOpeGrp Abrir a group of students + 753. ActCloGrp Cerrar a group of students + 754. ActEnaFilZonGrp Enable zonas of files of a group + 755. ActDisFilZonGrp Disable zonas of files of a group + 756. ActChgGrpTyp Request change in the type of group of students + 757. ActRenGrp Request renaming of a group of students + 758. ActChgMaxStdGrp Request change in the number máximo of students of a group - 719. ActGetExtLstStd Get external lists of students + 759. ActGetExtLstStd Get external lists of students - 720. ActLstGst List main data of administrators + 760. ActLstGst List main data of administrators - 721. ActPrnGstPho Show the class photo of guests ready to be printed - 722. ActPrnStdPho Show the class photo of students ready to be printed - 723. ActPrnTchPho Show the class photo of teachers ready to be printed - 724. ActLstGstAll List in another window the full data of guests - 725. ActLstStdAll List in another window the full data of students - 726. ActLstTchAll List in another window the full data of teachers + 761. ActPrnGstPho Show the class photo of guests ready to be printed + 762. ActPrnStdPho Show the class photo of students ready to be printed + 763. ActPrnTchPho Show the class photo of teachers ready to be printed + 764. ActLstGstAll List in another window the full data of guests + 765. ActLstStdAll List in another window the full data of students + 766. ActLstTchAll List in another window the full data of teachers - 727. ActSeeRecOneStd Show record of one selected student - 728. ActSeeRecOneTch Show record of one selected teacher - 729. ActSeeRecSevGst Show records of several selected guests - 730. ActSeeRecSevStd Show records of several selected students - 731. ActSeeRecSevTch Show records of several selected teachers - 732. ActPrnRecSevGst Show records of several selected guests ready to be printed - 733. ActPrnRecSevStd Show records of several selected students ready to be printed - 734. ActPrnRecSevTch Show records of several selected teachers ready to be printed - 735. ActRcvRecOthUsr Update record fields of a student in this course - 736. ActEdiRecFie Request the edition of record fields of students - 737. ActNewFie Request the creation of a record field - 738. ActReqRemFie Request the removal of record field - 739. ActRemFie Remove a record field - 740. ActRenFie Request renaming of record field - 741. ActChgRowFie Request change in number of lines of form of a record field - 742. ActChgVisFie Request change in visibility of a record field - 743. ActRcvRecCrs Receive and update fields of my record in this course + 767. ActSeeRecOneStd Show record of one selected student + 768. ActSeeRecOneTch Show record of one selected teacher + 769. ActSeeRecSevGst Show records of several selected guests + 770. ActSeeRecSevStd Show records of several selected students + 771. ActSeeRecSevTch Show records of several selected teachers + 772. ActPrnRecSevGst Show records of several selected guests ready to be printed + 773. ActPrnRecSevStd Show records of several selected students ready to be printed + 774. ActPrnRecSevTch Show records of several selected teachers ready to be printed + 775. ActRcvRecOthUsr Update record fields of a student in this course + 776. ActEdiRecFie Request the edition of record fields of students + 777. ActNewFie Request the creation of a record field + 778. ActReqRemFie Request the removal of record field + 779. ActRemFie Remove a record field + 780. ActRenFie Request renaming of record field + 781. ActChgRowFie Request change in number of lines of form of a record field + 782. ActChgVisFie Request change in visibility of a record field + 783. ActRcvRecCrs Receive and update fields of my record in this course - 744. ActReqEnrSevStd Request the enrollment/removing of several users to / from current course - 745. ActReqEnrSevTch Request the enrollment/removing of several users to / from current course + 784. ActReqEnrSevStd Request the enrollment/removing of several users to / from current course + 785. ActReqEnrSevTch Request the enrollment/removing of several users to / from current course - 746. ActReqLstStdAtt Request listing of attendance of several students to several events - 747. ActSeeLstMyAtt List my attendance as student to several events - 748. ActPrnLstMyAtt Print my attendance as student to several events - 749. ActSeeLstStdAtt List attendance of several students to several events - 750. ActPrnLstStdAtt Print attendance of several students to several events - 751. ActFrmNewAtt Form to create a new attendance event - 752. ActEdiOneAtt Edit one attendance event - 753. ActNewAtt Create new attendance event - 754. ActChgAtt Modify data of an existing attendance event - 755. ActReqRemAtt Request the removal of an attendance event - 756. ActRemAtt Remove attendance event - 757. ActHidAtt Hide attendance event - 758. ActShoAtt Show attendance event - 759. ActSeeOneAtt List students who attended to an event - 760. ActRecAttStd Save students who attended to an event and comments - 761. ActRecAttMe Save my comments as student in an attendance event + 786. ActReqLstStdAtt Request listing of attendance of several students to several events + 787. ActSeeLstMyAtt List my attendance as student to several events + 788. ActPrnLstMyAtt Print my attendance as student to several events + 789. ActSeeLstStdAtt List attendance of several students to several events + 790. ActPrnLstStdAtt Print attendance of several students to several events + 791. ActFrmNewAtt Form to create a new attendance event + 792. ActEdiOneAtt Edit one attendance event + 793. ActNewAtt Create new attendance event + 794. ActChgAtt Modify data of an existing attendance event + 795. ActReqRemAtt Request the removal of an attendance event + 796. ActRemAtt Remove attendance event + 797. ActHidAtt Hide attendance event + 798. ActShoAtt Show attendance event + 799. ActSeeOneAtt List students who attended to an event + 800. ActRecAttStd Save students who attended to an event and comments + 801. ActRecAttMe Save my comments as student in an attendance event - 762. ActSignUp Apply for my enrollment - 763. ActUpdSignUpReq Update pending requests for inscription in the current course - 764. ActReqRejSignUp Ask if reject the enrollment of a user in a course - 765. ActRejSignUp Reject the enrollment of a user in a course + 802. ActSignUp Apply for my enrollment + 803. ActUpdSignUpReq Update pending requests for inscription in the current course + 804. ActReqRejSignUp Ask if reject the enrollment of a user in a course + 805. ActRejSignUp Reject the enrollment of a user in a course - 766. ActReqMdfOneOth Request a user's ID for enrollment/removing - 767. ActReqMdfOneStd Request a user's ID for enrollment/removing - 768. ActReqMdfOneTch Request a user's ID for enrollment/removing - 769. ActReqMdfOth Request enrollment/removing of a user - 770. ActReqMdfStd Request enrollment/removing of a user - 771. ActReqMdfTch Request enrollment/removing of a user - 772. ActReqOthPho Show form to send the photo of another user - 773. ActReqStdPho Show form to send the photo of another user - 774. ActReqTchPho Show form to send the photo of another user - 775. ActDetOthPho Receive other user's photo and detect faces on it - 776. ActDetStdPho Receive other user's photo and detect faces on it - 777. ActDetTchPho Receive other user's photo and detect faces on it - 778. ActUpdOthPho Update other user's photo - 779. ActUpdStdPho Update other user's photo - 780. ActUpdTchPho Update other user's photo - 781. ActRemOthPho Remove other user's photo - 782. ActRemStdPho Remove other user's photo - 783. ActRemTchPho Remove other user's photo - 784. ActCreOth Create a new user - 785. ActCreStd Create a new user - 786. ActCreTch Create a new user - 787. ActUpdOth Update another user's data and groups - 788. ActUpdStd Update another user's data and groups - 789. ActUpdTch Update another user's data and groups - 790. ActReqAccEnrStd Confirm acceptation / refusion of enrollment as student in current course - 791. ActReqAccEnrTch Confirm acceptation / refusion of enrollment as teacher in current course - 792. ActAccEnrStd Accept enrollment as student in current course - 793. ActAccEnrTch Accept enrollment as teacher in current course - 794. ActRemMe_Std Reject enrollment as student in current course - 795. ActRemMe_Tch Reject enrollment as teacher in current course + 806. ActReqMdfOneOth Request a user's ID for enrollment/removing + 807. ActReqMdfOneStd Request a user's ID for enrollment/removing + 808. ActReqMdfOneTch Request a user's ID for enrollment/removing + 809. ActReqMdfOth Request enrollment/removing of a user + 810. ActReqMdfStd Request enrollment/removing of a user + 811. ActReqMdfTch Request enrollment/removing of a user + 812. ActReqOthPho Show form to send the photo of another user + 813. ActReqStdPho Show form to send the photo of another user + 814. ActReqTchPho Show form to send the photo of another user + 815. ActDetOthPho Receive other user's photo and detect faces on it + 816. ActDetStdPho Receive other user's photo and detect faces on it + 817. ActDetTchPho Receive other user's photo and detect faces on it + 818. ActUpdOthPho Update other user's photo + 819. ActUpdStdPho Update other user's photo + 820. ActUpdTchPho Update other user's photo + 821. ActRemOthPho Remove other user's photo + 822. ActRemStdPho Remove other user's photo + 823. ActRemTchPho Remove other user's photo + 824. ActCreOth Create a new user + 825. ActCreStd Create a new user + 826. ActCreTch Create a new user + 827. ActUpdOth Update another user's data and groups + 828. ActUpdStd Update another user's data and groups + 829. ActUpdTch Update another user's data and groups + 830. ActReqAccEnrStd Confirm acceptation / refusion of enrollment as student in current course + 831. ActReqAccEnrTch Confirm acceptation / refusion of enrollment as teacher in current course + 832. ActAccEnrStd Accept enrollment as student in current course + 833. ActAccEnrTch Accept enrollment as teacher in current course + 834. ActRemMe_Std Reject enrollment as student in current course + 835. ActRemMe_Tch Reject enrollment as teacher in current course - 796. ActNewAdmIns Register an administrador in this institution - 797. ActRemAdmIns Remove an administrador of this institution - 798. ActNewAdmCtr Register an administrador in this centre - 799. ActRemAdmCtr Remove an administrador of this centre - 800. ActNewAdmDeg Register an administrador in this degree - 801. ActRemAdmDeg Remove an administrador of this degree + 836. ActNewAdmIns Register an administrador in this institution + 837. ActRemAdmIns Remove an administrador of this institution + 838. ActNewAdmCtr Register an administrador in this centre + 839. ActRemAdmCtr Remove an administrador of this centre + 840. ActNewAdmDeg Register an administrador in this degree + 841. ActRemAdmDeg Remove an administrador of this degree - 802. ActRcvFrmEnrSevStd Receive a form with IDs of users to be registeres/removed to/from current course - 803. ActRcvFrmEnrSevTch Receive a form with IDs of users to be registeres/removed to/from current course + 842. ActRcvFrmEnrSevStd Receive a form with IDs of users to be registeres/removed to/from current course + 843. ActRcvFrmEnrSevTch Receive a form with IDs of users to be registeres/removed to/from current course - 804. ActFrmIDsOth Show form to the change of the IDs of another user - 805. ActFrmIDsStd Show form to the change of the IDs of another user - 806. ActFrmIDsTch Show form to the change of the IDs of another user - 807. ActRemID_Oth Remove one of the IDs of another user - 808. ActRemID_Std Remove one of the IDs of another user - 809. ActRemID_Tch Remove one of the IDs of another user - 810. ActNewID_Oth Create a new user's ID for another user - 811. ActNewID_Std Create a new user's ID for another user - 812. ActNewID_Tch Create a new user's ID for another user + 844. ActFrmIDsOth Show form to the change of the IDs of another user + 845. ActFrmIDsStd Show form to the change of the IDs of another user + 846. ActFrmIDsTch Show form to the change of the IDs of another user + 847. ActRemID_Oth Remove one of the IDs of another user + 848. ActRemID_Std Remove one of the IDs of another user + 849. ActRemID_Tch Remove one of the IDs of another user + 850. ActNewID_Oth Create a new user's ID for another user + 851. ActNewID_Std Create a new user's ID for another user + 852. ActNewID_Tch Create a new user's ID for another user - 813. ActFrmPwdOth Show form to change the password of another user - 814. ActFrmPwdStd Show form to change the password of another user - 815. ActFrmPwdTch Show form to change the password of another user - 816. ActChgPwdOth Change the password of another user - 817. ActChgPwdStd Change the password of another user - 818. ActChgPwdTch Change the password of another user + 853. ActFrmPwdOth Show form to change the password of another user + 854. ActFrmPwdStd Show form to change the password of another user + 855. ActFrmPwdTch Show form to change the password of another user + 856. ActChgPwdOth Change the password of another user + 857. ActChgPwdStd Change the password of another user + 858. ActChgPwdTch Change the password of another user - 819. ActFrmMaiOth Show form to the change of the e-mail of another user - 820. ActFrmMaiStd Show form to the change of the e-mail of another user - 821. ActFrmMaiTch Show form to the change of the e-mail of another user - 822. ActRemMaiOth Remove one of the e-mail of another user - 823. ActRemMaiStd Remove one of the e-mail of another user - 824. ActRemMaiTch Remove one of the e-mail of another user - 825. ActNewMaiOth Create a new user's e-mail for another user - 826. ActNewMaiStd Create a new user's e-mail for another user - 827. ActNewMaiTch Create a new user's e-mail for another user + 859. ActFrmMaiOth Show form to the change of the e-mail of another user + 860. ActFrmMaiStd Show form to the change of the e-mail of another user + 861. ActFrmMaiTch Show form to the change of the e-mail of another user + 862. ActRemMaiOth Remove one of the e-mail of another user + 863. ActRemMaiStd Remove one of the e-mail of another user + 864. ActRemMaiTch Remove one of the e-mail of another user + 865. ActNewMaiOth Create a new user's e-mail for another user + 866. ActNewMaiStd Create a new user's e-mail for another user + 867. ActNewMaiTch Create a new user's e-mail for another user - 828. ActRemStdCrs Remove a student from the current course - 829. ActRemTchCrs Remove a teacher from the current course - 830. ActRemUsrGbl Eliminate completely a user from the platform - 831. ActReqRemAllStdCrs Request the removal of all the students from the current course - 832. ActRemAllStdCrs Remove all the students from the current course - 833. ActReqRemOldUsr Request the complete elimination of old users - 834. ActRemOldUsr Eliminate completely old users + 868. ActRemStdCrs Remove a student from the current course + 869. ActRemTchCrs Remove a teacher from the current course + 870. ActRemUsrGbl Eliminate completely a user from the platform + 871. ActReqRemAllStdCrs Request the removal of all the students from the current course + 872. ActRemAllStdCrs Remove all the students from the current course + 873. ActReqRemOldUsr Request the complete elimination of old users + 874. ActRemOldUsr Eliminate completely old users - 835. ActLstClk List last clicks in real time + 875. ActLstClk List last clicks in real time Social: - 836. ActSeeSocTmlGbl Show social timeline (global) - 837. ActSeeSocPrf Suggest list of users to follow - 838. ActSeeFor Show the level superior of the forums - 839. ActSeeChtRms Show the chat rooms + 876. ActSeeSocTmlGbl Show social timeline (global) + 877. ActSeeSocPrf Suggest list of users to follow + 878. ActSeeFor Show the level superior of the forums + 879. ActSeeChtRms Show the chat rooms - 840. ActRcvSocPstGbl Receive a public social post to be displayed in the timeline (global) - 841. ActRcvSocComGbl Comment a social note in the timeline (global) - 842. ActShaSocNotGbl Share a social note in the timeline (global) - 843. ActUnsSocNotGbl Unshare a previously shared social note in the timeline (global) - 844. ActFavSocNotGbl Favourite a social note in the timeline (global) - 845. ActUnfSocNotGbl Unfavourite a previously favourited social note in the timeline (global) - 846. ActFavSocComGbl Favourite a social comment in the timeline (global) - 847. ActUnfSocComGbl Unfavourite a previously favourited social comment in the timeline (global) - 848. ActReqRemSocPubGbl Request the removal of a social publishing in the timeline (global) - 849. ActRemSocPubGbl Remove a social publishing in the timeline (global) - 850. ActReqRemSocComGbl Request the removal of a comment in a social note (global) - 851. ActRemSocComGbl Remove of a comment in a social note (global) + 880. ActRcvSocPstGbl Receive a public social post to be displayed in the timeline (global) + 881. ActRcvSocComGbl Comment a social note in the timeline (global) + 882. ActShaSocNotGbl Share a social note in the timeline (global) + 883. ActUnsSocNotGbl Unshare a previously shared social note in the timeline (global) + 884. ActFavSocNotGbl Favourite a social note in the timeline (global) + 885. ActUnfSocNotGbl Unfavourite a previously favourited social note in the timeline (global) + 886. ActFavSocComGbl Favourite a social comment in the timeline (global) + 887. ActUnfSocComGbl Unfavourite a previously favourited social comment in the timeline (global) + 888. ActReqRemSocPubGbl Request the removal of a social publishing in the timeline (global) + 889. ActRemSocPubGbl Remove a social publishing in the timeline (global) + 890. ActReqRemSocComGbl Request the removal of a comment in a social note (global) + 891. ActRemSocComGbl Remove of a comment in a social note (global) - 852. ActReqPubPrf Request @nickname to show a public user's profile + 892. ActReqPubPrf Request @nickname to show a public user's profile - 853. ActRcvSocPstUsr Receive a public social post to be displayed in the timeline (user) - 854. ActRcvSocComUsr Comment a social note in the timeline (user) - 855. ActShaSocNotUsr Share a social note in the timeline (user) - 856. ActUnsSocNotUsr Unshare a previously shared social note in the timeline (user) - 857. ActFavSocNotUsr Favourite a social note in the timeline (user) - 858. ActUnfSocNotUsr Unfavourite a previously favourited social note in the timeline (user) - 859. ActFavSocComUsr Favourite a social comment in the timeline (user) - 860. ActUnfSocComUsr Unfavourite a previously favourited social comment in the timeline (user) - 861. ActReqRemSocPubUsr Request the removal of a social publishing in the timeline (user) - 862. ActRemSocPubUsr Remove a social publishing in the timeline (user) - 863. ActReqRemSocComUsr Request the removal of a comment in a social note (user) - 864. ActRemSocComUsr Remove of a comment in a social note (user) + 893. ActRcvSocPstUsr Receive a public social post to be displayed in the timeline (user) + 894. ActRcvSocComUsr Comment a social note in the timeline (user) + 895. ActShaSocNotUsr Share a social note in the timeline (user) + 896. ActUnsSocNotUsr Unshare a previously shared social note in the timeline (user) + 897. ActFavSocNotUsr Favourite a social note in the timeline (user) + 898. ActUnfSocNotUsr Unfavourite a previously favourited social note in the timeline (user) + 899. ActFavSocComUsr Favourite a social comment in the timeline (user) + 900. ActUnfSocComUsr Unfavourite a previously favourited social comment in the timeline (user) + 901. ActReqRemSocPubUsr Request the removal of a social publishing in the timeline (user) + 902. ActRemSocPubUsr Remove a social publishing in the timeline (user) + 903. ActReqRemSocComUsr Request the removal of a comment in a social note (user) + 904. ActRemSocComUsr Remove of a comment in a social note (user) - 865. ActCal1stClkTim Calculate first click time from log and store into user's figures - 866. ActCalNumClk Calculate number of clicks from log and store into user's figures - 867. ActCalNumFileViews Calculate number of file views and store into user's figures - 868. ActCalNumForPst Calculate number of forum posts and store into user's figures - 869. ActCalNumMsgSnt Calculate number of messages sent from log and store into user's figures + 905. ActCal1stClkTim Calculate first click time from log and store into user's figures + 906. ActCalNumClk Calculate number of clicks from log and store into user's figures + 907. ActCalNumFileViews Calculate number of file views and store into user's figures + 908. ActCalNumForPst Calculate number of forum posts and store into user's figures + 909. ActCalNumMsgSnt Calculate number of messages sent from log and store into user's figures - 870. ActFolUsr Follow another user - 871. ActUnfUsr Unfollow another user - 872. ActSeeFlg Show following - 873. ActSeeFlr Show followers + 910. ActFolUsr Follow another user + 911. ActUnfUsr Unfollow another user + 912. ActSeeFlg Show following + 913. ActSeeFlr Show followers - 874. ActSeeForCrsUsr Show top level of forum of users of the course - 875. ActSeeForCrsTch Show top level of forum of teachers of the course - 876. ActSeeForDegUsr Show top level of forum of users of the degree - 877. ActSeeForDegTch Show top level of forum of teachers of the degree - 878. ActSeeForCtrUsr Show top level of forum of users of the centre - 879. ActSeeForCtrTch Show top level of forum of teachers of the centre - 880. ActSeeForInsUsr Show top level of forum of users of the institution - 881. ActSeeForInsTch Show top level of forum of teachers of the institution - 882. ActSeeForGenUsr Show top level of forum of users general - 883. ActSeeForGenTch Show top level of forum of teachers general - 884. ActSeeForSWAUsr Show top level of forum of users of the platform - 885. ActSeeForSWATch Show top level of forum of teachers of the platform - 886. ActSeePstForCrsUsr Show the messages of a thread of the forum of users of the course - 887. ActSeePstForCrsTch Show the messages of a thread of the forum of teachers of the course - 888. ActSeePstForDegUsr Show the messages of a thread of the forum of users of the degree - 889. ActSeePstForDegTch Show the messages of a thread of the forum of teachers of the degree - 890. ActSeePstForCtrUsr Show the messages of a thread of the forum of users of the centre - 891. ActSeePstForCtrTch Show the messages of a thread of the forum of teachers of the centre - 892. ActSeePstForInsUsr Show the messages of a thread of the forum of users of the institution - 893. ActSeePstForInsTch Show the messages of a thread of the forum of teachers of the institution - 894. ActSeePstForGenUsr Show the messages of a thread of the forum of users general - 895. ActSeePstForGenTch Show the messages of a thread of the forum of teachers general - 896. ActSeePstForSWAUsr Show the messages of a thread of the forum of users of the platform - 897. ActSeePstForSWATch Show the messages of a thread of the forum of teachers of the platform - 898. ActRcvThrForCrsUsr Receive the first message of a new thread of forum of users of the course - 899. ActRcvThrForCrsTch Receive the first message of a new thread of forum of teachers of the course - 900. ActRcvThrForDegUsr Receive the first message of a new thread of forum of users of the degree - 901. ActRcvThrForDegTch Receive the first message of a new thread of forum of teachers of the degree - 902. ActRcvThrForCtrUsr Receive the first message of a new thread of forum of users of centre - 903. ActRcvThrForCtrTch Receive the first message of a new thread of forum of teachers of centre - 904. ActRcvThrForInsUsr Receive the first message of a new thread of forum of users of the institution - 905. ActRcvThrForInsTch Receive the first message of a new thread of forum of teachers of the institution - 906. ActRcvThrForGenUsr Receive the first message of a new thread of forum of users general - 907. ActRcvThrForGenTch Receive the first message of a new thread of forum of teachers general - 908. ActRcvThrForSWAUsr Receive the first message of a new thread of forum of users of the platform - 909. ActRcvThrForSWATch Receive the first message of a new thread of forum of teachers of the platform - 910. ActRcvRepForCrsUsr Receive a message of answer in a thread existente in the forum of users of the course - 911. ActRcvRepForCrsTch Receive a message of answer in a thread existente in the forum of teachers of the course - 912. ActRcvRepForDegUsr Receive a message of answer in a thread existente in the forum of users of the degree - 913. ActRcvRepForDegTch Receive a message of answer in a thread existente in the forum of teachers of the degree - 914. ActRcvRepForCtrUsr Receive a message of answer in a thread existente in the forum of users of centre - 915. ActRcvRepForCtrTch Receive a message of answer in a thread existente in the forum of teachers of centre - 916. ActRcvRepForInsUsr Receive a message of answer in a thread existente in the forum of users of the institution - 917. ActRcvRepForInsTch Receive a message of answer in a thread existente in the forum of teachers of the institution - 918. ActRcvRepForGenUsr Receive a message of answer in a thread existente in the forum of users general - 919. ActRcvRepForGenTch Receive a message of answer in a thread existente in the forum of teachers general - 920. ActRcvRepForSWAUsr Receive a message of answer in a thread existente in the forum of users of the platform - 921. ActRcvRepForSWATch Receive a message of answer in a thread existente in the forum of teachers of the platform - 922. ActReqDelThrCrsUsr Request the removal of a thread of forum of users of the course - 923. ActReqDelThrCrsTch Request the removal of a thread of forum of teachers of the course - 924. ActReqDelThrDegUsr Request the removal of a thread of forum of users of the degree - 925. ActReqDelThrDegTch Request the removal of a thread of forum of teachers of the degree - 926. ActReqDelThrCtrUsr Request the removal of a thread of forum of users of centre - 927. ActReqDelThrCtrTch Request the removal of a thread of forum of teachers of centre - 928. ActReqDelThrInsUsr Request the removal of a thread of forum of users of the institution - 929. ActReqDelThrInsTch Request the removal of a thread of forum of teachers of the institution - 930. ActReqDelThrGenUsr Request the removal of a thread of forum of users general - 931. ActReqDelThrGenTch Request the removal of a thread of forum of teachers general - 932. ActReqDelThrSWAUsr Request the removal of a thread of forum of users of the platform - 933. ActReqDelThrSWATch Request the removal of a thread of forum of teachers of the platform - 934. ActDelThrForCrsUsr Remove a thread of forum of users of the course - 935. ActDelThrForCrsTch Remove a thread of forum of teachers of the course - 936. ActDelThrForDegUsr Remove a thread of forum of users of the degree - 937. ActDelThrForDegTch Remove a thread of forum of teachers of the degree - 938. ActDelThrForCtrUsr Remove a thread of forum of users of centre - 939. ActDelThrForCtrTch Remove a thread of forum of teachers of centre - 940. ActDelThrForInsUsr Remove a thread of forum of users of the institution - 941. ActDelThrForInsTch Remove a thread of forum of teachers of the institution - 942. ActDelThrForGenUsr Remove a thread of forum of users general - 943. ActDelThrForGenTch Remove a thread of forum of teachers general - 944. ActDelThrForSWAUsr Remove a thread of forum of users of the platform - 945. ActDelThrForSWATch Remove a thread of forum of teachers of the platform - 946. ActCutThrForCrsUsr Cut a thread of forum of users of the course - 947. ActCutThrForCrsTch Cut a thread of forum of teachers of the course - 948. ActCutThrForDegUsr Cut a thread of forum of users of the degree - 949. ActCutThrForDegTch Cut a thread of forum of teachers of the degree - 950. ActCutThrForCtrUsr Cut a thread of forum of users of centre - 951. ActCutThrForCtrTch Cut a thread of forum of teachers of centre - 952. ActCutThrForInsUsr Cut a thread of forum of users of the institution - 953. ActCutThrForInsTch Cut a thread of forum of teachers of the institution - 954. ActCutThrForGenUsr Cut a thread of forum of users general - 955. ActCutThrForGenTch Cut a thread of forum of teachers general - 956. ActCutThrForSWAUsr Cut a thread of forum of users of the platform - 957. ActCutThrForSWATch Cut a thread of forum of teachers of the platform - 958. ActPasThrForCrsUsr Paste a thread of forum of users of the course - 959. ActPasThrForCrsTch Paste a thread of forum of teachers of the course - 960. ActPasThrForDegUsr Paste a thread of forum of users of the degree - 961. ActPasThrForDegTch Paste a thread of forum of teachers of the degree - 962. ActPasThrForCtrUsr Paste a thread of forum of users of centre - 963. ActPasThrForCtrTch Paste a thread of forum of teachers of centre - 964. ActPasThrForInsUsr Paste a thread of forum of users of the institution - 965. ActPasThrForInsTch Paste a thread of forum of teachers of the institution - 966. ActPasThrForGenUsr Paste a thread of forum of users general - 967. ActPasThrForGenTch Paste a thread of forum of teachers general - 968. ActPasThrForSWAUsr Paste a thread of forum of users of the platform - 969. ActPasThrForSWATch Paste a thread of forum of teachers of the platform - 970. ActDelPstForCrsUsr Remove a message of forum of users of the course - 971. ActDelPstForCrsTch Remove a message of forum of teachers of the course - 972. ActDelPstForDegUsr Remove a message of forum of users of the degree - 973. ActDelPstForDegTch Remove a message of forum of teachers of the degree - 974. ActDelPstForCtrUsr Remove a message of forum of users of centre - 975. ActDelPstForCtrTch Remove a message of forum of teachers of centre - 976. ActDelPstForInsUsr Remove a message of forum of users of the institution - 977. ActDelPstForInsTch Remove a message of forum of teachers of the institution - 978. ActDelPstForGenUsr Remove a message of forum of users general - 979. ActDelPstForGenTch Remove a message of forum of teachers general - 980. ActDelPstForSWAUsr Remove a message of forum of users of the platform - 981. ActDelPstForSWATch Remove a message of forum of teachers of the platform - 982. ActEnbPstForCrsUsr Enable a message of forum of users of the course - 983. ActEnbPstForCrsTch Enable a message of forum of teachers of the course - 984. ActEnbPstForDegUsr Enable a message of forum of users of the degree - 985. ActEnbPstForDegTch Enable a message of forum of teachers of the degree - 986. ActEnbPstForCtrUsr Enable a message of forum of users of centre - 987. ActEnbPstForCtrTch Enable a message of forum of teachers of centre - 988. ActEnbPstForInsUsr Enable a message of forum of users of the institution - 989. ActEnbPstForInsTch Enable a message of forum of teachers of the institution - 990. ActEnbPstForGenUsr Enable a message of forum of users general - 991. ActEnbPstForGenTch Enable a message of forum of teachers general - 992. ActEnbPstForSWAUsr Enable a message of forum of users of the platform - 993. ActEnbPstForSWATch Enable a message of forum of teachers of the platform - 994. ActDisPstForCrsUsr Disable a message of forum of users of the course - 995. ActDisPstForCrsTch Disable a message of forum of teachers of the course - 996. ActDisPstForDegUsr Disable a message of forum of users of the degree - 997. ActDisPstForDegTch Disable a message of forum of teachers of the degree - 998. ActDisPstForCtrUsr Disable a message of forum of users of centre - 999. ActDisPstForCtrTch Disable a message of forum of teachers of centre - 1000. ActDisPstForInsUsr Disable a message of forum of users of the institution - 1001. ActDisPstForInsTch Disable a message of forum of teachers of the institution - 1002. ActDisPstForGenUsr Disable a message of forum of users general - 1003. ActDisPstForGenTch Disable a message of forum of teachers general - 1004. ActDisPstForSWAUsr Disable a message of forum of users of the platform - 1005. ActDisPstForSWATch Disable a message of forum of teachers of the platform + 914. ActSeeForCrsUsr Show top level of forum of users of the course + 915. ActSeeForCrsTch Show top level of forum of teachers of the course + 916. ActSeeForDegUsr Show top level of forum of users of the degree + 917. ActSeeForDegTch Show top level of forum of teachers of the degree + 918. ActSeeForCtrUsr Show top level of forum of users of the centre + 919. ActSeeForCtrTch Show top level of forum of teachers of the centre + 920. ActSeeForInsUsr Show top level of forum of users of the institution + 921. ActSeeForInsTch Show top level of forum of teachers of the institution + 922. ActSeeForGenUsr Show top level of forum of users general + 923. ActSeeForGenTch Show top level of forum of teachers general + 924. ActSeeForSWAUsr Show top level of forum of users of the platform + 925. ActSeeForSWATch Show top level of forum of teachers of the platform + 926. ActSeePstForCrsUsr Show the messages of a thread of the forum of users of the course + 927. ActSeePstForCrsTch Show the messages of a thread of the forum of teachers of the course + 928. ActSeePstForDegUsr Show the messages of a thread of the forum of users of the degree + 929. ActSeePstForDegTch Show the messages of a thread of the forum of teachers of the degree + 930. ActSeePstForCtrUsr Show the messages of a thread of the forum of users of the centre + 931. ActSeePstForCtrTch Show the messages of a thread of the forum of teachers of the centre + 932. ActSeePstForInsUsr Show the messages of a thread of the forum of users of the institution + 933. ActSeePstForInsTch Show the messages of a thread of the forum of teachers of the institution + 934. ActSeePstForGenUsr Show the messages of a thread of the forum of users general + 935. ActSeePstForGenTch Show the messages of a thread of the forum of teachers general + 936. ActSeePstForSWAUsr Show the messages of a thread of the forum of users of the platform + 937. ActSeePstForSWATch Show the messages of a thread of the forum of teachers of the platform + 938. ActRcvThrForCrsUsr Receive the first message of a new thread of forum of users of the course + 939. ActRcvThrForCrsTch Receive the first message of a new thread of forum of teachers of the course + 940. ActRcvThrForDegUsr Receive the first message of a new thread of forum of users of the degree + 941. ActRcvThrForDegTch Receive the first message of a new thread of forum of teachers of the degree + 942. ActRcvThrForCtrUsr Receive the first message of a new thread of forum of users of centre + 943. ActRcvThrForCtrTch Receive the first message of a new thread of forum of teachers of centre + 944. ActRcvThrForInsUsr Receive the first message of a new thread of forum of users of the institution + 945. ActRcvThrForInsTch Receive the first message of a new thread of forum of teachers of the institution + 946. ActRcvThrForGenUsr Receive the first message of a new thread of forum of users general + 947. ActRcvThrForGenTch Receive the first message of a new thread of forum of teachers general + 948. ActRcvThrForSWAUsr Receive the first message of a new thread of forum of users of the platform + 949. ActRcvThrForSWATch Receive the first message of a new thread of forum of teachers of the platform + 950. ActRcvRepForCrsUsr Receive a message of answer in a thread existente in the forum of users of the course + 951. ActRcvRepForCrsTch Receive a message of answer in a thread existente in the forum of teachers of the course + 952. ActRcvRepForDegUsr Receive a message of answer in a thread existente in the forum of users of the degree + 953. ActRcvRepForDegTch Receive a message of answer in a thread existente in the forum of teachers of the degree + 954. ActRcvRepForCtrUsr Receive a message of answer in a thread existente in the forum of users of centre + 955. ActRcvRepForCtrTch Receive a message of answer in a thread existente in the forum of teachers of centre + 956. ActRcvRepForInsUsr Receive a message of answer in a thread existente in the forum of users of the institution + 957. ActRcvRepForInsTch Receive a message of answer in a thread existente in the forum of teachers of the institution + 958. ActRcvRepForGenUsr Receive a message of answer in a thread existente in the forum of users general + 959. ActRcvRepForGenTch Receive a message of answer in a thread existente in the forum of teachers general + 960. ActRcvRepForSWAUsr Receive a message of answer in a thread existente in the forum of users of the platform + 961. ActRcvRepForSWATch Receive a message of answer in a thread existente in the forum of teachers of the platform + 962. ActReqDelThrCrsUsr Request the removal of a thread of forum of users of the course + 963. ActReqDelThrCrsTch Request the removal of a thread of forum of teachers of the course + 964. ActReqDelThrDegUsr Request the removal of a thread of forum of users of the degree + 965. ActReqDelThrDegTch Request the removal of a thread of forum of teachers of the degree + 966. ActReqDelThrCtrUsr Request the removal of a thread of forum of users of centre + 967. ActReqDelThrCtrTch Request the removal of a thread of forum of teachers of centre + 968. ActReqDelThrInsUsr Request the removal of a thread of forum of users of the institution + 969. ActReqDelThrInsTch Request the removal of a thread of forum of teachers of the institution + 970. ActReqDelThrGenUsr Request the removal of a thread of forum of users general + 971. ActReqDelThrGenTch Request the removal of a thread of forum of teachers general + 972. ActReqDelThrSWAUsr Request the removal of a thread of forum of users of the platform + 973. ActReqDelThrSWATch Request the removal of a thread of forum of teachers of the platform + 974. ActDelThrForCrsUsr Remove a thread of forum of users of the course + 975. ActDelThrForCrsTch Remove a thread of forum of teachers of the course + 976. ActDelThrForDegUsr Remove a thread of forum of users of the degree + 977. ActDelThrForDegTch Remove a thread of forum of teachers of the degree + 978. ActDelThrForCtrUsr Remove a thread of forum of users of centre + 979. ActDelThrForCtrTch Remove a thread of forum of teachers of centre + 980. ActDelThrForInsUsr Remove a thread of forum of users of the institution + 981. ActDelThrForInsTch Remove a thread of forum of teachers of the institution + 982. ActDelThrForGenUsr Remove a thread of forum of users general + 983. ActDelThrForGenTch Remove a thread of forum of teachers general + 984. ActDelThrForSWAUsr Remove a thread of forum of users of the platform + 985. ActDelThrForSWATch Remove a thread of forum of teachers of the platform + 986. ActCutThrForCrsUsr Cut a thread of forum of users of the course + 987. ActCutThrForCrsTch Cut a thread of forum of teachers of the course + 988. ActCutThrForDegUsr Cut a thread of forum of users of the degree + 989. ActCutThrForDegTch Cut a thread of forum of teachers of the degree + 990. ActCutThrForCtrUsr Cut a thread of forum of users of centre + 991. ActCutThrForCtrTch Cut a thread of forum of teachers of centre + 992. ActCutThrForInsUsr Cut a thread of forum of users of the institution + 993. ActCutThrForInsTch Cut a thread of forum of teachers of the institution + 994. ActCutThrForGenUsr Cut a thread of forum of users general + 995. ActCutThrForGenTch Cut a thread of forum of teachers general + 996. ActCutThrForSWAUsr Cut a thread of forum of users of the platform + 997. ActCutThrForSWATch Cut a thread of forum of teachers of the platform + 998. ActPasThrForCrsUsr Paste a thread of forum of users of the course + 999. ActPasThrForCrsTch Paste a thread of forum of teachers of the course + 1000. ActPasThrForDegUsr Paste a thread of forum of users of the degree + 1001. ActPasThrForDegTch Paste a thread of forum of teachers of the degree + 1002. ActPasThrForCtrUsr Paste a thread of forum of users of centre + 1003. ActPasThrForCtrTch Paste a thread of forum of teachers of centre + 1004. ActPasThrForInsUsr Paste a thread of forum of users of the institution + 1005. ActPasThrForInsTch Paste a thread of forum of teachers of the institution + 1006. ActPasThrForGenUsr Paste a thread of forum of users general + 1007. ActPasThrForGenTch Paste a thread of forum of teachers general + 1008. ActPasThrForSWAUsr Paste a thread of forum of users of the platform + 1009. ActPasThrForSWATch Paste a thread of forum of teachers of the platform + 1010. ActDelPstForCrsUsr Remove a message of forum of users of the course + 1011. ActDelPstForCrsTch Remove a message of forum of teachers of the course + 1012. ActDelPstForDegUsr Remove a message of forum of users of the degree + 1013. ActDelPstForDegTch Remove a message of forum of teachers of the degree + 1014. ActDelPstForCtrUsr Remove a message of forum of users of centre + 1015. ActDelPstForCtrTch Remove a message of forum of teachers of centre + 1016. ActDelPstForInsUsr Remove a message of forum of users of the institution + 1017. ActDelPstForInsTch Remove a message of forum of teachers of the institution + 1018. ActDelPstForGenUsr Remove a message of forum of users general + 1019. ActDelPstForGenTch Remove a message of forum of teachers general + 1020. ActDelPstForSWAUsr Remove a message of forum of users of the platform + 1021. ActDelPstForSWATch Remove a message of forum of teachers of the platform + 1022. ActEnbPstForCrsUsr Enable a message of forum of users of the course + 1023. ActEnbPstForCrsTch Enable a message of forum of teachers of the course + 1024. ActEnbPstForDegUsr Enable a message of forum of users of the degree + 1025. ActEnbPstForDegTch Enable a message of forum of teachers of the degree + 1026. ActEnbPstForCtrUsr Enable a message of forum of users of centre + 1027. ActEnbPstForCtrTch Enable a message of forum of teachers of centre + 1028. ActEnbPstForInsUsr Enable a message of forum of users of the institution + 1029. ActEnbPstForInsTch Enable a message of forum of teachers of the institution + 1030. ActEnbPstForGenUsr Enable a message of forum of users general + 1031. ActEnbPstForGenTch Enable a message of forum of teachers general + 1032. ActEnbPstForSWAUsr Enable a message of forum of users of the platform + 1033. ActEnbPstForSWATch Enable a message of forum of teachers of the platform + 1034. ActDisPstForCrsUsr Disable a message of forum of users of the course + 1035. ActDisPstForCrsTch Disable a message of forum of teachers of the course + 1036. ActDisPstForDegUsr Disable a message of forum of users of the degree + 1037. ActDisPstForDegTch Disable a message of forum of teachers of the degree + 1038. ActDisPstForCtrUsr Disable a message of forum of users of centre + 1039. ActDisPstForCtrTch Disable a message of forum of teachers of centre + 1040. ActDisPstForInsUsr Disable a message of forum of users of the institution + 1041. ActDisPstForInsTch Disable a message of forum of teachers of the institution + 1042. ActDisPstForGenUsr Disable a message of forum of users general + 1043. ActDisPstForGenTch Disable a message of forum of teachers general + 1044. ActDisPstForSWAUsr Disable a message of forum of users of the platform + 1045. ActDisPstForSWATch Disable a message of forum of teachers of the platform - 1006. ActCht Enter in a chat room to chat + 1046. ActCht Enter in a chat room to chat Messages: - 1007. ActSeeNtf Show my recent notifications - 1008. ActSeeAnn Show global announcements - 1009. ActSeeNot Show notices - 1010. ActReqMsgUsr Write message to several users - 1011. ActSeeRcvMsg Show the messages received from other users (link in menu) - 1012. ActSeeSntMsg Show the messages sent to other users - 1013. ActMaiStd Send an e-mail to students - 1014. ActWriAnn Show form to create a new global announcement - 1015. ActRcvAnn Receive and create a new global announcement - 1016. ActHidAnn Hide a global announcement that was active - 1017. ActRevAnn Reveal a global announcement that was hidden - 1018. ActRemAnn Remove global announcement - 1019. ActShoNot Show (expand) a notice - 1020. ActWriNot Write a new notice - 1021. ActRcvNot Receive and create a new notice - 1022. ActHidNot Hide a notice that was active - 1023. ActRevNot Reveal a notice that was hidden - 1024. ActReqRemNot Request removal of a notice - 1025. ActRemNot Remove a notice - 1026. ActSeeNewNtf Show my recent notifications (link in top heading) - 1027. ActMrkNtfSee Mark all my notifications as seen - 1028. ActRcvMsgUsr Sent/Receive a message of a user - 1029. ActReqDelAllSntMsg Request the removal of todos the messages sent to other users - 1030. ActReqDelAllRcvMsg Request the removal of todos the messages received from other users - 1031. ActDelAllSntMsg Remove todos the messages sent to other users - 1032. ActDelAllRcvMsg Remove todos the messages received from other users - 1033. ActDelSntMsg Remove a message sent to other users - 1034. ActDelRcvMsg Remove a message received from other user - 1035. ActExpSntMsg See (expand) sent message - 1036. ActExpRcvMsg See (expand) received message - 1037. ActConSntMsg Hide (contract) sent message - 1038. ActConRcvMsg Hide (contract) received message - 1039. ActLstBanUsr List banned users - 1040. ActBanUsrMsg Ban the sender of a message when showing received messages - 1041. ActUnbUsrMsg Unban the sender of a message when showing received messages - 1042. ActUnbUsrLst Unban a user when listing banned users + 1047. ActSeeNtf Show my recent notifications + 1048. ActSeeAnn Show global announcements + 1049. ActSeeNot Show notices + 1050. ActReqMsgUsr Write message to several users + 1051. ActSeeRcvMsg Show the messages received from other users (link in menu) + 1052. ActSeeSntMsg Show the messages sent to other users + 1053. ActMaiStd Send an e-mail to students + 1054. ActWriAnn Show form to create a new global announcement + 1055. ActRcvAnn Receive and create a new global announcement + 1056. ActHidAnn Hide a global announcement that was active + 1057. ActRevAnn Reveal a global announcement that was hidden + 1058. ActRemAnn Remove global announcement + 1059. ActShoNot Show (expand) a notice + 1060. ActWriNot Write a new notice + 1061. ActRcvNot Receive and create a new notice + 1062. ActHidNot Hide a notice that was active + 1063. ActRevNot Reveal a notice that was hidden + 1064. ActReqRemNot Request removal of a notice + 1065. ActRemNot Remove a notice + 1066. ActSeeNewNtf Show my recent notifications (link in top heading) + 1067. ActMrkNtfSee Mark all my notifications as seen + 1068. ActRcvMsgUsr Sent/Receive a message of a user + 1069. ActReqDelAllSntMsg Request the removal of todos the messages sent to other users + 1070. ActReqDelAllRcvMsg Request the removal of todos the messages received from other users + 1071. ActDelAllSntMsg Remove todos the messages sent to other users + 1072. ActDelAllRcvMsg Remove todos the messages received from other users + 1073. ActDelSntMsg Remove a message sent to other users + 1074. ActDelRcvMsg Remove a message received from other user + 1075. ActExpSntMsg See (expand) sent message + 1076. ActExpRcvMsg See (expand) received message + 1077. ActConSntMsg Hide (contract) sent message + 1078. ActConRcvMsg Hide (contract) received message + 1079. ActLstBanUsr List banned users + 1080. ActBanUsrMsg Ban the sender of a message when showing received messages + 1081. ActUnbUsrMsg Unban the sender of a message when showing received messages + 1082. ActUnbUsrLst Unban a user when listing banned users Statistics: - 1043. ActSeeAllSvy List all surveys in pages - 1044. ActReqUseGbl Request showing use of the platform - 1045. ActSeePhoDeg Show a class photo with the average photos of the students of each degree - 1046. ActReqStaCrs Request statistics of courses - 1047. ActReqAccGbl Request query of clicks to the complete platform + 1083. ActSeeAllSvy List all surveys in pages + 1084. ActReqUseGbl Request showing use of the platform + 1085. ActSeePhoDeg Show a class photo with the average photos of the students of each degree + 1086. ActReqStaCrs Request statistics of courses + 1087. ActReqAccGbl Request query of clicks to the complete platform - 1048. ActSeeOneSvy Show one survey - 1049. ActAnsSvy Answer a survey - 1050. ActFrmNewSvy Form to create a new survey - 1051. ActEdiOneSvy Edit one survey - 1052. ActNewSvy Create new survey - 1053. ActChgSvy Modify data of an existing survey - 1054. ActReqRemSvy Request the removal of a survey - 1055. ActRemSvy Remove survey - 1056. ActReqRstSvy Request the reset of answers of a survey - 1057. ActRstSvy Reset answers of survey - 1058. ActHidSvy Hide survey - 1059. ActShoSvy Show survey - 1060. ActEdiOneSvyQst Edit a new question for a survey - 1061. ActRcvSvyQst Receive a question of a survey - 1062. ActReqRemSvyQst Request the removal of a question of a survey - 1063. ActRemSvyQst Confirm the removal of a question of a survey - 1064. ActSeeUseGbl Show use of the platform - 1065. ActPrnPhoDeg Show vista of impresión of the class photo with the average photos of the students of each degree. - 1066. ActCalPhoDeg Compute the average photos of the students of each degree - 1067. ActSeeAccGbl Query clicks to the complete platform - 1068. ActReqAccCrs Request query of clicks in the course - 1069. ActSeeAccCrs Query clicks to current course - 1070. ActSeeAllStaCrs Show statistics of courses + 1088. ActSeeOneSvy Show one survey + 1089. ActAnsSvy Answer a survey + 1090. ActFrmNewSvy Form to create a new survey + 1091. ActEdiOneSvy Edit one survey + 1092. ActNewSvy Create new survey + 1093. ActChgSvy Modify data of an existing survey + 1094. ActReqRemSvy Request the removal of a survey + 1095. ActRemSvy Remove survey + 1096. ActReqRstSvy Request the reset of answers of a survey + 1097. ActRstSvy Reset answers of survey + 1098. ActHidSvy Hide survey + 1099. ActShoSvy Show survey + 1100. ActEdiOneSvyQst Edit a new question for a survey + 1101. ActRcvSvyQst Receive a question of a survey + 1102. ActReqRemSvyQst Request the removal of a question of a survey + 1103. ActRemSvyQst Confirm the removal of a question of a survey + 1104. ActSeeUseGbl Show use of the platform + 1105. ActPrnPhoDeg Show vista of impresión of the class photo with the average photos of the students of each degree. + 1106. ActCalPhoDeg Compute the average photos of the students of each degree + 1107. ActSeeAccGbl Query clicks to the complete platform + 1108. ActReqAccCrs Request query of clicks in the course + 1109. ActSeeAccCrs Query clicks to current course + 1110. ActSeeAllStaCrs Show statistics of courses Profile: - 1071. ActFrmLogIn Show landing page (forms to log in and to create a new account) - 1072. ActFrmRolSes Show form to log out and to change current role in this session - 1073. ActMyCrs Select one of my courses - 1074. ActSeeMyTT Show the timetable of all courses of the logged user - 1075. ActFrmUsrAcc Show form to the creation or change of user's account - 1076. ActReqEdiRecCom Request the edition of the record with the personal data of the user - 1077. ActEdiPrf Show forms to edit preferences - 1078. ActAdmBrf Show the briefcase of private archives - 1079. ActMFUAct Show most frequently used actions + 1111. ActFrmLogIn Show landing page (forms to log in and to create a new account) + 1112. ActFrmRolSes Show form to log out and to change current role in this session + 1113. ActMyCrs Select one of my courses + 1114. ActSeeMyTT Show the timetable of all courses of the logged user + 1115. ActFrmUsrAcc Show form to the creation or change of user's account + 1116. ActReqEdiRecCom Request the edition of the record with the personal data of the user + 1117. ActEdiPrf Show forms to edit preferences + 1118. ActAdmBrf Show the briefcase of private archives + 1119. ActMFUAct Show most frequently used actions - 1080. ActReqSndNewPwd Show form to send a new password via e-mail - 1081. ActSndNewPwd Send a new password via e-mail - 1082. ActLogOut Close session + 1120. ActReqSndNewPwd Show form to send a new password via e-mail + 1121. ActSndNewPwd Send a new password via e-mail + 1122. ActLogOut Close session - 1083. ActAutUsrInt Authentify user internally (directly from the platform) - 1084. ActAutUsrExt Authentify user externally (remotely from an external site) - 1085. ActAutUsrChgLan Change language to my language just after authentication - 1086. ActAnnSee Mark announcement as seen - 1087. ActChgMyRol Change type of logged user + 1123. ActAutUsrInt Authentify user internally (directly from the platform) + 1124. ActAutUsrExt Authentify user externally (remotely from an external site) + 1125. ActAutUsrChgLan Change language to my language just after authentication + 1126. ActAnnSee Mark announcement as seen + 1127. ActChgMyRol Change type of logged user - 1088. ActCreUsrAcc Create new user account - 1089. ActRemID_Me Remove one of my user's IDs - 1090. ActNewIDMe Create a new user's ID for me - 1091. ActRemOldNic Remove one of my old nicknames - 1092. ActChgNic Change my nickname - 1093. ActRemMaiMe Remove one of my old e-mails - 1094. ActNewMaiMe Change my e-mail address - 1095. ActCnfMai Confirm e-mail address - 1096. ActFrmChgMyPwd Show form to the change of the password - 1097. ActChgPwd Change the password - 1098. ActReqRemMyAcc Request the removal of my account - 1099. ActRemMyAcc Remove my account + 1128. ActCreUsrAcc Create new user account + 1129. ActRemID_Me Remove one of my user's IDs + 1130. ActNewIDMe Create a new user's ID for me + 1131. ActRemOldNic Remove one of my old nicknames + 1132. ActChgNic Change my nickname + 1133. ActRemMaiMe Remove one of my old e-mails + 1134. ActNewMaiMe Change my e-mail address + 1135. ActCnfMai Confirm e-mail address + 1136. ActFrmChgMyPwd Show form to the change of the password + 1137. ActChgPwd Change the password + 1138. ActReqRemMyAcc Request the removal of my account + 1139. ActRemMyAcc Remove my account - 1100. ActChgMyData Update my personal data + 1140. ActChgMyData Update my personal data - 1101. ActReqMyPho Show form to send my photo - 1102. ActDetMyPho Receive my photo and detect faces on it - 1103. ActUpdMyPho Update my photo - 1104. ActRemMyPho Remove my photo + 1141. ActReqMyPho Show form to send my photo + 1142. ActDetMyPho Receive my photo and detect faces on it + 1143. ActUpdMyPho Update my photo + 1144. ActRemMyPho Remove my photo - 1105. ActEdiPri Edit my privacy - 1106. ActChgPriPho Change privacy of my photo - 1107. ActChgPriPrf Change privacy of my public profile + 1145. ActEdiPri Edit my privacy + 1146. ActChgPriPho Change privacy of my photo + 1147. ActChgPriPrf Change privacy of my public profile - 1108. ActReqEdiMyIns Request the edition of my institution, centre and department - 1109. ActChgCtyMyIns Change the country of my institution - 1110. ActChgMyIns Change my institution - 1111. ActChgMyCtr Change my centre - 1112. ActChgMyDpt Change my department - 1113. ActChgMyOff Change my office - 1114. ActChgMyOffPho Change my office phone + 1158. ActReqEdiMyIns Request the edition of my institution, centre and department + 1159. ActChgCtyMyIns Change the country of my institution + 1150. ActChgMyIns Change my institution + 1151. ActChgMyCtr Change my centre + 1152. ActChgMyDpt Change my department + 1155. ActChgMyOff Change my office + 1154. ActChgMyOffPho Change my office phone - 1115. ActReqEdiMyNet Request the edition of my social networks - 1116. ActChgMyNet Change my web and social networks + 1155. ActReqEdiMyNet Request the edition of my social networks + 1156. ActChgMyNet Change my web and social networks - 1117. ActChgThe Change theme - 1118. ActReqChgLan Ask if change language - 1119. ActChgLan Change language - 1120. ActChg1stDay Change first day of the week - 1121. ActChgCol Change side columns - 1122. ActHidLftCol Hide left side column - 1123. ActHidRgtCol Hide right side column - 1124. ActShoLftCol Show left side column - 1125. ActShoRgtCol Show right side column - 1126. ActChgIco Change icon set - 1127. ActChgMnu Change menu - 1128. ActChgNtfPrf Change whether to notify by e-mail new messages - 1129. ActPrnUsrQR Show my QR code ready to print + 1157. ActChgThe Change theme + 1158. ActReqChgLan Ask if change language + 1159. ActChgLan Change language + 1160. ActChg1stDay Change first day of the week + 1161. ActChgCol Change side columns + 1162. ActHidLftCol Hide left side column + 1163. ActHidRgtCol Hide right side column + 1164. ActShoLftCol Show left side column + 1165. ActShoRgtCol Show right side column + 1166. ActChgIco Change icon set + 1167. ActChgMnu Change menu + 1168. ActChgNtfPrf Change whether to notify by e-mail new messages + 1169. ActPrnUsrQR Show my QR code ready to print - 1130. ActPrnMyTT Show the timetable listo to impresión of all my courses - 1131. ActEdiTut Edit the timetable of tutorías - 1132. ActChgTut Modify the timetable of tutorías - 1133. ActChgMyTT1stDay Change first day of week and show timetable of the course + 1170. ActPrnMyTT Show the timetable listo to impresión of all my courses + 1171. ActEdiTut Edit the timetable of tutorías + 1172. ActChgTut Modify the timetable of tutorías + 1173. ActChgMyTT1stDay Change first day of week and show timetable of the course - 1134. ActReqRemFilBrf Request removal of a file of the briefcase - 1135. ActRemFilBrf Remove a file of the briefcase - 1136. ActRemFolBrf Remove a folder empty of the briefcase - 1137. ActCopBrf Set source of copy in the briefcase - 1138. ActPasBrf Paste a folder or file in the briefcase - 1139. ActRemTreBrf Remove a folder no empty of the briefcase - 1140. ActFrmCreBrf Form to crear a folder or file in the briefcase - 1141. ActCreFolBrf Create a new folder in the briefcase - 1142. ActCreLnkBrf Create a new link in the briefcase - 1143. ActRenFolBrf Rename a folder of the briefcase - 1144. ActRcvFilBrfDZ Receive a file in the briefcase using Dropzone.js - 1145. ActRcvFilBrfCla Receive a file in the briefcase using the classic way - 1146. ActExpBrf Expand a folder in briefcase - 1147. ActConBrf Contract a folder in briefcase - 1148. ActZIPBrf Compress a folder in briefcase - 1149. ActReqDatBrf Ask for metadata of a file in the briefcase - 1150. ActChgDatBrf Change metadata of a file in the briefcase - 1151. ActDowBrf Download a file in the briefcase - 1152. ActReqRemOldBrf Ask for removing old files in the briefcase - 1153. ActRemOldBrf Remove old files in the briefcase + 1174. ActReqRemFilBrf Request removal of a file of the briefcase + 1175. ActRemFilBrf Remove a file of the briefcase + 1176. ActRemFolBrf Remove a folder empty of the briefcase + 1177. ActCopBrf Set source of copy in the briefcase + 1178. ActPasBrf Paste a folder or file in the briefcase + 1179. ActRemTreBrf Remove a folder no empty of the briefcase + 1180. ActFrmCreBrf Form to crear a folder or file in the briefcase + 1181. ActCreFolBrf Create a new folder in the briefcase + 1182. ActCreLnkBrf Create a new link in the briefcase + 1183. ActRenFolBrf Rename a folder of the briefcase + 1184. ActRcvFilBrfDZ Receive a file in the briefcase using Dropzone.js + 1185. ActRcvFilBrfCla Receive a file in the briefcase using the classic way + 1186. ActExpBrf Expand a folder in briefcase + 1187. ActConBrf Contract a folder in briefcase + 1188. ActZIPBrf Compress a folder in briefcase + 1189. ActReqDatBrf Ask for metadata of a file in the briefcase + 1190. ActChgDatBrf Change metadata of a file in the briefcase + 1191. ActDowBrf Download a file in the briefcase + 1192. ActReqRemOldBrf Ask for removing old files in the briefcase + 1193. ActRemOldBrf Remove old files in the briefcase */ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = @@ -1722,11 +1766,12 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActSeeTchGui */{ 784, 2,TabCrs,ActSeeTchGui ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Inf_ShowInfo ,"guide64x64.gif" }, /* ActSeeSyl */{1242, 3,TabCrs,ActSeeSyl ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Inf_ShowInfo ,"presentation64x64.gif"}, /* ActSeeAdmDocCrsGrp*/{ 0, 4,TabCrs,ActSeeAdmDocCrsGrp ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,"folder64x64.gif" }, - /* ActAdmShaCrsGrp */{ 461, 5,TabCrs,ActAdmShaCrsGrp ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,"folderusers64x64.gif" }, - /* ActSeeCrsTT */{ 25, 6,TabCrs,ActSeeCrsTT ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,TT_ShowClassTimeTable ,"clock64x64.gif" }, - /* ActSeeBib */{ 32, 7,TabCrs,ActSeeBib ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Inf_ShowInfo ,"books64x64.gif" }, - /* ActSeeFAQ */{ 54, 8,TabCrs,ActSeeFAQ ,0x118,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Inf_ShowInfo ,"faq64x64.gif" }, - /* ActSeeCrsLnk */{ 9, 9,TabCrs,ActSeeCrsLnk ,0x118,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Inf_ShowInfo ,"link64x64.gif" }, + /* ActAdmTchCrsGrp */{1525, 5,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,"folder64x64.gif" }, + /* ActAdmShaCrsGrp */{ 461, 6,TabCrs,ActAdmShaCrsGrp ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,"folderusers64x64.gif" }, + /* ActSeeCrsTT */{ 25, 7,TabCrs,ActSeeCrsTT ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,TT_ShowClassTimeTable ,"clock64x64.gif" }, + /* ActSeeBib */{ 32, 8,TabCrs,ActSeeBib ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Inf_ShowInfo ,"books64x64.gif" }, + /* ActSeeFAQ */{ 54, 9,TabCrs,ActSeeFAQ ,0x118,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Inf_ShowInfo ,"faq64x64.gif" }, + /* ActSeeCrsLnk */{ 9,10,TabCrs,ActSeeCrsLnk ,0x118,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Inf_ShowInfo ,"link64x64.gif" }, // Actions not in menu: /* ActDegSch */{1185,-1,TabCrs,ActCrsReqSch ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Sch_GetParamsSearch ,Sch_CrsSearch ,NULL}, @@ -1822,6 +1867,48 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActChgDatAdmDocGrp*/{ 998,-1,TabCrs,ActSeeAdmDocCrsGrp ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ChgFileMetadata ,NULL}, /* ActDowAdmDocGrp */{1114,-1,TabCrs,ActSeeAdmDocCrsGrp ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_DOWNLD_FILE,Brw_DownloadFile ,NULL ,NULL}, + /* ActChgToAdmTch */{1526,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,NULL}, + + /* ActAdmTchCrs */{1527,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,NULL}, + /* ActReqRemFilTchCrs*/{1528,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_AskRemFileFromTree ,NULL}, + /* ActRemFilTchCrs */{1529,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RemFileFromTree ,NULL}, + /* ActRemFolTchCrs */{1530,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RemFolderFromTree ,NULL}, + /* ActCopTchCrs */{1531,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_CopyFromFileBrowser ,NULL}, + /* ActPasTchCrs */{1532,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_PasteIntoFileBrowser ,NULL}, + /* ActRemTreTchCrs */{1533,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RemSubtreeInFileBrowser ,NULL}, + /* ActFrmCreTchCrs */{1534,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFormFileBrowser ,NULL}, + /* ActCreFolTchCrs */{1535,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RecFolderFileBrowser ,NULL}, + /* ActCreLnkTchCrs */{1536,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RecLinkFileBrowser ,NULL}, + /* ActRenFolTchCrs */{1537,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RenFolderFileBrowser ,NULL}, + /* ActRcvFilTchCrsDZ */{1538,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_DATA,Act_UPLOAD_FILE,Brw_RcvFileInFileBrwDropzone,NULL ,NULL}, + /* ActRcvFilTchCrsCla*/{1539,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Brw_RcvFileInFileBrwClassic ,NULL}, + /* ActExpTchCrs */{1540,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ExpandFileTree ,NULL}, + /* ActConTchCrs */{1541,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ContractFileTree ,NULL}, + /* ActZIPTchCrs */{1542,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,ZIP_CompressFileTree ,NULL}, + /* ActReqDatTchCrs */{1543,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileMetadata ,NULL}, + /* ActChgDatTchCrs */{1544,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ChgFileMetadata ,NULL}, + /* ActDowTchCrs */{1545,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_DOWNLD_FILE,Brw_DownloadFile ,NULL ,NULL}, + + /* ActAdmTchGrp */{1546,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,NULL}, + /* ActReqRemFilTchGrp*/{1547,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_AskRemFileFromTree ,NULL}, + /* ActRemFilTchGrp */{1548,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RemFileFromTree ,NULL}, + /* ActRemFolTchGrp */{1549,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RemFolderFromTree ,NULL}, + /* ActCopTchGrp */{1550,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_CopyFromFileBrowser ,NULL}, + /* ActPasTchGrp */{1551,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_PasteIntoFileBrowser ,NULL}, + /* ActRemTreTchGrp */{1552,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RemSubtreeInFileBrowser ,NULL}, + /* ActFrmCreTchGrp */{1553,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFormFileBrowser ,NULL}, + /* ActCreFolTchGrp */{1554,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RecFolderFileBrowser ,NULL}, + /* ActCreLnkTchGrp */{1555,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RecLinkFileBrowser ,NULL}, + /* ActRenFolTchGrp */{1556,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RenFolderFileBrowser ,NULL}, + /* ActRcvFilTchGrpDZ */{1557,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_DATA,Act_UPLOAD_FILE,Brw_RcvFileInFileBrwDropzone,NULL ,NULL}, + /* ActRcvFilTchGrpCla*/{1558,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Brw_RcvFileInFileBrwClassic ,NULL}, + /* ActExpTchGrp */{1559,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ExpandFileTree ,NULL}, + /* ActConTchGrp */{1560,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ContractFileTree ,NULL}, + /* ActZIPTchGrp */{1561,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,ZIP_CompressFileTree ,NULL}, + /* ActReqDatTchGrp */{1562,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileMetadata ,NULL}, + /* ActChgDatTchGrp */{1563,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ChgFileMetadata ,NULL}, + /* ActDowTchGrp */{1564,-1,TabCrs,ActAdmTchCrsGrp ,0x1F0,0x1E0,0x000,Act_CONTENT_NORM,Act_DOWNLD_FILE,Brw_DownloadFile ,NULL ,NULL}, + /* ActChgToAdmSha */{1197,-1,TabCrs,ActAdmShaCrsGrp ,0x118,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,NULL}, /* ActAdmShaCrs */{1202,-1,TabCrs,ActAdmShaCrsGrp ,0x118,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,NULL}, @@ -4244,6 +4331,46 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq ActUpdSignUpReq, // #1522 ActReqRemTstQst, // #1523 ActReqRemSvyQst, // #1524 + ActAdmTchCrsGrp, // #1525 + ActChgToAdmTch, // #1526 + ActAdmTchCrs, // #1527 + ActReqRemFilTchCrs, // #1528 + ActRemFilTchCrs, // #1529 + ActRemFolTchCrs, // #1530 + ActCopTchCrs, // #1531 + ActPasTchCrs, // #1532 + ActRemTreTchCrs, // #1533 + ActFrmCreTchCrs, // #1534 + ActCreFolTchCrs, // #1535 + ActCreLnkTchCrs, // #1536 + ActRenFolTchCrs, // #1537 + ActRcvFilTchCrsDZ, // #1538 + ActRcvFilTchCrsCla, // #1539 + ActExpTchCrs, // #1540 + ActConTchCrs, // #1541 + ActZIPTchCrs, // #1542 + ActReqDatTchCrs, // #1543 + ActChgDatTchCrs, // #1544 + ActDowTchCrs, // #1545 + ActAdmTchGrp, // #1546 + ActReqRemFilTchGrp, // #1547 + ActRemFilTchGrp, // #1548 + ActRemFolTchGrp, // #1549 + ActCopTchGrp, // #1550 + ActPasTchGrp, // #1551 + ActRemTreTchGrp, // #1552 + ActFrmCreTchGrp, // #1553 + ActCreFolTchGrp, // #1554 + ActCreLnkTchGrp, // #1555 + ActRenFolTchGrp, // #1556 + ActRcvFilTchGrpDZ, // #1557 + ActRcvFilTchGrpCla, // #1558 + ActExpTchGrp, // #1559 + ActConTchGrp, // #1560 + ActZIPTchGrp, // #1561 + ActReqDatTchGrp, // #1562 + ActChgDatTchGrp, // #1563 + ActDowTchGrp, // #1564 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index f2be37f6..64feb109 100644 --- a/swad_action.h +++ b/swad_action.h @@ -72,9 +72,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+15+90+70+67+205+184+144+172+36+28+83) +#define Act_NUM_ACTIONS (1+9+51+15+90+70+67+245+184+144+172+36+28+83) -#define Act_MAX_ACTION_COD 1524 +#define Act_MAX_ACTION_COD 1564 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20 @@ -452,218 +452,261 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica #define ActSeeTchGui (ActDowShaDeg+ 3) #define ActSeeSyl (ActDowShaDeg+ 4) #define ActSeeAdmDocCrsGrp (ActDowShaDeg+ 5) -#define ActAdmShaCrsGrp (ActDowShaDeg+ 6) -#define ActSeeCrsTT (ActDowShaDeg+ 7) -#define ActSeeBib (ActDowShaDeg+ 8) -#define ActSeeFAQ (ActDowShaDeg+ 9) -#define ActSeeCrsLnk (ActDowShaDeg+ 10) +#define ActAdmTchCrsGrp (ActDowShaDeg+ 6) +#define ActAdmShaCrsGrp (ActDowShaDeg+ 7) +#define ActSeeCrsTT (ActDowShaDeg+ 8) +#define ActSeeBib (ActDowShaDeg+ 9) +#define ActSeeFAQ (ActDowShaDeg+ 10) +#define ActSeeCrsLnk (ActDowShaDeg+ 11) // Secondary actions -#define ActCrsSch (ActDowShaDeg+ 11) -#define ActPrnCrsInf (ActDowShaDeg+ 12) -#define ActChgCrsLog (ActDowShaDeg+ 13) -#define ActEdiCrsInf (ActDowShaDeg+ 14) -#define ActEdiTchGui (ActDowShaDeg+ 15) -#define ActPrnCrsTT (ActDowShaDeg+ 16) -#define ActEdiCrsTT (ActDowShaDeg+ 17) -#define ActChgCrsTT (ActDowShaDeg+ 18) -#define ActChgCrsTT1stDay (ActDowShaDeg+ 19) -#define ActSeeSylLec (ActDowShaDeg+ 20) -#define ActSeeSylPra (ActDowShaDeg+ 21) -#define ActEdiSylLec (ActDowShaDeg+ 22) -#define ActEdiSylPra (ActDowShaDeg+ 23) -#define ActDelItmSylLec (ActDowShaDeg+ 24) -#define ActDelItmSylPra (ActDowShaDeg+ 25) -#define ActUp_IteSylLec (ActDowShaDeg+ 26) -#define ActUp_IteSylPra (ActDowShaDeg+ 27) -#define ActDwnIteSylLec (ActDowShaDeg+ 28) -#define ActDwnIteSylPra (ActDowShaDeg+ 29) -#define ActRgtIteSylLec (ActDowShaDeg+ 30) -#define ActRgtIteSylPra (ActDowShaDeg+ 31) -#define ActLftIteSylLec (ActDowShaDeg+ 32) -#define ActLftIteSylPra (ActDowShaDeg+ 33) -#define ActInsIteSylLec (ActDowShaDeg+ 34) -#define ActInsIteSylPra (ActDowShaDeg+ 35) -#define ActModIteSylLec (ActDowShaDeg+ 36) -#define ActModIteSylPra (ActDowShaDeg+ 37) +#define ActCrsSch (ActDowShaDeg+ 12) +#define ActPrnCrsInf (ActDowShaDeg+ 13) +#define ActChgCrsLog (ActDowShaDeg+ 14) +#define ActEdiCrsInf (ActDowShaDeg+ 15) +#define ActEdiTchGui (ActDowShaDeg+ 16) +#define ActPrnCrsTT (ActDowShaDeg+ 17) +#define ActEdiCrsTT (ActDowShaDeg+ 18) +#define ActChgCrsTT (ActDowShaDeg+ 19) +#define ActChgCrsTT1stDay (ActDowShaDeg+ 20) +#define ActSeeSylLec (ActDowShaDeg+ 21) +#define ActSeeSylPra (ActDowShaDeg+ 22) +#define ActEdiSylLec (ActDowShaDeg+ 23) +#define ActEdiSylPra (ActDowShaDeg+ 24) +#define ActDelItmSylLec (ActDowShaDeg+ 25) +#define ActDelItmSylPra (ActDowShaDeg+ 26) +#define ActUp_IteSylLec (ActDowShaDeg+ 27) +#define ActUp_IteSylPra (ActDowShaDeg+ 28) +#define ActDwnIteSylLec (ActDowShaDeg+ 29) +#define ActDwnIteSylPra (ActDowShaDeg+ 30) +#define ActRgtIteSylLec (ActDowShaDeg+ 31) +#define ActRgtIteSylPra (ActDowShaDeg+ 32) +#define ActLftIteSylLec (ActDowShaDeg+ 33) +#define ActLftIteSylPra (ActDowShaDeg+ 34) +#define ActInsIteSylLec (ActDowShaDeg+ 35) +#define ActInsIteSylPra (ActDowShaDeg+ 36) +#define ActModIteSylLec (ActDowShaDeg+ 37) +#define ActModIteSylPra (ActDowShaDeg+ 38) -#define ActChgToSeeDocCrs (ActDowShaDeg+ 38) -#define ActSeeDocCrs (ActDowShaDeg+ 39) -#define ActExpSeeDocCrs (ActDowShaDeg+ 40) -#define ActConSeeDocCrs (ActDowShaDeg+ 41) -#define ActZIPSeeDocCrs (ActDowShaDeg+ 42) -#define ActReqDatSeeDocCrs (ActDowShaDeg+ 43) -#define ActDowSeeDocCrs (ActDowShaDeg+ 44) +#define ActChgToSeeDocCrs (ActDowShaDeg+ 39) +#define ActSeeDocCrs (ActDowShaDeg+ 40) +#define ActExpSeeDocCrs (ActDowShaDeg+ 41) +#define ActConSeeDocCrs (ActDowShaDeg+ 42) +#define ActZIPSeeDocCrs (ActDowShaDeg+ 43) +#define ActReqDatSeeDocCrs (ActDowShaDeg+ 44) +#define ActDowSeeDocCrs (ActDowShaDeg+ 45) -#define ActSeeDocGrp (ActDowShaDeg+ 45) -#define ActExpSeeDocGrp (ActDowShaDeg+ 46) -#define ActConSeeDocGrp (ActDowShaDeg+ 47) -#define ActZIPSeeDocGrp (ActDowShaDeg+ 48) -#define ActReqDatSeeDocGrp (ActDowShaDeg+ 49) -#define ActDowSeeDocGrp (ActDowShaDeg+ 50) +#define ActSeeDocGrp (ActDowShaDeg+ 46) +#define ActExpSeeDocGrp (ActDowShaDeg+ 47) +#define ActConSeeDocGrp (ActDowShaDeg+ 48) +#define ActZIPSeeDocGrp (ActDowShaDeg+ 49) +#define ActReqDatSeeDocGrp (ActDowShaDeg+ 50) +#define ActDowSeeDocGrp (ActDowShaDeg+ 51) -#define ActChgToAdmDocCrs (ActDowShaDeg+ 51) -#define ActAdmDocCrs (ActDowShaDeg+ 52) -#define ActReqRemFilDocCrs (ActDowShaDeg+ 53) -#define ActRemFilDocCrs (ActDowShaDeg+ 54) -#define ActRemFolDocCrs (ActDowShaDeg+ 55) -#define ActCopDocCrs (ActDowShaDeg+ 56) -#define ActPasDocCrs (ActDowShaDeg+ 57) -#define ActRemTreDocCrs (ActDowShaDeg+ 58) -#define ActFrmCreDocCrs (ActDowShaDeg+ 59) -#define ActCreFolDocCrs (ActDowShaDeg+ 60) -#define ActCreLnkDocCrs (ActDowShaDeg+ 61) -#define ActRenFolDocCrs (ActDowShaDeg+ 62) -#define ActRcvFilDocCrsDZ (ActDowShaDeg+ 63) -#define ActRcvFilDocCrsCla (ActDowShaDeg+ 64) -#define ActExpAdmDocCrs (ActDowShaDeg+ 65) -#define ActConAdmDocCrs (ActDowShaDeg+ 66) -#define ActZIPAdmDocCrs (ActDowShaDeg+ 67) -#define ActShoDocCrs (ActDowShaDeg+ 68) -#define ActHidDocCrs (ActDowShaDeg+ 69) -#define ActReqDatAdmDocCrs (ActDowShaDeg+ 70) -#define ActChgDatAdmDocCrs (ActDowShaDeg+ 71) -#define ActDowAdmDocCrs (ActDowShaDeg+ 72) +#define ActChgToAdmDocCrs (ActDowShaDeg+ 52) +#define ActAdmDocCrs (ActDowShaDeg+ 53) +#define ActReqRemFilDocCrs (ActDowShaDeg+ 54) +#define ActRemFilDocCrs (ActDowShaDeg+ 55) +#define ActRemFolDocCrs (ActDowShaDeg+ 56) +#define ActCopDocCrs (ActDowShaDeg+ 57) +#define ActPasDocCrs (ActDowShaDeg+ 58) +#define ActRemTreDocCrs (ActDowShaDeg+ 59) +#define ActFrmCreDocCrs (ActDowShaDeg+ 60) +#define ActCreFolDocCrs (ActDowShaDeg+ 61) +#define ActCreLnkDocCrs (ActDowShaDeg+ 62) +#define ActRenFolDocCrs (ActDowShaDeg+ 63) +#define ActRcvFilDocCrsDZ (ActDowShaDeg+ 64) +#define ActRcvFilDocCrsCla (ActDowShaDeg+ 65) +#define ActExpAdmDocCrs (ActDowShaDeg+ 66) +#define ActConAdmDocCrs (ActDowShaDeg+ 67) +#define ActZIPAdmDocCrs (ActDowShaDeg+ 68) +#define ActShoDocCrs (ActDowShaDeg+ 69) +#define ActHidDocCrs (ActDowShaDeg+ 70) +#define ActReqDatAdmDocCrs (ActDowShaDeg+ 71) +#define ActChgDatAdmDocCrs (ActDowShaDeg+ 72) +#define ActDowAdmDocCrs (ActDowShaDeg+ 73) -#define ActAdmDocGrp (ActDowShaDeg+ 73) -#define ActReqRemFilDocGrp (ActDowShaDeg+ 74) -#define ActRemFilDocGrp (ActDowShaDeg+ 75) -#define ActRemFolDocGrp (ActDowShaDeg+ 76) -#define ActCopDocGrp (ActDowShaDeg+ 77) -#define ActPasDocGrp (ActDowShaDeg+ 78) -#define ActRemTreDocGrp (ActDowShaDeg+ 79) -#define ActFrmCreDocGrp (ActDowShaDeg+ 80) -#define ActCreFolDocGrp (ActDowShaDeg+ 81) -#define ActCreLnkDocGrp (ActDowShaDeg+ 82) -#define ActRenFolDocGrp (ActDowShaDeg+ 83) -#define ActRcvFilDocGrpDZ (ActDowShaDeg+ 84) -#define ActRcvFilDocGrpCla (ActDowShaDeg+ 85) -#define ActExpAdmDocGrp (ActDowShaDeg+ 86) -#define ActConAdmDocGrp (ActDowShaDeg+ 87) -#define ActZIPAdmDocGrp (ActDowShaDeg+ 88) -#define ActShoDocGrp (ActDowShaDeg+ 89) -#define ActHidDocGrp (ActDowShaDeg+ 90) -#define ActReqDatAdmDocGrp (ActDowShaDeg+ 91) -#define ActChgDatAdmDocGrp (ActDowShaDeg+ 92) -#define ActDowAdmDocGrp (ActDowShaDeg+ 93) +#define ActAdmDocGrp (ActDowShaDeg+ 74) +#define ActReqRemFilDocGrp (ActDowShaDeg+ 75) +#define ActRemFilDocGrp (ActDowShaDeg+ 76) +#define ActRemFolDocGrp (ActDowShaDeg+ 77) +#define ActCopDocGrp (ActDowShaDeg+ 78) +#define ActPasDocGrp (ActDowShaDeg+ 79) +#define ActRemTreDocGrp (ActDowShaDeg+ 80) +#define ActFrmCreDocGrp (ActDowShaDeg+ 81) +#define ActCreFolDocGrp (ActDowShaDeg+ 82) +#define ActCreLnkDocGrp (ActDowShaDeg+ 83) +#define ActRenFolDocGrp (ActDowShaDeg+ 84) +#define ActRcvFilDocGrpDZ (ActDowShaDeg+ 85) +#define ActRcvFilDocGrpCla (ActDowShaDeg+ 86) +#define ActExpAdmDocGrp (ActDowShaDeg+ 87) +#define ActConAdmDocGrp (ActDowShaDeg+ 88) +#define ActZIPAdmDocGrp (ActDowShaDeg+ 89) +#define ActShoDocGrp (ActDowShaDeg+ 90) +#define ActHidDocGrp (ActDowShaDeg+ 91) +#define ActReqDatAdmDocGrp (ActDowShaDeg+ 92) +#define ActChgDatAdmDocGrp (ActDowShaDeg+ 93) +#define ActDowAdmDocGrp (ActDowShaDeg+ 94) -#define ActChgToAdmSha (ActDowShaDeg+ 94) +#define ActChgToAdmTch (ActDowShaDeg+ 95) -#define ActAdmShaCrs (ActDowShaDeg+ 95) -#define ActReqRemFilShaCrs (ActDowShaDeg+ 96) -#define ActRemFilShaCrs (ActDowShaDeg+ 97) -#define ActRemFolShaCrs (ActDowShaDeg+ 98) -#define ActCopShaCrs (ActDowShaDeg+ 99) -#define ActPasShaCrs (ActDowShaDeg+100) -#define ActRemTreShaCrs (ActDowShaDeg+101) -#define ActFrmCreShaCrs (ActDowShaDeg+102) -#define ActCreFolShaCrs (ActDowShaDeg+103) -#define ActCreLnkShaCrs (ActDowShaDeg+104) -#define ActRenFolShaCrs (ActDowShaDeg+105) -#define ActRcvFilShaCrsDZ (ActDowShaDeg+106) -#define ActRcvFilShaCrsCla (ActDowShaDeg+107) -#define ActExpShaCrs (ActDowShaDeg+108) -#define ActConShaCrs (ActDowShaDeg+109) -#define ActZIPShaCrs (ActDowShaDeg+110) -#define ActReqDatShaCrs (ActDowShaDeg+111) -#define ActChgDatShaCrs (ActDowShaDeg+112) -#define ActDowShaCrs (ActDowShaDeg+113) +#define ActAdmTchCrs (ActDowShaDeg+ 96) +#define ActReqRemFilTchCrs (ActDowShaDeg+ 97) +#define ActRemFilTchCrs (ActDowShaDeg+ 98) +#define ActRemFolTchCrs (ActDowShaDeg+ 99) +#define ActCopTchCrs (ActDowShaDeg+100) +#define ActPasTchCrs (ActDowShaDeg+101) +#define ActRemTreTchCrs (ActDowShaDeg+102) +#define ActFrmCreTchCrs (ActDowShaDeg+103) +#define ActCreFolTchCrs (ActDowShaDeg+104) +#define ActCreLnkTchCrs (ActDowShaDeg+105) +#define ActRenFolTchCrs (ActDowShaDeg+106) +#define ActRcvFilTchCrsDZ (ActDowShaDeg+107) +#define ActRcvFilTchCrsCla (ActDowShaDeg+108) +#define ActExpTchCrs (ActDowShaDeg+109) +#define ActConTchCrs (ActDowShaDeg+110) +#define ActZIPTchCrs (ActDowShaDeg+111) +#define ActReqDatTchCrs (ActDowShaDeg+112) +#define ActChgDatTchCrs (ActDowShaDeg+113) +#define ActDowTchCrs (ActDowShaDeg+114) -#define ActAdmShaGrp (ActDowShaDeg+114) -#define ActReqRemFilShaGrp (ActDowShaDeg+115) -#define ActRemFilShaGrp (ActDowShaDeg+116) -#define ActRemFolShaGrp (ActDowShaDeg+117) -#define ActCopShaGrp (ActDowShaDeg+118) -#define ActPasShaGrp (ActDowShaDeg+119) -#define ActRemTreShaGrp (ActDowShaDeg+120) -#define ActFrmCreShaGrp (ActDowShaDeg+121) -#define ActCreFolShaGrp (ActDowShaDeg+122) -#define ActCreLnkShaGrp (ActDowShaDeg+123) -#define ActRenFolShaGrp (ActDowShaDeg+124) -#define ActRcvFilShaGrpDZ (ActDowShaDeg+125) -#define ActRcvFilShaGrpCla (ActDowShaDeg+126) -#define ActExpShaGrp (ActDowShaDeg+127) -#define ActConShaGrp (ActDowShaDeg+128) -#define ActZIPShaGrp (ActDowShaDeg+129) -#define ActReqDatShaGrp (ActDowShaDeg+130) -#define ActChgDatShaGrp (ActDowShaDeg+131) -#define ActDowShaGrp (ActDowShaDeg+132) +#define ActAdmTchGrp (ActDowShaDeg+115) +#define ActReqRemFilTchGrp (ActDowShaDeg+116) +#define ActRemFilTchGrp (ActDowShaDeg+117) +#define ActRemFolTchGrp (ActDowShaDeg+118) +#define ActCopTchGrp (ActDowShaDeg+119) +#define ActPasTchGrp (ActDowShaDeg+120) +#define ActRemTreTchGrp (ActDowShaDeg+121) +#define ActFrmCreTchGrp (ActDowShaDeg+122) +#define ActCreFolTchGrp (ActDowShaDeg+123) +#define ActCreLnkTchGrp (ActDowShaDeg+124) +#define ActRenFolTchGrp (ActDowShaDeg+125) +#define ActRcvFilTchGrpDZ (ActDowShaDeg+126) +#define ActRcvFilTchGrpCla (ActDowShaDeg+127) +#define ActExpTchGrp (ActDowShaDeg+128) +#define ActConTchGrp (ActDowShaDeg+129) +#define ActZIPTchGrp (ActDowShaDeg+130) +#define ActReqDatTchGrp (ActDowShaDeg+131) +#define ActChgDatTchGrp (ActDowShaDeg+132) +#define ActDowTchGrp (ActDowShaDeg+133) -#define ActEdiBib (ActDowShaDeg+133) -#define ActEdiFAQ (ActDowShaDeg+134) -#define ActEdiCrsLnk (ActDowShaDeg+135) +#define ActChgToAdmSha (ActDowShaDeg+134) -#define ActChgFrcReaCrsInf (ActDowShaDeg+136) -#define ActChgFrcReaTchGui (ActDowShaDeg+137) -#define ActChgFrcReaSylLec (ActDowShaDeg+138) -#define ActChgFrcReaSylPra (ActDowShaDeg+139) -#define ActChgFrcReaBib (ActDowShaDeg+140) -#define ActChgFrcReaFAQ (ActDowShaDeg+141) -#define ActChgFrcReaCrsLnk (ActDowShaDeg+142) +#define ActAdmShaCrs (ActDowShaDeg+135) +#define ActReqRemFilShaCrs (ActDowShaDeg+136) +#define ActRemFilShaCrs (ActDowShaDeg+137) +#define ActRemFolShaCrs (ActDowShaDeg+138) +#define ActCopShaCrs (ActDowShaDeg+139) +#define ActPasShaCrs (ActDowShaDeg+140) +#define ActRemTreShaCrs (ActDowShaDeg+141) +#define ActFrmCreShaCrs (ActDowShaDeg+142) +#define ActCreFolShaCrs (ActDowShaDeg+143) +#define ActCreLnkShaCrs (ActDowShaDeg+144) +#define ActRenFolShaCrs (ActDowShaDeg+145) +#define ActRcvFilShaCrsDZ (ActDowShaDeg+146) +#define ActRcvFilShaCrsCla (ActDowShaDeg+147) +#define ActExpShaCrs (ActDowShaDeg+148) +#define ActConShaCrs (ActDowShaDeg+149) +#define ActZIPShaCrs (ActDowShaDeg+150) +#define ActReqDatShaCrs (ActDowShaDeg+151) +#define ActChgDatShaCrs (ActDowShaDeg+152) +#define ActDowShaCrs (ActDowShaDeg+153) -#define ActChgHavReaCrsInf (ActDowShaDeg+143) -#define ActChgHavReaTchGui (ActDowShaDeg+144) -#define ActChgHavReaSylLec (ActDowShaDeg+145) -#define ActChgHavReaSylPra (ActDowShaDeg+146) -#define ActChgHavReaBib (ActDowShaDeg+147) -#define ActChgHavReaFAQ (ActDowShaDeg+148) -#define ActChgHavReaCrsLnk (ActDowShaDeg+149) +#define ActAdmShaGrp (ActDowShaDeg+154) +#define ActReqRemFilShaGrp (ActDowShaDeg+155) +#define ActRemFilShaGrp (ActDowShaDeg+156) +#define ActRemFolShaGrp (ActDowShaDeg+157) +#define ActCopShaGrp (ActDowShaDeg+158) +#define ActPasShaGrp (ActDowShaDeg+159) +#define ActRemTreShaGrp (ActDowShaDeg+160) +#define ActFrmCreShaGrp (ActDowShaDeg+161) +#define ActCreFolShaGrp (ActDowShaDeg+162) +#define ActCreLnkShaGrp (ActDowShaDeg+163) +#define ActRenFolShaGrp (ActDowShaDeg+164) +#define ActRcvFilShaGrpDZ (ActDowShaDeg+165) +#define ActRcvFilShaGrpCla (ActDowShaDeg+166) +#define ActExpShaGrp (ActDowShaDeg+167) +#define ActConShaGrp (ActDowShaDeg+168) +#define ActZIPShaGrp (ActDowShaDeg+169) +#define ActReqDatShaGrp (ActDowShaDeg+170) +#define ActChgDatShaGrp (ActDowShaDeg+171) +#define ActDowShaGrp (ActDowShaDeg+172) -#define ActSelInfSrcCrsInf (ActDowShaDeg+150) -#define ActSelInfSrcTchGui (ActDowShaDeg+151) -#define ActSelInfSrcSylLec (ActDowShaDeg+152) -#define ActSelInfSrcSylPra (ActDowShaDeg+153) -#define ActSelInfSrcBib (ActDowShaDeg+154) -#define ActSelInfSrcFAQ (ActDowShaDeg+155) -#define ActSelInfSrcCrsLnk (ActDowShaDeg+156) -#define ActRcvURLCrsInf (ActDowShaDeg+157) -#define ActRcvURLTchGui (ActDowShaDeg+158) -#define ActRcvURLSylLec (ActDowShaDeg+159) -#define ActRcvURLSylPra (ActDowShaDeg+160) -#define ActRcvURLBib (ActDowShaDeg+161) -#define ActRcvURLFAQ (ActDowShaDeg+162) -#define ActRcvURLCrsLnk (ActDowShaDeg+163) -#define ActRcvPagCrsInf (ActDowShaDeg+164) -#define ActRcvPagTchGui (ActDowShaDeg+165) -#define ActRcvPagSylLec (ActDowShaDeg+166) -#define ActRcvPagSylPra (ActDowShaDeg+167) -#define ActRcvPagBib (ActDowShaDeg+168) -#define ActRcvPagFAQ (ActDowShaDeg+169) -#define ActRcvPagCrsLnk (ActDowShaDeg+170) -#define ActEditorCrsInf (ActDowShaDeg+171) -#define ActEditorTchGui (ActDowShaDeg+172) -#define ActEditorSylLec (ActDowShaDeg+173) -#define ActEditorSylPra (ActDowShaDeg+174) -#define ActEditorBib (ActDowShaDeg+175) -#define ActEditorFAQ (ActDowShaDeg+176) -#define ActEditorCrsLnk (ActDowShaDeg+177) -#define ActPlaTxtEdiCrsInf (ActDowShaDeg+178) -#define ActPlaTxtEdiTchGui (ActDowShaDeg+179) -#define ActPlaTxtEdiSylLec (ActDowShaDeg+180) -#define ActPlaTxtEdiSylPra (ActDowShaDeg+181) -#define ActPlaTxtEdiBib (ActDowShaDeg+182) -#define ActPlaTxtEdiFAQ (ActDowShaDeg+183) -#define ActPlaTxtEdiCrsLnk (ActDowShaDeg+184) -#define ActRchTxtEdiCrsInf (ActDowShaDeg+185) -#define ActRchTxtEdiTchGui (ActDowShaDeg+186) -#define ActRchTxtEdiSylLec (ActDowShaDeg+187) -#define ActRchTxtEdiSylPra (ActDowShaDeg+188) -#define ActRchTxtEdiBib (ActDowShaDeg+189) -#define ActRchTxtEdiFAQ (ActDowShaDeg+190) -#define ActRchTxtEdiCrsLnk (ActDowShaDeg+191) -#define ActRcvPlaTxtCrsInf (ActDowShaDeg+192) -#define ActRcvPlaTxtTchGui (ActDowShaDeg+193) -#define ActRcvPlaTxtSylLec (ActDowShaDeg+194) -#define ActRcvPlaTxtSylPra (ActDowShaDeg+195) -#define ActRcvPlaTxtBib (ActDowShaDeg+196) -#define ActRcvPlaTxtFAQ (ActDowShaDeg+197) -#define ActRcvPlaTxtCrsLnk (ActDowShaDeg+198) -#define ActRcvRchTxtCrsInf (ActDowShaDeg+199) -#define ActRcvRchTxtTchGui (ActDowShaDeg+200) -#define ActRcvRchTxtSylLec (ActDowShaDeg+201) -#define ActRcvRchTxtSylPra (ActDowShaDeg+202) -#define ActRcvRchTxtBib (ActDowShaDeg+203) -#define ActRcvRchTxtFAQ (ActDowShaDeg+204) -#define ActRcvRchTxtCrsLnk (ActDowShaDeg+205) +#define ActEdiBib (ActDowShaDeg+173) +#define ActEdiFAQ (ActDowShaDeg+174) +#define ActEdiCrsLnk (ActDowShaDeg+175) + +#define ActChgFrcReaCrsInf (ActDowShaDeg+176) +#define ActChgFrcReaTchGui (ActDowShaDeg+177) +#define ActChgFrcReaSylLec (ActDowShaDeg+178) +#define ActChgFrcReaSylPra (ActDowShaDeg+179) +#define ActChgFrcReaBib (ActDowShaDeg+180) +#define ActChgFrcReaFAQ (ActDowShaDeg+181) +#define ActChgFrcReaCrsLnk (ActDowShaDeg+182) + +#define ActChgHavReaCrsInf (ActDowShaDeg+183) +#define ActChgHavReaTchGui (ActDowShaDeg+184) +#define ActChgHavReaSylLec (ActDowShaDeg+185) +#define ActChgHavReaSylPra (ActDowShaDeg+186) +#define ActChgHavReaBib (ActDowShaDeg+187) +#define ActChgHavReaFAQ (ActDowShaDeg+188) +#define ActChgHavReaCrsLnk (ActDowShaDeg+189) + +#define ActSelInfSrcCrsInf (ActDowShaDeg+190) +#define ActSelInfSrcTchGui (ActDowShaDeg+191) +#define ActSelInfSrcSylLec (ActDowShaDeg+192) +#define ActSelInfSrcSylPra (ActDowShaDeg+193) +#define ActSelInfSrcBib (ActDowShaDeg+194) +#define ActSelInfSrcFAQ (ActDowShaDeg+195) +#define ActSelInfSrcCrsLnk (ActDowShaDeg+196) +#define ActRcvURLCrsInf (ActDowShaDeg+197) +#define ActRcvURLTchGui (ActDowShaDeg+198) +#define ActRcvURLSylLec (ActDowShaDeg+199) +#define ActRcvURLSylPra (ActDowShaDeg+200) +#define ActRcvURLBib (ActDowShaDeg+201) +#define ActRcvURLFAQ (ActDowShaDeg+202) +#define ActRcvURLCrsLnk (ActDowShaDeg+203) +#define ActRcvPagCrsInf (ActDowShaDeg+204) +#define ActRcvPagTchGui (ActDowShaDeg+205) +#define ActRcvPagSylLec (ActDowShaDeg+206) +#define ActRcvPagSylPra (ActDowShaDeg+207) +#define ActRcvPagBib (ActDowShaDeg+208) +#define ActRcvPagFAQ (ActDowShaDeg+209) +#define ActRcvPagCrsLnk (ActDowShaDeg+210) +#define ActEditorCrsInf (ActDowShaDeg+211) +#define ActEditorTchGui (ActDowShaDeg+212) +#define ActEditorSylLec (ActDowShaDeg+213) +#define ActEditorSylPra (ActDowShaDeg+214) +#define ActEditorBib (ActDowShaDeg+215) +#define ActEditorFAQ (ActDowShaDeg+216) +#define ActEditorCrsLnk (ActDowShaDeg+217) +#define ActPlaTxtEdiCrsInf (ActDowShaDeg+218) +#define ActPlaTxtEdiTchGui (ActDowShaDeg+219) +#define ActPlaTxtEdiSylLec (ActDowShaDeg+220) +#define ActPlaTxtEdiSylPra (ActDowShaDeg+221) +#define ActPlaTxtEdiBib (ActDowShaDeg+222) +#define ActPlaTxtEdiFAQ (ActDowShaDeg+223) +#define ActPlaTxtEdiCrsLnk (ActDowShaDeg+224) +#define ActRchTxtEdiCrsInf (ActDowShaDeg+225) +#define ActRchTxtEdiTchGui (ActDowShaDeg+226) +#define ActRchTxtEdiSylLec (ActDowShaDeg+227) +#define ActRchTxtEdiSylPra (ActDowShaDeg+228) +#define ActRchTxtEdiBib (ActDowShaDeg+229) +#define ActRchTxtEdiFAQ (ActDowShaDeg+230) +#define ActRchTxtEdiCrsLnk (ActDowShaDeg+231) +#define ActRcvPlaTxtCrsInf (ActDowShaDeg+232) +#define ActRcvPlaTxtTchGui (ActDowShaDeg+233) +#define ActRcvPlaTxtSylLec (ActDowShaDeg+234) +#define ActRcvPlaTxtSylPra (ActDowShaDeg+235) +#define ActRcvPlaTxtBib (ActDowShaDeg+236) +#define ActRcvPlaTxtFAQ (ActDowShaDeg+237) +#define ActRcvPlaTxtCrsLnk (ActDowShaDeg+238) +#define ActRcvRchTxtCrsInf (ActDowShaDeg+239) +#define ActRcvRchTxtTchGui (ActDowShaDeg+240) +#define ActRcvRchTxtSylLec (ActDowShaDeg+241) +#define ActRcvRchTxtSylPra (ActDowShaDeg+242) +#define ActRcvRchTxtBib (ActDowShaDeg+243) +#define ActRcvRchTxtFAQ (ActDowShaDeg+244) +#define ActRcvRchTxtCrsLnk (ActDowShaDeg+245) /*****************************************************************************/ /***************************** Assessment tab ********************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 35fb8cb6..248da975 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -137,13 +137,70 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 15.200.5 (2016-04-18)" +#define Log_PLATFORM_VERSION "SWAD 15.201 (2016-04-21)" #define CSS_FILE "swad15.198.css" #define JS_FILE "swad15.197.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 15.201: Apr 21, 2016 New private file zone for the teachers who belong to a course. (200768 lines) + 50 changes necessary in database: +CREATE TABLE notif_backup LIKE notif; +INSERT INTO notif_backup SELECT * FROM notif; + +CREATE TABLE sta_notif_backup LIKE sta_notif; +INSERT INTO sta_notif_backup SELECT * FROM sta_notif; + +CREATE TABLE usr_data_backup LIKE usr_data; +INSERT INTO usr_data_backup SELECT * FROM usr_data; + +UPDATE notif SET NotifyEvent=NotifyEvent+1 WHERE NotifyEvent>=2; +UPDATE sta_notif SET NotifyEvent=NotifyEvent+1 WHERE NotifyEvent>=2; +UPDATE usr_data SET NotifNtfEvents = (((NotifNtfEvents & ~0x3) << 1) | (NotifNtfEvents & 0x3) | 0x04); +UPDATE usr_data SET EmailNtfEvents = (((EmailNtfEvents & ~0x3) << 1) | (EmailNtfEvents & 0x3)); + +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1525','es','N','Administrar zona de profesores'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1526','es','N','Cambiar a admin. archivos prof.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1527','es','N','Administrar archivos prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1528','es','N','Solicitar elim. arch. prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1529','es','N','Eliminar archivo prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1530','es','N','Eliminar carpeta prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1531','es','N','Copiar de zona prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1532','es','N','Pegar en zona prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1533','es','N','Eliminar árbol prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1534','es','N','Solic.nuevo arch/carp prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1535','es','N','Crear carpeta prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1536','es','N','Crear enlace prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1537','es','N','Renombrar carpeta prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1538','es','N','Subir archivo prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1539','es','N','Subir archivo prof. asg. (ant.)'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1540','es','N','Expandir carpeta prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1541','es','N','Contraer carpeta prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1542','es','N','Crear ZIP prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1543','es','N','Ver metadatos arch. prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1544','es','N','Cambiar metadatos arch. prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1545','es','N','Descargar arch. prof. asg.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1546','es','N','Administrar archivos prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1547','es','N','Solicitar elim. arch. prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1548','es','N','Eliminar archivo prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1549','es','N','Eliminar carpeta prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1550','es','N','Copiar de zona prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1551','es','N','Pegar en zona prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1552','es','N','Eliminar árbol prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1553','es','N','Solic.nuevo arch/carp prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1554','es','N','Crear carpeta prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1555','es','N','Crear enlace prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1556','es','N','Renombrar carpeta prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1557','es','N','Subir archivo prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1558','es','N','Subir archivo prof. asg. (grp.)'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1559','es','N','Expandir carpeta prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1560','es','N','Contraer carpeta prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1561','es','N','Crear ZIP prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1562','es','N','Ver metadatos arch. prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1563','es','N','Cambiar metadatos arch. prof. grp.'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1564','es','N','Descargar arch. prof. grp.'); + Version 15.200.5: Apr 18, 2016 Removed link to enter from external service. (199764 lines) Version 15.200.4: Apr 18, 2016 Changes in configuration. (199785 lines) Version 15.200.3: Apr 18, 2016 Fixed bug in tests, reported by Miguel Damas Hermoso. (199788 lines) diff --git a/swad_file_browser.c b/swad_file_browser.c index d07aa9ef..c0261cc8 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -132,6 +132,8 @@ const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER] = Brw_ADMI_SHARE_DEG, // Brw_ADMI_SHARE_DEG = 22 Brw_ADMI_SHARE_CTR, // Brw_ADMI_SHARE_CTR = 23 Brw_ADMI_SHARE_INS, // Brw_ADMI_SHARE_INS = 24 + Brw_ADMI_TEACH_CRS, // Brw_ADMI_TEACH_CRS = 25 + Brw_ADMI_TEACH_GRP, // Brw_ADMI_TEACH_GRP = 26 }; // Browsers viewable shown in search for documents const Brw_FileBrowser_t Brw_FileBrowserForFoundDocs[Brw_NUM_TYPES_FILE_BROWSER] = @@ -161,6 +163,8 @@ const Brw_FileBrowser_t Brw_FileBrowserForFoundDocs[Brw_NUM_TYPES_FILE_BROWSER] Brw_ADMI_SHARE_DEG, // Brw_ADMI_SHARE_DEG = 22 Brw_ADMI_SHARE_CTR, // Brw_ADMI_SHARE_CTR = 23 Brw_ADMI_SHARE_INS, // Brw_ADMI_SHARE_INS = 24 + Brw_ADMI_TEACH_CRS, // Brw_ADMI_TEACH_CRS = 25 + Brw_ADMI_TEACH_GRP, // Brw_ADMI_TEACH_GRP = 26 }; // Browsers types for database "clipboard" table static const Brw_FileBrowser_t Brw_FileBrowserForDB_clipboard[Brw_NUM_TYPES_FILE_BROWSER] = @@ -190,6 +194,8 @@ static const Brw_FileBrowser_t Brw_FileBrowserForDB_clipboard[Brw_NUM_TYPES_FILE Brw_ADMI_SHARE_DEG, // Brw_ADMI_SHARE_DEG = 22 Brw_ADMI_SHARE_CTR, // Brw_ADMI_SHARE_CTR = 23 Brw_ADMI_SHARE_INS, // Brw_ADMI_SHARE_INS = 24 + Brw_ADMI_TEACH_CRS, // Brw_ADMI_TEACH_CRS = 25 + Brw_ADMI_TEACH_GRP, // Brw_ADMI_TEACH_GRP = 26 }; // Browsers types for database "expanded_folders" table static const Brw_FileBrowser_t Brw_FileBrowserForDB_expanded_folders[Brw_NUM_TYPES_FILE_BROWSER] = @@ -219,6 +225,8 @@ static const Brw_FileBrowser_t Brw_FileBrowserForDB_expanded_folders[Brw_NUM_TYP Brw_ADMI_SHARE_DEG, // Brw_ADMI_SHARE_DEG = 22 Brw_ADMI_SHARE_CTR, // Brw_ADMI_SHARE_CTR = 23 Brw_ADMI_SHARE_INS, // Brw_ADMI_SHARE_INS = 24 + Brw_ADMI_TEACH_CRS, // Brw_ADMI_TEACH_CRS = 25 + Brw_ADMI_TEACH_GRP, // Brw_ADMI_TEACH_GRP = 26 }; // Browsers types for database "file_browser_last" table // Assignments and works are stored as one in file_browser_last... @@ -250,6 +258,8 @@ static const Brw_FileBrowser_t Brw_FileBrowserForDB_file_browser_last[Brw_NUM_TY Brw_ADMI_SHARE_DEG, // Brw_ADMI_SHARE_DEG = 22 Brw_ADMI_SHARE_CTR, // Brw_ADMI_SHARE_CTR = 23 Brw_ADMI_SHARE_INS, // Brw_ADMI_SHARE_INS = 24 + Brw_ADMI_TEACH_CRS, // Brw_ADMI_TEACH_CRS = 25 + Brw_ADMI_TEACH_GRP, // Brw_ADMI_TEACH_GRP = 26 }; // Internal names of root folders @@ -280,6 +290,8 @@ const char *Brw_RootFolderInternalNames[Brw_NUM_TYPES_FILE_BROWSER] = Brw_INTERNAL_NAME_ROOT_FOLDER_SHARED_FILES, // Brw_ADMI_SHARE_DEG Brw_INTERNAL_NAME_ROOT_FOLDER_SHARED_FILES, // Brw_ADMI_SHARE_CTR Brw_INTERNAL_NAME_ROOT_FOLDER_SHARED_FILES, // Brw_ADMI_SHARE_INS + Brw_INTERNAL_NAME_ROOT_FOLDER_TEACHERS, // Brw_ADMI_TEACH_CRS + Brw_INTERNAL_NAME_ROOT_FOLDER_TEACHERS, // Brw_ADMI_TEACH_GRP }; // Number of columns of a file browser @@ -310,6 +322,8 @@ static const unsigned Brw_NumColumnsInExpTree[Brw_NUM_TYPES_FILE_BROWSER] = 7, // Brw_ADMI_SHARE_DEG 7, // Brw_ADMI_SHARE_CTR 7, // Brw_ADMI_SHARE_INS + 7, // Brw_ADMI_TEACH_CRS + 7, // Brw_ADMI_TEACH_GRP }; static const bool Brw_FileBrowserIsEditable[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -338,6 +352,8 @@ static const bool Brw_FileBrowserIsEditable[Brw_NUM_TYPES_FILE_BROWSER] = true, // Brw_ADMI_SHARE_DEG true, // Brw_ADMI_SHARE_CTR true, // Brw_ADMI_SHARE_INS + true, // Brw_ADMI_TEACH_CRS + true, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActSeeAdm[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -366,6 +382,8 @@ static const Act_Action_t Brw_ActSeeAdm[Brw_NUM_TYPES_FILE_BROWSER] = ActAdmShaDeg, // Brw_ADMI_SHARE_DEG ActAdmShaCtr, // Brw_ADMI_SHARE_CTR ActAdmShaIns, // Brw_ADMI_SHARE_INS + ActAdmTchCrs, // Brw_ADMI_TEACH_CRS + ActAdmTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActFromSeeToAdm[Brw_NUM_TYPES_FILE_BROWSER] = @@ -395,6 +413,8 @@ static const Act_Action_t Brw_ActFromSeeToAdm[Brw_NUM_TYPES_FILE_BROWSER] = ActUnk, // Brw_ADMI_SHARE_DEG ActUnk, // Brw_ADMI_SHARE_CTR ActUnk, // Brw_ADMI_SHARE_INS + ActUnk, // Brw_ADMI_TEACH_CRS + ActUnk, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActFromAdmToSee[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -423,6 +443,8 @@ static const Act_Action_t Brw_ActFromAdmToSee[Brw_NUM_TYPES_FILE_BROWSER] = ActUnk, // Brw_ADMI_SHARE_DEG ActUnk, // Brw_ADMI_SHARE_CTR ActUnk, // Brw_ADMI_SHARE_INS + ActUnk, // Brw_ADMI_TEACH_CRS + ActUnk, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActChgZone[Brw_NUM_TYPES_FILE_BROWSER] = @@ -452,6 +474,8 @@ static const Act_Action_t Brw_ActChgZone[Brw_NUM_TYPES_FILE_BROWSER] = ActUnk, // Brw_ADMI_SHARE_DEG ActUnk, // Brw_ADMI_SHARE_CTR ActUnk, // Brw_ADMI_SHARE_INS + ActChgToAdmTch, // Brw_ADMI_TEACH_CRS + ActChgToAdmTch, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActShow[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -480,6 +504,8 @@ static const Act_Action_t Brw_ActShow[Brw_NUM_TYPES_FILE_BROWSER] = ActUnk, // Brw_ADMI_SHARE_DEG ActUnk, // Brw_ADMI_SHARE_CTR ActUnk, // Brw_ADMI_SHARE_INS + ActUnk, // Brw_ADMI_TEACH_CRS + ActUnk, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActHide[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -508,6 +534,8 @@ static const Act_Action_t Brw_ActHide[Brw_NUM_TYPES_FILE_BROWSER] = ActUnk, // Brw_ADMI_SHARE_DEG ActUnk, // Brw_ADMI_SHARE_CTR ActUnk, // Brw_ADMI_SHARE_INS + ActUnk, // Brw_ADMI_TEACH_CRS + ActUnk, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActReqDatFile[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -536,6 +564,8 @@ static const Act_Action_t Brw_ActReqDatFile[Brw_NUM_TYPES_FILE_BROWSER] = ActReqDatShaDeg, // Brw_ADMI_SHARE_DEG ActReqDatShaCtr, // Brw_ADMI_SHARE_CTR ActReqDatShaIns, // Brw_ADMI_SHARE_INS + ActReqDatTchCrs, // Brw_ADMI_TEACH_CRS + ActReqDatTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActDowFile[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -564,6 +594,8 @@ static const Act_Action_t Brw_ActDowFile[Brw_NUM_TYPES_FILE_BROWSER] = ActDowShaDeg, // Brw_ADMI_SHARE_DEG ActDowShaCtr, // Brw_ADMI_SHARE_CTR ActDowShaIns, // Brw_ADMI_SHARE_INS + ActDowTchCrs, // Brw_ADMI_TEACH_CRS + ActDowTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActAskRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -592,6 +624,8 @@ static const Act_Action_t Brw_ActAskRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] = ActReqRemFilShaDeg, // Brw_ADMI_SHARE_DEG ActReqRemFilShaCtr, // Brw_ADMI_SHARE_CTR ActReqRemFilShaIns, // Brw_ADMI_SHARE_INS + ActReqRemFilTchCrs, // Brw_ADMI_TEACH_CRS + ActReqRemFilTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -620,6 +654,8 @@ static const Act_Action_t Brw_ActRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] = ActRemFilShaDeg, // Brw_ADMI_SHARE_DEG ActRemFilShaCtr, // Brw_ADMI_SHARE_CTR ActRemFilShaIns, // Brw_ADMI_SHARE_INS + ActRemFilTchCrs, // Brw_ADMI_TEACH_CRS + ActRemFilTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActRemoveFolder[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -648,6 +684,8 @@ static const Act_Action_t Brw_ActRemoveFolder[Brw_NUM_TYPES_FILE_BROWSER] = ActRemFolShaDeg, // Brw_ADMI_SHARE_DEG ActRemFolShaCtr, // Brw_ADMI_SHARE_CTR ActRemFolShaIns, // Brw_ADMI_SHARE_INS + ActRemFolTchCrs, // Brw_ADMI_TEACH_CRS + ActRemFolTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActRemoveFolderNotEmpty[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -676,6 +714,8 @@ static const Act_Action_t Brw_ActRemoveFolderNotEmpty[Brw_NUM_TYPES_FILE_BROWSER ActRemTreShaDeg, // Brw_ADMI_SHARE_DEG ActRemTreShaCtr, // Brw_ADMI_SHARE_CTR ActRemTreShaIns, // Brw_ADMI_SHARE_INS + ActRemTreTchCrs, // Brw_ADMI_TEACH_CRS + ActRemTreTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActCopy[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -704,6 +744,8 @@ static const Act_Action_t Brw_ActCopy[Brw_NUM_TYPES_FILE_BROWSER] = ActCopShaDeg, // Brw_ADMI_SHARE_DEG ActCopShaCtr, // Brw_ADMI_SHARE_CTR ActCopShaIns, // Brw_ADMI_SHARE_INS + ActCopTchCrs, // Brw_ADMI_TEACH_CRS + ActCopTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActPaste[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -732,6 +774,8 @@ static const Act_Action_t Brw_ActPaste[Brw_NUM_TYPES_FILE_BROWSER] = ActPasShaDeg, // Brw_ADMI_SHARE_DEG ActPasShaCtr, // Brw_ADMI_SHARE_CTR ActPasShaIns, // Brw_ADMI_SHARE_INS + ActPasTchCrs, // Brw_ADMI_TEACH_CRS + ActPasTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActFormCreate[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -760,6 +804,8 @@ static const Act_Action_t Brw_ActFormCreate[Brw_NUM_TYPES_FILE_BROWSER] = ActFrmCreShaDeg, // Brw_ADMI_SHARE_DEG ActFrmCreShaCtr, // Brw_ADMI_SHARE_CTR ActFrmCreShaIns, // Brw_ADMI_SHARE_INS + ActFrmCreTchCrs, // Brw_ADMI_TEACH_CRS + ActFrmCreTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActCreateFolder[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -788,6 +834,8 @@ static const Act_Action_t Brw_ActCreateFolder[Brw_NUM_TYPES_FILE_BROWSER] = ActCreFolShaDeg, // Brw_ADMI_SHARE_DEG ActCreFolShaCtr, // Brw_ADMI_SHARE_CTR ActCreFolShaIns, // Brw_ADMI_SHARE_INS + ActCreFolTchCrs, // Brw_ADMI_TEACH_CRS + ActCreFolTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActCreateLink[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -816,6 +864,8 @@ static const Act_Action_t Brw_ActCreateLink[Brw_NUM_TYPES_FILE_BROWSER] = ActCreLnkShaDeg, // Brw_ADMI_SHARE_DEG ActCreLnkShaCtr, // Brw_ADMI_SHARE_CTR ActCreLnkShaIns, // Brw_ADMI_SHARE_INS + ActCreLnkTchCrs, // Brw_ADMI_TEACH_CRS + ActCreLnkTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActRenameFolder[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -844,6 +894,8 @@ static const Act_Action_t Brw_ActRenameFolder[Brw_NUM_TYPES_FILE_BROWSER] = ActRenFolShaDeg, // Brw_ADMI_SHARE_DEG ActRenFolShaCtr, // Brw_ADMI_SHARE_CTR ActRenFolShaIns, // Brw_ADMI_SHARE_INS + ActRenFolTchCrs, // Brw_ADMI_TEACH_CRS + ActRenFolTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActUploadFileDropzone[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -872,6 +924,8 @@ static const Act_Action_t Brw_ActUploadFileDropzone[Brw_NUM_TYPES_FILE_BROWSER] ActRcvFilShaDegDZ, // Brw_ADMI_SHARE_DEG ActRcvFilShaCtrDZ, // Brw_ADMI_SHARE_CTR ActRcvFilShaInsDZ, // Brw_ADMI_SHARE_INS + ActRcvFilTchCrsDZ, // Brw_ADMI_TEACH_CRS + ActRcvFilTchGrpDZ, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActUploadFileClassic[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -900,6 +954,8 @@ static const Act_Action_t Brw_ActUploadFileClassic[Brw_NUM_TYPES_FILE_BROWSER] = ActRcvFilShaDegCla, // Brw_ADMI_SHARE_DEG ActRcvFilShaCtrCla, // Brw_ADMI_SHARE_CTR ActRcvFilShaInsCla, // Brw_ADMI_SHARE_INS + ActRcvFilTchCrsCla, // Brw_ADMI_TEACH_CRS + ActRcvFilTchGrpCla, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActRefreshAfterUploadFiles[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -928,6 +984,8 @@ static const Act_Action_t Brw_ActRefreshAfterUploadFiles[Brw_NUM_TYPES_FILE_BROW ActAdmShaDeg, // Brw_ADMI_SHARE_DEG ActAdmShaCtr, // Brw_ADMI_SHARE_CTR ActAdmShaIns, // Brw_ADMI_SHARE_INS + ActAdmTchCrs, // Brw_ADMI_TEACH_CRS + ActAdmTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActExpandFolder[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -956,6 +1014,8 @@ static const Act_Action_t Brw_ActExpandFolder[Brw_NUM_TYPES_FILE_BROWSER] = ActExpShaDeg, // Brw_ADMI_SHARE_DEG ActExpShaCtr, // Brw_ADMI_SHARE_CTR ActExpShaIns, // Brw_ADMI_SHARE_INS + ActExpTchCrs, // Brw_ADMI_TEACH_CRS + ActExpTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActContractFolder[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -984,6 +1044,8 @@ static const Act_Action_t Brw_ActContractFolder[Brw_NUM_TYPES_FILE_BROWSER] = ActConShaDeg, // Brw_ADMI_SHARE_DEG ActConShaCtr, // Brw_ADMI_SHARE_CTR ActConShaIns, // Brw_ADMI_SHARE_INS + ActConTchCrs, // Brw_ADMI_TEACH_CRS + ActConTchGrp, // Brw_ADMI_TEACH_GRP }; static const Act_Action_t Brw_ActRecDatFile[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -1012,6 +1074,8 @@ static const Act_Action_t Brw_ActRecDatFile[Brw_NUM_TYPES_FILE_BROWSER] = ActChgDatShaDeg, // Brw_ADMI_SHARE_DEG ActChgDatShaCtr, // Brw_ADMI_SHARE_CTR ActChgDatShaIns, // Brw_ADMI_SHARE_INS + ActChgDatTchCrs, // Brw_ADMI_TEACH_CRS + ActChgDatTchGrp, // Brw_ADMI_TEACH_GRP }; /* All quotas must be multiple of 1 GiB (Gibibyte)*/ @@ -1038,6 +1102,14 @@ static const Act_Action_t Brw_ActRecDatFile[Brw_NUM_TYPES_FILE_BROWSER] = #define Brw_MAX_FILES_DOCUM_GRP 1000 #define Brw_MAX_FOLDS_DOCUM_GRP 500 +#define Brw_MAX_QUOTA_TEACH_CRS Brw_MAX_QUOTA_DOCUM_CRS +#define Brw_MAX_FILES_TEACH_CRS Brw_MAX_FILES_DOCUM_CRS +#define Brw_MAX_FOLDS_TEACH_CRS Brw_MAX_FOLDS_DOCUM_CRS + +#define Brw_MAX_QUOTA_TEACH_GRP Brw_MAX_QUOTA_DOCUM_GRP +#define Brw_MAX_FILES_TEACH_GRP Brw_MAX_FILES_DOCUM_GRP +#define Brw_MAX_FOLDS_TEACH_GRP Brw_MAX_FOLDS_DOCUM_GRP + #define Brw_MAX_QUOTA_SHARE_INS (64ULL*Brw_GiB) #define Brw_MAX_FILES_SHARE_INS 5000 #define Brw_MAX_FOLDS_SHARE_INS 1000 // Many, because every student can create his own directories @@ -1542,7 +1614,7 @@ static void Brw_RenameOneFolderInDB (const char *OldPath,const char *NewPath); static void Brw_RenameChildrenFilesOrFoldersInDB (const char *OldPath,const char *NewPath); static bool Brw_CheckIfICanEditFileOrFolder (unsigned Level); static bool Brw_CheckIfICanCreateIntoFolder (unsigned Level); -static bool Brw_CheckIfIHavePermissionFileOrFolderCommon (void); +static bool Brw_CheckIfICanModifySharedFileOrFolder (void); static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row); @@ -1860,6 +1932,56 @@ void Brw_GetParAndInitFileBrowser (void) Gbl.FileBrowser.Type = Brw_ADMI_DOCUM_GRP; break; + /***** Teachers' private files of course/group *****/ + case ActAdmTchCrsGrp: + case ActChgToAdmTch: // Access to a teachers zone from menu + /* Set file browser type acording to last group accessed */ + Gbl.FileBrowser.Type = (Gbl.CurrentCrs.Grps.GrpCod > 0) ? Brw_ADMI_TEACH_GRP : + Brw_ADMI_TEACH_CRS; + break; + case ActAdmTchCrs: + case ActReqRemFilTchCrs: + case ActRemFilTchCrs: + case ActRemFolTchCrs: + case ActCopTchCrs: + case ActPasTchCrs: + case ActRemTreTchCrs: + case ActFrmCreTchCrs: + case ActCreFolTchCrs: + case ActCreLnkTchCrs: + case ActRenFolTchCrs: + case ActRcvFilTchCrsDZ: + case ActRcvFilTchCrsCla: + case ActExpTchCrs: + case ActConTchCrs: + case ActZIPTchCrs: + case ActReqDatTchCrs: + case ActChgDatTchCrs: + case ActDowTchCrs: + Gbl.FileBrowser.Type = Brw_ADMI_TEACH_CRS; + break; + case ActAdmTchGrp: + case ActReqRemFilTchGrp: + case ActRemFilTchGrp: + case ActRemFolTchGrp: + case ActCopTchGrp: + case ActPasTchGrp: + case ActRemTreTchGrp: + case ActFrmCreTchGrp: + case ActCreFolTchGrp: + case ActCreLnkTchGrp: + case ActRenFolTchGrp: + case ActRcvFilTchGrpDZ: + case ActRcvFilTchGrpCla: + case ActExpTchGrp: + case ActConTchGrp: + case ActZIPTchGrp: + case ActReqDatTchGrp: + case ActChgDatTchGrp: + case ActDowTchGrp: + Gbl.FileBrowser.Type = Brw_ADMI_TEACH_GRP; + break; + /***** Shared files of course/group *****/ case ActAdmShaCrsGrp: case ActChgToAdmSha: // Access to a shared zone from menu @@ -2146,6 +2268,9 @@ void Brw_GetParAndInitFileBrowser (void) case ActCreFolDocCrs: case ActRenFolDocCrs: case ActCreFolDocGrp: case ActRenFolDocGrp: + case ActCreFolTchCrs: case ActRenFolTchCrs: + case ActCreFolTchGrp: case ActRenFolTchGrp: + case ActCreFolShaCrs: case ActRenFolShaCrs: case ActCreFolShaGrp: case ActRenFolShaGrp: @@ -2167,10 +2292,9 @@ void Brw_GetParAndInitFileBrowser (void) case ActCreLnkShaCtr: case ActCreLnkDocDeg: case ActCreLnkShaDeg: - case ActCreLnkDocCrs: - case ActCreLnkDocGrp: - case ActCreLnkShaCrs: - case ActCreLnkShaGrp: + case ActCreLnkDocCrs: case ActCreLnkDocGrp: + case ActCreLnkTchCrs: case ActCreLnkTchGrp: + case ActCreLnkShaCrs: case ActCreLnkShaGrp: case ActCreLnkAsgCrs: case ActCreLnkWrkCrs: case ActCreLnkAsgUsr: @@ -2240,16 +2364,18 @@ static long Brw_GetGrpSettings (void) /***** Try to get group code from database *****/ switch (Gbl.Action.Act) { - case ActSeeAdmDocCrsGrp: + case ActSeeAdmDocCrsGrp: // Access to a documents zone from menu case ActSeeDocGrp: - case ActAdmDocGrp: // Access to a documents zone from menu + case ActAdmDocGrp: + case ActAdmTchCrsGrp: // Access to a documents zone from menu + case ActAdmTchGrp: return Brw_GetGrpLastAccZone ("LastDowGrpCod"); - case ActAdmShaCrsGrp: - case ActAdmShaGrp: // Access to a shared documents zone from menu + case ActAdmShaCrsGrp: // Access to a shared documents zone from menu + case ActAdmShaGrp: return Brw_GetGrpLastAccZone ("LastComGrpCod"); - case ActSeeAdmMrk: + case ActSeeAdmMrk: // Access to a marks zone from menu case ActSeeMrkGrp: - case ActAdmMrkGrp: // Access to a marks zone from menu + case ActAdmMrkGrp: return Brw_GetGrpLastAccZone ("LastAssGrpCod"); default: return -1L; @@ -2271,25 +2397,33 @@ static void Brw_GetDataCurrentGrp (void) switch (Gbl.Action.Act) { - case ActSeeAdmDocCrsGrp:// Access to see/admin a documents zone from menu - case ActChgToSeeDocCrs:// Access to see a documents zone - case ActSeeDocGrp: // Access to see a documents zone + case ActSeeAdmDocCrsGrp: // Access to see/admin a documents zone from menu + case ActChgToSeeDocCrs: // Access to see a documents zone + case ActSeeDocGrp: // Access to see a documents zone - case ActChgToAdmDocCrs:// Access to admin a documents zone - case ActAdmDocGrp: // Access to admin a documents zone + case ActChgToAdmDocCrs: // Access to admin a documents zone + case ActAdmDocGrp: // Access to admin a documents zone - case ActChgToAdmSha: // Access to admin a common zone - case ActAdmShaGrp: // Access to admin a common zone + case ActChgToAdmTch: // Access to admin a teachers' zone + case ActAdmTchGrp: // Access to admin a teachers' zone - case ActSeeAdmMrk: // Access to see/admin a marks zone from menu - case ActChgToSeeMrk: // Access to see a marks zone - case ActSeeMrkGrp: // Access to see a marks zone + case ActChgToAdmSha: // Access to admin a shared zone + case ActAdmShaGrp: // Access to admin a shared zone - case ActChgToAdmMrk: // Access to admin a marks zone - case ActAdmMrkGrp: // Access to admin a marks zone + case ActSeeAdmMrk: // Access to see/admin a marks zone from menu + case ActChgToSeeMrk: // Access to see a marks zone + case ActSeeMrkGrp: // Access to see a marks zone + + case ActChgToAdmMrk: // Access to admin a marks zone + case ActAdmMrkGrp: // Access to admin a marks zone /***** For security, check if group file zones are enabled, and check if I belongs to the selected group *****/ - if (!GrpDat.FileZones || !Grp_GetIfIBelongToGrp (Gbl.CurrentCrs.Grps.GrpCod)) + if (GrpDat.FileZones) + { + if (!Grp_GetIfIBelongToGrp (Gbl.CurrentCrs.Grps.GrpCod)) + Gbl.CurrentCrs.Grps.GrpCod = -1L; // Go to course zone + } + else Gbl.CurrentCrs.Grps.GrpCod = -1L; // Go to course zone break; default: @@ -2499,6 +2633,7 @@ static void Brw_SetPathFileBrowser (void) break; case Brw_SHOW_DOCUM_CRS: case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_SHOW_MARKS_CRS: case Brw_ADMI_MARKS_CRS: @@ -2507,6 +2642,7 @@ static void Brw_SetPathFileBrowser (void) break; case Brw_SHOW_DOCUM_GRP: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_SHOW_MARKS_GRP: case Brw_ADMI_MARKS_GRP: @@ -2903,6 +3039,16 @@ static void Brw_SetMaxQuota (void) Gbl.FileBrowser.Size.MaxFiles = Brw_MAX_FILES_DOCUM_GRP; Gbl.FileBrowser.Size.MaxFolds = Brw_MAX_FOLDS_DOCUM_GRP; break; + case Brw_ADMI_TEACH_CRS: + Gbl.FileBrowser.Size.MaxQuota = Brw_MAX_QUOTA_TEACH_CRS; + Gbl.FileBrowser.Size.MaxFiles = Brw_MAX_FILES_TEACH_CRS; + Gbl.FileBrowser.Size.MaxFolds = Brw_MAX_FOLDS_TEACH_CRS; + break; + case Brw_ADMI_TEACH_GRP: + Gbl.FileBrowser.Size.MaxQuota = Brw_MAX_QUOTA_TEACH_GRP; + Gbl.FileBrowser.Size.MaxFiles = Brw_MAX_FILES_TEACH_GRP; + Gbl.FileBrowser.Size.MaxFolds = Brw_MAX_FOLDS_TEACH_GRP; + break; case Brw_ADMI_SHARE_CRS: Gbl.FileBrowser.Size.MaxQuota = Brw_MAX_QUOTA_SHARE_CRS; Gbl.FileBrowser.Size.MaxFiles = Brw_MAX_FILES_SHARE_CRS; @@ -3180,11 +3326,13 @@ static void Brw_FormToChangeCrsGrpZone (void) struct GroupData GrpDat; bool IsCourseZone = Gbl.FileBrowser.Type == Brw_SHOW_DOCUM_CRS || Gbl.FileBrowser.Type == Brw_ADMI_DOCUM_CRS || + Gbl.FileBrowser.Type == Brw_ADMI_TEACH_CRS || Gbl.FileBrowser.Type == Brw_ADMI_SHARE_CRS || Gbl.FileBrowser.Type == Brw_SHOW_MARKS_CRS || Gbl.FileBrowser.Type == Brw_ADMI_MARKS_CRS; bool IsGroupZone = Gbl.FileBrowser.Type == Brw_SHOW_DOCUM_GRP || Gbl.FileBrowser.Type == Brw_ADMI_DOCUM_GRP || + Gbl.FileBrowser.Type == Brw_ADMI_TEACH_GRP || Gbl.FileBrowser.Type == Brw_ADMI_SHARE_GRP || Gbl.FileBrowser.Type == Brw_SHOW_MARKS_GRP || Gbl.FileBrowser.Type == Brw_ADMI_MARKS_GRP; @@ -3401,6 +3549,7 @@ static void Brw_ShowFileBrowser (void) { extern const char *Txt_Documents_area; extern const char *Txt_Documents_management_area; + extern const char *Txt_Teachers_files_area; extern const char *Txt_Shared_files_area; extern const char *Txt_Marks_area; extern const char *Txt_Marks_management_area; @@ -3413,31 +3562,33 @@ static void Brw_ShowFileBrowser (void) Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM; /***** Set title of file browser *****/ - Brw_TitleOfFileBrowser[Brw_UNKNOWN ] = NULL; // Brw_UNKNOWN - Brw_TitleOfFileBrowser[Brw_SHOW_DOCUM_CRS] = Txt_Documents_area; // Brw_SHOW_DOCUM_CRS - Brw_TitleOfFileBrowser[Brw_SHOW_MARKS_CRS] = Txt_Marks_area; // Brw_SHOW_MARKS_CRS - Brw_TitleOfFileBrowser[Brw_ADMI_DOCUM_CRS] = Txt_Documents_management_area; // Brw_ADMI_DOCUM_CRS - Brw_TitleOfFileBrowser[Brw_ADMI_SHARE_CRS] = Txt_Shared_files_area; // Brw_ADMI_SHARE_CRS - Brw_TitleOfFileBrowser[Brw_ADMI_SHARE_GRP] = Txt_Shared_files_area; // Brw_ADMI_SHARE_GRP - Brw_TitleOfFileBrowser[Brw_ADMI_WORKS_USR] = Txt_Works_area; // Brw_ADMI_WORKS_USR - Brw_TitleOfFileBrowser[Brw_ADMI_WORKS_CRS] = Txt_Works_area; // Brw_ADMI_WORKS_CRS - Brw_TitleOfFileBrowser[Brw_ADMI_MARKS_CRS] = Txt_Marks_management_area; // Brw_ADMI_MARKS_CRS + Brw_TitleOfFileBrowser[Brw_UNKNOWN ] = NULL; // Brw_UNKNOWN + Brw_TitleOfFileBrowser[Brw_SHOW_DOCUM_CRS] = Txt_Documents_area; // Brw_SHOW_DOCUM_CRS + Brw_TitleOfFileBrowser[Brw_SHOW_MARKS_CRS] = Txt_Marks_area; // Brw_SHOW_MARKS_CRS + Brw_TitleOfFileBrowser[Brw_ADMI_DOCUM_CRS] = Txt_Documents_management_area; // Brw_ADMI_DOCUM_CRS + Brw_TitleOfFileBrowser[Brw_ADMI_SHARE_CRS] = Txt_Shared_files_area; // Brw_ADMI_SHARE_CRS + Brw_TitleOfFileBrowser[Brw_ADMI_SHARE_GRP] = Txt_Shared_files_area; // Brw_ADMI_SHARE_GRP + Brw_TitleOfFileBrowser[Brw_ADMI_WORKS_USR] = Txt_Works_area; // Brw_ADMI_WORKS_USR + Brw_TitleOfFileBrowser[Brw_ADMI_WORKS_CRS] = Txt_Works_area; // Brw_ADMI_WORKS_CRS + Brw_TitleOfFileBrowser[Brw_ADMI_MARKS_CRS] = Txt_Marks_management_area; // Brw_ADMI_MARKS_CRS Brw_TitleOfFileBrowser[Brw_ADMI_BRIEF_USR] = Txt_Temporary_private_storage_area; // Brw_ADMI_BRIEF_USR - Brw_TitleOfFileBrowser[Brw_SHOW_DOCUM_GRP] = Txt_Documents_area; // Brw_SHOW_DOCUM_GRP - Brw_TitleOfFileBrowser[Brw_ADMI_DOCUM_GRP] = Txt_Documents_management_area; // Brw_ADMI_DOCUM_GRP - Brw_TitleOfFileBrowser[Brw_SHOW_MARKS_GRP] = Txt_Marks_area; // Brw_SHOW_MARKS_GRP - Brw_TitleOfFileBrowser[Brw_ADMI_MARKS_GRP] = Txt_Marks_management_area; // Brw_ADMI_MARKS_GRP - Brw_TitleOfFileBrowser[Brw_ADMI_ASSIG_USR] = Txt_Assignments_area; // Brw_ADMI_ASSIG_USR - Brw_TitleOfFileBrowser[Brw_ADMI_ASSIG_CRS] = Txt_Assignments_area; // Brw_ADMI_ASSIG_CRS - Brw_TitleOfFileBrowser[Brw_SHOW_DOCUM_DEG] = Txt_Documents_area; // Brw_SHOW_DOCUM_DEG - Brw_TitleOfFileBrowser[Brw_ADMI_DOCUM_DEG] = Txt_Documents_management_area; // Brw_ADMI_DOCUM_DEG - Brw_TitleOfFileBrowser[Brw_SHOW_DOCUM_CTR] = Txt_Documents_area; // Brw_SHOW_DOCUM_CTR - Brw_TitleOfFileBrowser[Brw_ADMI_DOCUM_CTR] = Txt_Documents_management_area; // Brw_ADMI_DOCUM_CTR - Brw_TitleOfFileBrowser[Brw_SHOW_DOCUM_INS] = Txt_Documents_area; // Brw_SHOW_DOCUM_INS - Brw_TitleOfFileBrowser[Brw_ADMI_DOCUM_INS] = Txt_Documents_management_area; // Brw_ADMI_DOCUM_INS - Brw_TitleOfFileBrowser[Brw_ADMI_SHARE_DEG] = Txt_Shared_files_area; // Brw_ADMI_SHARE_DEG - Brw_TitleOfFileBrowser[Brw_ADMI_SHARE_CTR] = Txt_Shared_files_area; // Brw_ADMI_SHARE_CTR - Brw_TitleOfFileBrowser[Brw_ADMI_SHARE_INS] = Txt_Shared_files_area; // Brw_ADMI_SHARE_INS + Brw_TitleOfFileBrowser[Brw_SHOW_DOCUM_GRP] = Txt_Documents_area; // Brw_SHOW_DOCUM_GRP + Brw_TitleOfFileBrowser[Brw_ADMI_DOCUM_GRP] = Txt_Documents_management_area; // Brw_ADMI_DOCUM_GRP + Brw_TitleOfFileBrowser[Brw_SHOW_MARKS_GRP] = Txt_Marks_area; // Brw_SHOW_MARKS_GRP + Brw_TitleOfFileBrowser[Brw_ADMI_MARKS_GRP] = Txt_Marks_management_area; // Brw_ADMI_MARKS_GRP + Brw_TitleOfFileBrowser[Brw_ADMI_ASSIG_USR] = Txt_Assignments_area; // Brw_ADMI_ASSIG_USR + Brw_TitleOfFileBrowser[Brw_ADMI_ASSIG_CRS] = Txt_Assignments_area; // Brw_ADMI_ASSIG_CRS + Brw_TitleOfFileBrowser[Brw_SHOW_DOCUM_DEG] = Txt_Documents_area; // Brw_SHOW_DOCUM_DEG + Brw_TitleOfFileBrowser[Brw_ADMI_DOCUM_DEG] = Txt_Documents_management_area; // Brw_ADMI_DOCUM_DEG + Brw_TitleOfFileBrowser[Brw_SHOW_DOCUM_CTR] = Txt_Documents_area; // Brw_SHOW_DOCUM_CTR + Brw_TitleOfFileBrowser[Brw_ADMI_DOCUM_CTR] = Txt_Documents_management_area; // Brw_ADMI_DOCUM_CTR + Brw_TitleOfFileBrowser[Brw_SHOW_DOCUM_INS] = Txt_Documents_area; // Brw_SHOW_DOCUM_INS + Brw_TitleOfFileBrowser[Brw_ADMI_DOCUM_INS] = Txt_Documents_management_area; // Brw_ADMI_DOCUM_INS + Brw_TitleOfFileBrowser[Brw_ADMI_SHARE_DEG] = Txt_Shared_files_area; // Brw_ADMI_SHARE_DEG + Brw_TitleOfFileBrowser[Brw_ADMI_SHARE_CTR] = Txt_Shared_files_area; // Brw_ADMI_SHARE_CTR + Brw_TitleOfFileBrowser[Brw_ADMI_SHARE_INS] = Txt_Shared_files_area; // Brw_ADMI_SHARE_INS + Brw_TitleOfFileBrowser[Brw_ADMI_TEACH_CRS] = Txt_Teachers_files_area; // Brw_ADMI_TEACH_CRS + Brw_TitleOfFileBrowser[Brw_ADMI_TEACH_GRP] = Txt_Teachers_files_area; // Brw_ADMI_TEACH_GRP /***** Set function to write contextual icons in frame *****/ FunctionToDrawContextualIcons = NULL; @@ -3620,14 +3771,18 @@ static void Brw_UpdateLastAccess (void) { case Brw_SHOW_DOCUM_CRS: case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: if (Gbl.Action.Act == ActChgToSeeDocCrs || - Gbl.Action.Act == ActChgToAdmDocCrs)// Update group of last access to a documents zone only when user changes zone + Gbl.Action.Act == ActChgToAdmDocCrs || + Gbl.Action.Act == ActChgToAdmTch) // Update group of last access to a documents/teachers zone only when user changes zone Brw_UpdateGrpLastAccZone ("LastDowGrpCod",-1L); break; case Brw_SHOW_DOCUM_GRP: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: if (Gbl.Action.Act == ActChgToSeeDocCrs || - Gbl.Action.Act == ActChgToAdmDocCrs)// Update group of last access to a documents zone only when user changes zone + Gbl.Action.Act == ActChgToAdmDocCrs || + Gbl.Action.Act == ActChgToAdmTch) // Update group of last access to a documents/teachers zone only when user changes zone Brw_UpdateGrpLastAccZone ("LastDowGrpCod",Gbl.CurrentCrs.Grps.GrpCod); break; case Brw_ADMI_SHARE_CRS: @@ -3707,6 +3862,8 @@ static void Brw_WriteSubtitleOfFileBrowser (void) case Brw_ADMI_DOCUM_CRS: case Brw_SHOW_DOCUM_GRP: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: case Brw_SHOW_MARKS_CRS: @@ -3767,10 +3924,9 @@ static void Brw_WriteSubtitleOfFileBrowser (void) Txt_accessible_only_for_reading_by_students_of_the_group_and_teachers_of_the_course); break; case Brw_ADMI_DOCUM_CRS: - sprintf (Subtitle,"(%s)", - Txt_accessible_for_reading_and_writing_by_teachers_of_the_course); - break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: sprintf (Subtitle,"(%s)", Txt_accessible_for_reading_and_writing_by_teachers_of_the_course); break; @@ -4096,10 +4252,11 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod) /***** Remove from database the entries that store the file views *****/ sprintf (Query,"DELETE FROM file_view USING file_view,files" - " WHERE files.FileBrowser IN ('%u','%u','%u','%u','%u')" + " WHERE files.FileBrowser IN ('%u','%u','%u','%u','%u','%u')" " AND files.Cod='%ld'" " AND files.FilCod=file_view.FilCod", (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_WORKS_USR, @@ -4109,9 +4266,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod) /***** Remove from database expanded folders *****/ sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders" - " WHERE FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')" + " WHERE FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u','%u')" " AND Cod='%ld'", (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_ASSIG_CRS, @@ -4123,9 +4281,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod) /***** Remove from database the entries that store clipboards *****/ sprintf (Query,"DELETE FROM clipboard" - " WHERE FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')" + " WHERE FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u','%u')" " AND Cod='%ld'", (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_ASSIG_CRS, @@ -4139,9 +4298,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod) // Assignments and works are stored as one in file_browser_last... // ...because a user views them at the same time sprintf (Query,"DELETE FROM file_browser_last" - " WHERE FileBrowser IN ('%u','%u','%u','%u')" + " WHERE FileBrowser IN ('%u','%u','%u','%u','%u')" " AND Cod='%ld'", (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_MARKS_CRS, @@ -4150,9 +4310,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod) /***** Remove from database the entries that store the sizes of the file zones *****/ sprintf (Query,"DELETE FROM file_browser_size" - " WHERE FileBrowser IN ('%u','%u','%u','%u','%u')" + " WHERE FileBrowser IN ('%u','%u','%u','%u','%u','%u')" " AND Cod='%ld'", (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_WORKS_USR, @@ -4162,9 +4323,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod) /***** Remove from database the entries that store the data files *****/ sprintf (Query,"DELETE FROM files" - " WHERE FileBrowser IN ('%u','%u','%u','%u','%u')" + " WHERE FileBrowser IN ('%u','%u','%u','%u','%u','%u')" " AND Cod='%ld'", (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_WORKS_USR, @@ -4192,10 +4354,11 @@ void Brw_RemoveGrpFilesFromDB (long GrpCod) /***** Remove from database the entries that store the file views *****/ sprintf (Query,"DELETE FROM file_view USING file_view,files" - " WHERE files.FileBrowser IN ('%u','%u','%u')" + " WHERE files.FileBrowser IN ('%u','%u','%u','%u')" " AND files.Cod='%ld'" " AND files.FilCod=file_view.FilCod", (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, GrpCod); @@ -4203,9 +4366,10 @@ void Brw_RemoveGrpFilesFromDB (long GrpCod) /***** Remove from database expanded folders *****/ sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders" - " WHERE FileBrowser IN ('%u','%u','%u')" + " WHERE FileBrowser IN ('%u','%u','%u','%u')" " AND Cod='%ld'", (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, GrpCod); @@ -4213,9 +4377,10 @@ void Brw_RemoveGrpFilesFromDB (long GrpCod) /***** Remove from database the entries that store clipboards *****/ sprintf (Query,"DELETE FROM clipboard" - " WHERE FileBrowser IN ('%u','%u','%u')" + " WHERE FileBrowser IN ('%u','%u','%u','%u')" " AND Cod='%ld'", (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, GrpCod); @@ -4223,9 +4388,10 @@ void Brw_RemoveGrpFilesFromDB (long GrpCod) /***** Remove from database the entries that store the last time users visited file zones *****/ sprintf (Query,"DELETE FROM file_browser_last" - " WHERE FileBrowser IN ('%u','%u','%u')" + " WHERE FileBrowser IN ('%u','%u','%u','%u')" " AND Cod='%ld'", (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, GrpCod); @@ -4233,9 +4399,10 @@ void Brw_RemoveGrpFilesFromDB (long GrpCod) /***** Remove from database the entries that store the sizes of the file zones *****/ sprintf (Query,"DELETE FROM file_browser_size" - " WHERE FileBrowser IN ('%u','%u','%u')" + " WHERE FileBrowser IN ('%u','%u','%u','%u')" " AND Cod='%ld'", (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, GrpCod); @@ -4243,9 +4410,10 @@ void Brw_RemoveGrpFilesFromDB (long GrpCod) /***** Remove from database the entries that store the data files *****/ sprintf (Query,"DELETE FROM files" - " WHERE FileBrowser IN ('%u','%u','%u')" + " WHERE FileBrowser IN ('%u','%u','%u','%u')" " AND Cod='%ld'", (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, GrpCod); @@ -4263,10 +4431,10 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long CrsCod,long UsrCod) /***** Remove from database expanded folders *****/ sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders" " WHERE UsrCod='%ld' AND (" - "(FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')" + "(FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u','%u')" " AND Cod='%ld')" " OR " - "(FileBrowser IN ('%u','%u','%u')" + "(FileBrowser IN ('%u','%u','%u','%u')" " AND Cod IN" " (SELECT crs_grp.GrpCod FROM crs_grp_types,crs_grp" " WHERE crs_grp_types.CrsCod='%ld'" @@ -4274,6 +4442,7 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long CrsCod,long UsrCod) ")", UsrCod, (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_ASSIG_CRS, @@ -4282,6 +4451,7 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long CrsCod,long UsrCod) (unsigned) Brw_ADMI_MARKS_CRS, CrsCod, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, CrsCod); @@ -4290,10 +4460,10 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long CrsCod,long UsrCod) /***** Remove from database the entries that store clipboards *****/ sprintf (Query,"DELETE FROM clipboard" " WHERE UsrCod='%ld' AND (" - "(FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u')" + "(FileBrowser IN ('%u','%u','%u','%u','%u','%u','%u','%u')" " AND Cod='%ld')" " OR " - "(FileBrowser IN ('%u','%u','%u')" + "(FileBrowser IN ('%u','%u','%u','%u')" " AND Cod IN" " (SELECT crs_grp.GrpCod FROM crs_grp_types,crs_grp" " WHERE crs_grp_types.CrsCod='%ld'" @@ -4301,6 +4471,7 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long CrsCod,long UsrCod) ")", UsrCod, (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_ASSIG_CRS, @@ -4309,6 +4480,7 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long CrsCod,long UsrCod) (unsigned) Brw_ADMI_MARKS_CRS, CrsCod, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, CrsCod); @@ -4319,10 +4491,10 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long CrsCod,long UsrCod) // ...because a user views them at the same time sprintf (Query,"DELETE FROM file_browser_last" " WHERE UsrCod='%ld' AND (" - "(FileBrowser IN ('%u','%u','%u','%u')" + "(FileBrowser IN ('%u','%u','%u','%u','%u')" " AND Cod='%ld')" " OR " - "(FileBrowser IN ('%u','%u','%u')" + "(FileBrowser IN ('%u','%u','%u','%u')" " AND Cod IN" " (SELECT crs_grp.GrpCod FROM crs_grp_types,crs_grp" " WHERE crs_grp_types.CrsCod='%ld'" @@ -4330,11 +4502,13 @@ void Brw_RemoveSomeInfoAboutCrsUsrFilesFromDB (long CrsCod,long UsrCod) ")", UsrCod, (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_MARKS_CRS, CrsCod, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, CrsCod); @@ -4483,6 +4657,7 @@ static void Brw_WriteFormFullTree (void) case Brw_ADMI_SHARE_DEG: case Brw_SHOW_DOCUM_CRS: case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_SHOW_MARKS_CRS: case Brw_ADMI_MARKS_CRS: @@ -4490,6 +4665,7 @@ static void Brw_WriteFormFullTree (void) break; case Brw_SHOW_DOCUM_GRP: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_SHOW_MARKS_GRP: case Brw_ADMI_MARKS_GRP: @@ -4596,6 +4772,7 @@ static void Brw_GetAndUpdateDateLastAccFileBrowser (void) break; case Brw_SHOW_DOCUM_CRS: case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_SHOW_MARKS_CRS: case Brw_ADMI_MARKS_CRS: @@ -4607,6 +4784,7 @@ static void Brw_GetAndUpdateDateLastAccFileBrowser (void) break; case Brw_SHOW_DOCUM_GRP: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_SHOW_MARKS_GRP: case Brw_ADMI_MARKS_GRP: @@ -4882,7 +5060,7 @@ static bool Brw_WriteRowFileBrowser (unsigned Level, Gbl.FileBrowser.Type == Brw_ADMI_DOCUM_DEG || Gbl.FileBrowser.Type == Brw_ADMI_DOCUM_CRS || Gbl.FileBrowser.Type == Brw_ADMI_DOCUM_GRP; - bool CommonZone = Gbl.FileBrowser.Type == Brw_ADMI_SHARE_INS || + bool SharedZone = Gbl.FileBrowser.Type == Brw_ADMI_SHARE_INS || Gbl.FileBrowser.Type == Brw_ADMI_SHARE_CTR || Gbl.FileBrowser.Type == Brw_ADMI_SHARE_DEG || Gbl.FileBrowser.Type == Brw_ADMI_SHARE_CRS || @@ -4930,7 +5108,7 @@ static bool Brw_WriteRowFileBrowser (unsigned Level, Gbl.FileBrowser.Priv.FullPathInTree,false,Brw_LICENSE_DEFAULT); /***** Is this row public or private? *****/ - if (SeeDocsZone || AdminDocsZone || CommonZone) + if (SeeDocsZone || AdminDocsZone || SharedZone) { RowSetAsPublic = (FileType == Brw_IS_FOLDER) ? Brw_GetIfFolderHasPublicFiles (Gbl.FileBrowser.Priv.FullPathInTree) : FileMetadata.IsPublic; @@ -5182,6 +5360,7 @@ static void Brw_PutIconRemoveFile (Brw_FileType_t FileType, switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -5226,6 +5405,7 @@ static void Brw_PutIconRemoveDir (const char *PathInTree,const char *FileName,co switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -5272,6 +5452,7 @@ static void Brw_PutIconCopy (Brw_FileType_t FileType, switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -5319,6 +5500,7 @@ static void Brw_PutIconPasteOn (const char *PathInTree,const char *FileName,cons switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -5394,6 +5576,7 @@ static void Brw_IndentAndWriteIconExpandContract (unsigned Level,Brw_ExpandTree_ { case Brw_SHOW_DOCUM_GRP: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_SHOW_MARKS_GRP: case Brw_ADMI_MARKS_GRP: @@ -5426,6 +5609,7 @@ static void Brw_IndentAndWriteIconExpandContract (unsigned Level,Brw_ExpandTree_ { case Brw_SHOW_DOCUM_GRP: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_SHOW_MARKS_GRP: case Brw_ADMI_MARKS_GRP: @@ -5585,6 +5769,7 @@ static void Brw_PutIconFolder (unsigned Level,Brw_ExpandTree_t ExpandTree, switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -5659,6 +5844,7 @@ static void Brw_PutIconFileWithLinkToViewMetadata (unsigned Size, { case Brw_SHOW_DOCUM_GRP: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_SHOW_MARKS_GRP: case Brw_ADMI_MARKS_GRP: @@ -5758,6 +5944,7 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic,Brw_FileType_t FileT switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -5817,6 +6004,7 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic,Brw_FileType_t FileT { case Brw_SHOW_DOCUM_GRP: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_SHOW_MARKS_GRP: case Brw_ADMI_MARKS_GRP: @@ -6084,6 +6272,7 @@ void Brw_AskRemFileFromTree (void) switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -6236,6 +6425,7 @@ static void Brw_AskConfirmRemoveFolderNotEmpty (void) switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -6434,6 +6624,7 @@ static void Brw_WriteCurrentClipboard (void) { extern const char *Txt_Copy_source; extern const char *Txt_documents_management_area; + extern const char *Txt_teachers_files_area; extern const char *Txt_shared_files_area; extern const char *Txt_assignments_area; extern const char *Txt_works_area; @@ -6524,6 +6715,23 @@ static void Brw_WriteCurrentClipboard (void) Txt_course,Crs.ShortName, Txt_group,GrpDat.GrpTypName,GrpDat.GrpName); break; + case Brw_ADMI_TEACH_CRS: + Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; + Crs_GetDataOfCourseByCod (&Crs); + fprintf (Gbl.F.Out,"%s, %s %s", + Txt_teachers_files_area, + Txt_course,Crs.ShortName); + break; + case Brw_ADMI_TEACH_GRP: + GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; + Grp_GetDataOfGroupByCod (&GrpDat); + Crs.CrsCod = GrpDat.CrsCod; + Crs_GetDataOfCourseByCod (&Crs); + fprintf (Gbl.F.Out,"%s, %s %s, %s %s %s", + Txt_teachers_files_area, + Txt_course,Crs.ShortName, + Txt_group,GrpDat.GrpTypName,GrpDat.GrpName); + break; case Brw_ADMI_SHARE_CRS: Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Crs_GetDataOfCourseByCod (&Crs); @@ -6746,6 +6954,7 @@ static bool Brw_CheckIfClipboardIsInThisTree (void) return true; // I am in the degree of the clipboard break; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_MARKS_CRS: case Brw_ADMI_ASSIG_USR: @@ -6761,6 +6970,7 @@ static bool Brw_CheckIfClipboardIsInThisTree (void) // I am in the student's works of the clipboard break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: if (Gbl.FileBrowser.Clipboard.Cod == Gbl.CurrentCrs.Grps.GrpCod) @@ -6837,6 +7047,7 @@ static long Brw_GetCodForClipboard (void) case Brw_ADMI_SHARE_DEG: return Gbl.CurrentDeg.Deg.DegCod; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_ASSIG_USR: case Brw_ADMI_ASSIG_CRS: @@ -6845,6 +7056,7 @@ static long Brw_GetCodForClipboard (void) case Brw_ADMI_MARKS_CRS: return Gbl.CurrentCrs.Crs.CrsCod; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: return Gbl.CurrentCrs.Grps.GrpCod; @@ -7186,6 +7398,7 @@ static long Brw_GetCodForExpandedFolders (void) case Brw_ADMI_SHARE_DEG: return Gbl.CurrentDeg.Deg.DegCod; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_ASSIG_USR: case Brw_ADMI_ASSIG_CRS: @@ -7194,6 +7407,7 @@ static long Brw_GetCodForExpandedFolders (void) case Brw_ADMI_MARKS_CRS: return Gbl.CurrentCrs.Crs.CrsCod; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: return Gbl.CurrentCrs.Grps.GrpCod; @@ -7279,6 +7493,7 @@ static void Brw_RemoveAffectedClipboards (Brw_FileBrowser_t FileBrowser,long MyU (unsigned) FileBrowser,Gbl.CurrentDeg.Deg.DegCod); break; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_MARKS_CRS: sprintf (Query,"DELETE FROM clipboard" @@ -7286,6 +7501,7 @@ static void Brw_RemoveAffectedClipboards (Brw_FileBrowser_t FileBrowser,long MyU (unsigned) FileBrowser,Gbl.CurrentCrs.Crs.CrsCod); break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: sprintf (Query,"DELETE FROM clipboard" @@ -7332,6 +7548,7 @@ void Brw_PasteIntoFileBrowser (void) switch (Gbl.FileBrowser.Clipboard.FileBrowser) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: // Clipboard in a group zone GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; @@ -7444,6 +7661,7 @@ static void Brw_PasteClipboard (void) Lay_ShowErrorAndExit ("The degree of copy source does not exist."); break; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_MARKS_CRS: Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; @@ -7455,6 +7673,7 @@ static void Brw_PasteClipboard (void) Lay_ShowErrorAndExit ("The course of copy source does not exist."); break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; @@ -7536,6 +7755,11 @@ static void Brw_PasteClipboard (void) NumUsrsToBeNotifiedByEMail = Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_DOCUMENT_FILE,FirstFilCod); Ntf_ShowAlertNumUsrsToBeNotifiedByEMail (NumUsrsToBeNotifiedByEMail); break; + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: + NumUsrsToBeNotifiedByEMail = Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TEACHERS_FILE,FirstFilCod); + Ntf_ShowAlertNumUsrsToBeNotifiedByEMail (NumUsrsToBeNotifiedByEMail); + break; case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: NumUsrsToBeNotifiedByEMail = Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_SHARED_FILE,FirstFilCod); @@ -7862,6 +8086,7 @@ static void Brw_PutFormToCreateAFolder (const char *FileNameToShow) switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -7936,6 +8161,7 @@ static void Brw_PutFormToUploadFilesUsingDropzone (const char *FileNameToShow) switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -7961,6 +8187,7 @@ static void Brw_PutFormToUploadFilesUsingDropzone (const char *FileNameToShow) switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -8010,6 +8237,7 @@ static void Brw_PutFormToUploadOneFileClassic (const char *FileNameToShow) switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -8049,6 +8277,7 @@ static void Brw_PutFormToPasteAFileOrFolder (const char *FileNameToShow) switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -8096,6 +8325,7 @@ static void Brw_PutFormToCreateALink (const char *FileNameToShow) switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); @@ -8537,6 +8767,12 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType) if (UploadType == Brw_CLASSIC_UPLOAD) Ntf_ShowAlertNumUsrsToBeNotifiedByEMail (NumUsrsToBeNotifiedByEMail); break; + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: + NumUsrsToBeNotifiedByEMail = Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TEACHERS_FILE,FilCod); + if (UploadType == Brw_CLASSIC_UPLOAD) + Ntf_ShowAlertNumUsrsToBeNotifiedByEMail (NumUsrsToBeNotifiedByEMail); + break; case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: NumUsrsToBeNotifiedByEMail = Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_SHARED_FILE,FilCod); @@ -8703,6 +8939,11 @@ void Brw_RecLinkFileBrowser (void) NumUsrsToBeNotifiedByEMail = Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_DOCUMENT_FILE,FilCod); Ntf_ShowAlertNumUsrsToBeNotifiedByEMail (NumUsrsToBeNotifiedByEMail); break; + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: + NumUsrsToBeNotifiedByEMail = Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TEACHERS_FILE,FilCod); + Ntf_ShowAlertNumUsrsToBeNotifiedByEMail (NumUsrsToBeNotifiedByEMail); + break; case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: NumUsrsToBeNotifiedByEMail = Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_SHARED_FILE,FilCod); @@ -9077,7 +9318,12 @@ void Brw_ShowFileMetadata (void) ICanChangePublic = true; ICanChangeLicense = true; break; + case Brw_ADMI_TEACH_CRS: + ICanChangePublic = false; // A file in teachers' zones can not be public... + ICanChangeLicense = true; // ...but I can change its license + break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); ICanChangePublic = false; // A file in group zones can not be public... @@ -9305,6 +9551,12 @@ void Brw_ShowFileMetadata (void) FileMetadata.FilCod,Gbl.CurrentCrs.Crs.CrsCod, Gbl.Usrs.Me.UsrDat.UsrCod); break; + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: + Ntf_MarkNotifAsSeen (Ntf_EVENT_TEACHERS_FILE, + FileMetadata.FilCod,Gbl.CurrentCrs.Crs.CrsCod, + Gbl.Usrs.Me.UsrDat.UsrCod); + break; case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: Ntf_MarkNotifAsSeen (Ntf_EVENT_SHARED_FILE, @@ -9339,6 +9591,11 @@ void Brw_ShowFileMetadata (void) Ntf_MarkNotifAsRemoved (Ntf_EVENT_DOCUMENT_FILE, FileMetadata.FilCod); break; + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: + Ntf_MarkNotifAsRemoved (Ntf_EVENT_TEACHERS_FILE, + FileMetadata.FilCod); + break; case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: Ntf_MarkNotifAsRemoved (Ntf_EVENT_SHARED_FILE, @@ -9444,6 +9701,12 @@ void Brw_DownloadFile (void) FileMetadata.FilCod,Gbl.CurrentCrs.Crs.CrsCod, Gbl.Usrs.Me.UsrDat.UsrCod); break; + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: + Ntf_MarkNotifAsSeen (Ntf_EVENT_TEACHERS_FILE, + FileMetadata.FilCod,Gbl.CurrentCrs.Crs.CrsCod, + Gbl.Usrs.Me.UsrDat.UsrCod); + break; case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: Ntf_MarkNotifAsSeen (Ntf_EVENT_SHARED_FILE, @@ -9485,19 +9748,24 @@ void Brw_DownloadFile (void) case Brw_ADMI_DOCUM_CRS: case Brw_ADMI_DOCUM_GRP: Ntf_MarkNotifAsRemoved (Ntf_EVENT_DOCUMENT_FILE, - FileMetadata.FilCod); + FileMetadata.FilCod); + break; + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: + Ntf_MarkNotifAsRemoved (Ntf_EVENT_TEACHERS_FILE, + FileMetadata.FilCod); break; case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: Ntf_MarkNotifAsRemoved (Ntf_EVENT_SHARED_FILE, - FileMetadata.FilCod); + FileMetadata.FilCod); break; case Brw_SHOW_MARKS_CRS: case Brw_SHOW_MARKS_GRP: case Brw_ADMI_MARKS_CRS: case Brw_ADMI_MARKS_GRP: Ntf_MarkNotifAsRemoved (Ntf_EVENT_MARKS_FILE, - FileMetadata.FilCod); + FileMetadata.FilCod); break; default: break; @@ -9531,11 +9799,16 @@ static bool Brw_CheckIfICanEditFileMetadata (long PublisherUsrCod) case ActReqDatAdmDocCrs: case ActChgDatAdmDocCrs: case ActReqDatAdmDocGrp: case ActChgDatAdmDocGrp: + + case ActReqDatTchCrs: case ActChgDatTchCrs: + case ActReqDatTchGrp: case ActChgDatTchGrp: + case ActReqDatShaCrs: case ActChgDatShaCrs: case ActReqDatShaGrp: case ActChgDatShaGrp: case ActReqDatAsgUsr: case ActChgDatAsgUsr: case ActReqDatAsgCrs: case ActChgDatAsgCrs: + case ActReqDatWrkCrs: case ActChgDatWrkCrs: case ActReqDatWrkUsr: case ActChgDatWrkUsr: @@ -9764,6 +10037,8 @@ void Brw_ChgFileMetadata (void) License = Brw_GetParLicense (); break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_ASSIG_USR: case Brw_ADMI_ASSIG_CRS: @@ -10565,12 +10840,14 @@ long Brw_GetCodForFiles (void) case Brw_ADMI_SHARE_DEG: return Gbl.CurrentDeg.Deg.DegCod; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_ASSIG_USR: case Brw_ADMI_WORKS_USR: case Brw_ADMI_MARKS_CRS: return Gbl.CurrentCrs.Crs.CrsCod; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: return Gbl.CurrentCrs.Grps.GrpCod; @@ -10645,6 +10922,7 @@ void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod, *InsCod = Ctr.InsCod; break; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_ASSIG_USR: case Brw_ADMI_WORKS_USR: @@ -10659,6 +10937,7 @@ void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod, *InsCod = Ctr.InsCod; break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: *GrpCod = GrpDat.GrpCod = Cod; @@ -10846,6 +11125,10 @@ static void Brw_RenameChildrenFilesOrFoldersInDB (const char *OldPath,const char static bool Brw_CheckIfICanEditFileOrFolder (unsigned Level) { + /***** Level 0 (root folder) can not be removed/renamed *****/ + if (Level == 0) + return false; + /***** I must be student, teacher, admin or superuser to edit *****/ if (Gbl.Usrs.Me.MaxRole < Rol_STUDENT) return false; @@ -10853,25 +11136,25 @@ static bool Brw_CheckIfICanEditFileOrFolder (unsigned Level) /***** Set depending on browser, level, logged role... *****/ switch (Gbl.FileBrowser.Type) { + case Brw_ADMI_TEACH_CRS: + return (Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER); + case Brw_ADMI_TEACH_GRP: + if (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER) + return Grp_GetIfIBelongToGrp (Gbl.CurrentCrs.Grps.GrpCod); // A teacher can edit only if hr/she belongs to group + return (Gbl.Usrs.Me.LoggedRole > Rol_TEACHER); case Brw_ADMI_SHARE_CRS: - // Check if I am the publisher of the folder - return (Level ? Brw_CheckIfIHavePermissionFileOrFolderCommon () : - false); case Brw_ADMI_SHARE_GRP: // Check if I am the publisher of the folder - return (Level ? Brw_CheckIfIHavePermissionFileOrFolderCommon () : - false); + return Brw_CheckIfICanModifySharedFileOrFolder (); case Brw_ADMI_ASSIG_USR: case Brw_ADMI_ASSIG_CRS: - return (Level != 0 && - (Gbl.FileBrowser.Asg.AsgCod < 0 || // If folder does not correspond to any assignment - (!Gbl.FileBrowser.Asg.Hidden && // If assignment is visible (not hidden) - Gbl.FileBrowser.Asg.IBelongToCrsOrGrps && // If I can do this assignment - ((Gbl.Usrs.Me.LoggedRole == Rol_STUDENT && Gbl.FileBrowser.Asg.Open) || - Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER)))); + return (Gbl.FileBrowser.Asg.AsgCod < 0 || // If folder does not correspond to any assignment + (!Gbl.FileBrowser.Asg.Hidden && // If assignment is visible (not hidden) + Gbl.FileBrowser.Asg.IBelongToCrsOrGrps && // If I can do this assignment + ((Gbl.Usrs.Me.LoggedRole == Rol_STUDENT && Gbl.FileBrowser.Asg.Open) || + Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER))); default: - return (Level != 0 && - Brw_FileBrowserIsEditable[Gbl.FileBrowser.Type]); + return Brw_FileBrowserIsEditable[Gbl.FileBrowser.Type]; } } @@ -10913,7 +11196,7 @@ static bool Brw_CheckIfICanCreateIntoFolder (unsigned Level) // A user can remove or rename a file if he's the publisher // A user can remove or rename a folder if he's the unique publisher of all the files and folders in the subtree starting there -static bool Brw_CheckIfIHavePermissionFileOrFolderCommon (void) +static bool Brw_CheckIfICanModifySharedFileOrFolder (void) { long Cod = Brw_GetCodForFiles (); char Query[512+PATH_MAX*2]; @@ -11102,12 +11385,12 @@ void Brw_RemoveUsrWorksInAllCrss (struct UsrData *UsrDat,Cns_QuietOrVerbose_t Qu } /*****************************************************************************/ -/********** Get summary and content of a document or a shared file ***********/ +/******************** Get summary and content of a file **********************/ /*****************************************************************************/ // This function may be called inside a web service, so don't report error -void Brw_GetSummaryAndContentOrSharedFile (char *SummaryStr,char **ContentStr, - long FilCod,unsigned MaxChars,bool GetContent) +void Brw_GetSummaryAndContentOfFile (char *SummaryStr,char **ContentStr, + long FilCod,unsigned MaxChars,bool GetContent) { char Query[256]; MYSQL_RES *mysql_res; @@ -11256,6 +11539,7 @@ unsigned Brw_ListDocsFound (const char *Query, static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row) { extern const char *Txt_Documents_area; + extern const char *Txt_Teachers_files_area; extern const char *Txt_Shared_files_area; extern const char *Txt_Assignments_area; extern const char *Txt_Works_area; @@ -11396,6 +11680,10 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row) case Brw_ADMI_DOCUM_GRP: Title = Txt_Documents_area; break; + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: + Title = Txt_Teachers_files_area; + break; case Brw_ADMI_SHARE_INS: case Brw_ADMI_SHARE_CTR: case Brw_ADMI_SHARE_DEG: diff --git a/swad_file_browser.h b/swad_file_browser.h index ae1e4f97..f32d2272 100644 --- a/swad_file_browser.h +++ b/swad_file_browser.h @@ -35,8 +35,9 @@ /******************************* Public types ********************************/ /*****************************************************************************/ -#define Brw_NUM_TYPES_FILE_BROWSER 25 -// The following types are stored in clipboard, expanded_folders, file_browser_size tables as numeric fields, so don't change numbers! +#define Brw_NUM_TYPES_FILE_BROWSER 27 +// The following types are stored in several database tables as numeric fields, +// so don't change numbers! typedef enum { Brw_UNKNOWN = 0, @@ -64,6 +65,8 @@ typedef enum Brw_ADMI_SHARE_DEG = 22, Brw_ADMI_SHARE_CTR = 23, Brw_ADMI_SHARE_INS = 24, + Brw_ADMI_TEACH_CRS = 25, + Brw_ADMI_TEACH_GRP = 26, } Brw_FileBrowser_t; // The following types are stored in files and clipboard tables as numeric fields, so don't change numbers! @@ -131,6 +134,7 @@ struct FileMetadata #define Brw_INTERNAL_NAME_ROOT_FOLDER_DOCUMENTS "doc" #define Brw_INTERNAL_NAME_ROOT_FOLDER_SHARED_FILES "sha" #define Brw_INTERNAL_NAME_ROOT_FOLDER_DOWNLOAD "descarga" // TODO: It should be "doc" +#define Brw_INTERNAL_NAME_ROOT_FOLDER_TEACHERS "tch" #define Brw_INTERNAL_NAME_ROOT_FOLDER_SHARED "comun" // TODO: It should be "sha" #define Brw_INTERNAL_NAME_ROOT_FOLDER_ASSIGNMENTS "actividades" // TODO: It should be "asg" #define Brw_INTERNAL_NAME_ROOT_FOLDER_WORKS "trabajos" // TODO: It should be "wrk" @@ -226,8 +230,8 @@ void Brw_RemoveGrpZones (long CrsCod,long GrpCod); void Brw_RemoveUsrWorksInCrs (struct UsrData *UsrDat,struct Course *Crs,Cns_QuietOrVerbose_t QuietOrVerbose); void Brw_RemoveUsrWorksInAllCrss (struct UsrData *UsrDat,Cns_QuietOrVerbose_t QuietOrVerbose); -void Brw_GetSummaryAndContentOrSharedFile (char *SummaryStr,char **ContentStr, - long FilCod,unsigned MaxChars,bool GetContent); +void Brw_GetSummaryAndContentOfFile (char *SummaryStr,char **ContentStr, + long FilCod,unsigned MaxChars,bool GetContent); unsigned Brw_ListDocsFound (const char *Query, const char *TitleSingular,const char *TitlePlural); diff --git a/swad_indicator.c b/swad_indicator.c index b08ec80d..2847ed02 100644 --- a/swad_indicator.c +++ b/swad_indicator.c @@ -1139,14 +1139,14 @@ static void Ind_ShowTableOfCoursesWithIndicators (Ind_IndicatorsLayout_t Indicat "DAT_SMALL_RED",Gbl.RowEvenOdd, Indicators.ThereAreMaterials ? "" : Txt_NO, - (Indicators.NumFilesInDownloadZones != 0) ? "DAT_SMALL_GREEN" : + (Indicators.NumFilesInDocumentZones != 0) ? "DAT_SMALL_GREEN" : "DAT_SMALL_RED", Gbl.RowEvenOdd, - Indicators.NumFilesInDownloadZones, - (Indicators.NumFilesInCommonZones != 0) ? "DAT_SMALL_GREEN" : + Indicators.NumFilesInDocumentZones, + (Indicators.NumFilesInSharedZones != 0) ? "DAT_SMALL_GREEN" : "DAT_SMALL_RED", Gbl.RowEvenOdd, - Indicators.NumFilesInCommonZones, + Indicators.NumFilesInSharedZones, "DAT_SMALL_GREEN",Gbl.RowEvenOdd, Indicators.ThereIsAssessment ? Txt_YES : @@ -1225,12 +1225,14 @@ void Ind_GetIndicatorsCrs (long CrsCod,struct Ind_IndicatorsCrs *Indicators) Indicators->CountIndicators = 0; /* Get whether download zones are empty or not */ - Indicators->NumFilesInDownloadZonesCrs = Ind_GetNumFilesOfCrsFileZoneFromDB (Brw_ADMI_DOCUM_CRS,CrsCod); - Indicators->NumFilesInDownloadZonesGrp = Ind_GetNumFilesOfCrsFileZoneFromDB (Brw_ADMI_DOCUM_GRP,CrsCod); - Indicators->NumFilesInDownloadZones = Indicators->NumFilesInDownloadZonesCrs + Indicators->NumFilesInDownloadZonesGrp; - Indicators->NumFilesInCommonZonesCrs = Ind_GetNumFilesOfCrsFileZoneFromDB (Brw_ADMI_SHARE_CRS,CrsCod); - Indicators->NumFilesInCommonZonesGrp = Ind_GetNumFilesOfCrsFileZoneFromDB (Brw_ADMI_SHARE_GRP,CrsCod); - Indicators->NumFilesInCommonZones = Indicators->NumFilesInCommonZonesCrs + Indicators->NumFilesInCommonZonesGrp; + Indicators->NumFilesInDocumentZonesCrs = Ind_GetNumFilesOfCrsFileZoneFromDB (Brw_ADMI_DOCUM_CRS,CrsCod); + Indicators->NumFilesInDocumentZonesGrp = Ind_GetNumFilesOfCrsFileZoneFromDB (Brw_ADMI_DOCUM_GRP,CrsCod); + Indicators->NumFilesInDocumentZones = Indicators->NumFilesInDocumentZonesCrs + + Indicators->NumFilesInDocumentZonesGrp; + Indicators->NumFilesInSharedZonesCrs = Ind_GetNumFilesOfCrsFileZoneFromDB (Brw_ADMI_SHARE_CRS,CrsCod); + Indicators->NumFilesInSharedZonesGrp = Ind_GetNumFilesOfCrsFileZoneFromDB (Brw_ADMI_SHARE_GRP,CrsCod); + Indicators->NumFilesInSharedZones = Indicators->NumFilesInSharedZonesCrs + + Indicators->NumFilesInSharedZonesGrp; /* Indicator #1: information about syllabus */ Inf_GetInfoSrcFromDB (CrsCod,Inf_LECTURES ,&(Indicators->SyllabusLecSrc ),&MustBeRead); @@ -1263,8 +1265,8 @@ void Ind_GetIndicatorsCrs (long CrsCod,struct Ind_IndicatorsCrs *Indicators) Indicators->CountIndicators++; /* Indicator #4: information about materials */ - Indicators->ThereAreMaterials = (Indicators->NumFilesInDownloadZones != 0) || - (Indicators->NumFilesInCommonZones != 0); + Indicators->ThereAreMaterials = (Indicators->NumFilesInDocumentZones != 0) || + (Indicators->NumFilesInSharedZones != 0); if (Indicators->ThereAreMaterials) Indicators->CountIndicators++; diff --git a/swad_indicator.h b/swad_indicator.h index 33b05bc6..a116a127 100644 --- a/swad_indicator.h +++ b/swad_indicator.h @@ -34,12 +34,12 @@ #define Ind_NUM_INDICATORS 5 struct Ind_IndicatorsCrs { - unsigned long NumFilesInDownloadZones; - unsigned long NumFilesInDownloadZonesCrs; - unsigned long NumFilesInDownloadZonesGrp; - unsigned long NumFilesInCommonZones; - unsigned long NumFilesInCommonZonesCrs; - unsigned long NumFilesInCommonZonesGrp; + unsigned long NumFilesInDocumentZones; + unsigned long NumFilesInDocumentZonesCrs; + unsigned long NumFilesInDocumentZonesGrp; + unsigned long NumFilesInSharedZones; + unsigned long NumFilesInSharedZonesCrs; + unsigned long NumFilesInSharedZonesGrp; bool ThereIsSyllabus; Inf_InfoSrc_t TeachingGuideSrc; Inf_InfoSrc_t SyllabusLecSrc; diff --git a/swad_layout.c b/swad_layout.c index 169273b5..9e2f9fbc 100644 --- a/swad_layout.c +++ b/swad_layout.c @@ -201,6 +201,8 @@ void Lay_WriteStartOfPage (void) Gbl.Action.Act == ActFrmCreShaDeg || // Brw_ADMI_SHARE_DEG Gbl.Action.Act == ActFrmCreDocCrs || // Brw_ADMI_DOCUM_CRS Gbl.Action.Act == ActFrmCreDocGrp || // Brw_ADMI_DOCUM_GRP + Gbl.Action.Act == ActFrmCreTchCrs || // Brw_ADMI_TEACH_CRS + Gbl.Action.Act == ActFrmCreTchGrp || // Brw_ADMI_TEACH_GRP Gbl.Action.Act == ActFrmCreShaCrs || // Brw_ADMI_SHARE_CRS Gbl.Action.Act == ActFrmCreShaGrp || // Brw_ADMI_SHARE_GRP Gbl.Action.Act == ActFrmCreAsgUsr || // Brw_ADMI_ASSIG_USR @@ -539,6 +541,8 @@ static void Lay_WriteScripts (void) case ActFrmCreShaDeg: // Brw_ADMI_SHARE_DEG case ActFrmCreDocCrs: // Brw_ADMI_DOCUM_CRS case ActFrmCreDocGrp: // Brw_ADMI_DOCUM_GRP + case ActFrmCreTchCrs: // Brw_ADMI_TEACH_CRS + case ActFrmCreTchGrp: // Brw_ADMI_TEACH_GRP case ActFrmCreShaCrs: // Brw_ADMI_SHARE_CRS case ActFrmCreShaGrp: // Brw_ADMI_SHARE_GRP case ActFrmCreAsgUsr: // Brw_ADMI_ASSIG_USR diff --git a/swad_menu.c b/swad_menu.c index 42c6a359..82a394eb 100644 --- a/swad_menu.c +++ b/swad_menu.c @@ -125,6 +125,7 @@ const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB ActSeeTchGui, ActSeeSyl, ActSeeAdmDocCrsGrp, + ActAdmTchCrsGrp, ActAdmShaCrsGrp, ActSeeCrsTT, ActSeeBib, diff --git a/swad_notification.c b/swad_notification.c index b8812d8f..0dcfb1d7 100644 --- a/swad_notification.c +++ b/swad_notification.c @@ -61,6 +61,7 @@ const char *Ntf_WSNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] = /* Course tab */ "documentFile", // Ntf_EVENT_DOCUMENT_FILE + "teachersFile", // Ntf_EVENT_TEACHERS_FILE "sharedFile", // Ntf_EVENT_SHARED_FILE /* Assessment tab */ @@ -98,6 +99,7 @@ static const Act_Action_t Ntf_DefaultActions[Ntf_NUM_NOTIFY_EVENTS] = /* Course tab */ ActSeeAdmDocCrsGrp, // Ntf_EVENT_DOCUMENT_FILE + ActAdmTchCrsGrp, // Ntf_EVENT_TEACHERS_FILE ActAdmShaCrsGrp, // Ntf_EVENT_SHARED_FILE /* Assessment tab */ @@ -140,6 +142,7 @@ static const char *Ntf_ParamNotifMeAboutNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] = /* Course tab */ "NotifyNtfEventDocumentFile", // Ntf_EVENT_DOCUMENT_FILE + "NotifyNtfEventTeachersFile", // Ntf_EVENT_TEACHERS_FILE "NotifyNtfEventSharedFile", // Ntf_EVENT_SHARED_FILE /* Assessment tab */ @@ -178,6 +181,7 @@ static const char *Ntf_ParamEmailMeAboutNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] = /* Course tab */ "EmailNtfEventDocumentFile", // Ntf_EVENT_DOCUMENT_FILE + "EmailNtfEventTeachersFile", // Ntf_EVENT_TEACHERS_FILE "EmailNtfEventSharedFile", // Ntf_EVENT_SHARED_FILE /* Assessment tab */ @@ -216,6 +220,7 @@ static const char *Ntf_Icons[Ntf_NUM_NOTIFY_EVENTS] = /* Course tab */ "file64x64.gif", // Ntf_EVENT_DOCUMENT_FILE + "file64x64.gif", // Ntf_EVENT_TEACHERS_FILE "file64x64.gif", // Ntf_EVENT_SHARED_FILE /* Assessment tab */ @@ -683,6 +688,7 @@ static bool Ntf_StartFormGoToAction (Ntf_NotifyEvent_t NotifyEvent, switch (NotifyEvent) { case Ntf_EVENT_DOCUMENT_FILE: + case Ntf_EVENT_TEACHERS_FILE: case Ntf_EVENT_SHARED_FILE: case Ntf_EVENT_MARKS_FILE: Action = ActUnk; @@ -702,6 +708,10 @@ static bool Ntf_StartFormGoToAction (Ntf_NotifyEvent_t NotifyEvent, (CtrCod > 0 ? ActReqDatSeeDocCtr : ActReqDatSeeDocIns)))); break; + case Ntf_EVENT_TEACHERS_FILE: + Action = (GrpCod > 0 ? ActReqDatTchGrp : + ActReqDatTchCrs); + break; case Ntf_EVENT_SHARED_FILE: Action = (GrpCod > 0 ? ActReqDatShaGrp : (CrsCod > 0 ? ActReqDatShaCrs : @@ -854,8 +864,9 @@ void Ntf_GetNotifSummaryAndContent (char *SummaryStr,char **ContentStr, case Ntf_EVENT_UNKNOWN: break; case Ntf_EVENT_DOCUMENT_FILE: + case Ntf_EVENT_TEACHERS_FILE: case Ntf_EVENT_SHARED_FILE: - Brw_GetSummaryAndContentOrSharedFile (SummaryStr,ContentStr,Cod,MaxChars,GetContent); + Brw_GetSummaryAndContentOfFile (SummaryStr,ContentStr,Cod,MaxChars,GetContent); break; case Ntf_EVENT_ASSIGNMENT: Asg_GetNotifAssignment (SummaryStr,ContentStr,Cod,MaxChars,GetContent); @@ -1012,6 +1023,8 @@ void Ntf_MarkNotifOneFileAsRemoved (const char *Path) { case Brw_ADMI_DOCUM_CRS: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_CRS: @@ -1027,6 +1040,10 @@ void Ntf_MarkNotifOneFileAsRemoved (const char *Path) case Brw_ADMI_DOCUM_GRP: NotifyEvent = Ntf_EVENT_DOCUMENT_FILE; break; + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: + NotifyEvent = Ntf_EVENT_TEACHERS_FILE; + break; case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: NotifyEvent = Ntf_EVENT_SHARED_FILE; @@ -1062,6 +1079,8 @@ void Ntf_MarkNotifChildrenOfFolderAsRemoved (const char *Path) { case Brw_ADMI_DOCUM_CRS: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_CRS: @@ -1073,6 +1092,10 @@ void Ntf_MarkNotifChildrenOfFolderAsRemoved (const char *Path) case Brw_ADMI_DOCUM_GRP: NotifyEvent = Ntf_EVENT_DOCUMENT_FILE; break; + case Brw_ADMI_TEACH_CRS: + case Brw_ADMI_TEACH_GRP: + NotifyEvent = Ntf_EVENT_TEACHERS_FILE; + break; case Brw_ADMI_SHARE_CRS: case Brw_ADMI_SHARE_GRP: NotifyEvent = Ntf_EVENT_SHARED_FILE; @@ -1110,14 +1133,16 @@ void Ntf_MarkNotifFilesInGroupAsRemoved (long GrpCod) /***** Set notifications as removed *****/ sprintf (Query,"UPDATE notif SET Status=(Status | %u)" - " WHERE NotifyEvent IN ('%u','%u','%u') AND Cod IN" + " WHERE NotifyEvent IN ('%u','%u','%u','%u') AND Cod IN" " (SELECT FilCod FROM files" - " WHERE FileBrowser IN ('%u','%u','%u') AND Cod='%ld')", + " WHERE FileBrowser IN ('%u','%u','%u','%u') AND Cod='%ld')", (unsigned) Ntf_STATUS_BIT_REMOVED, (unsigned) Ntf_EVENT_DOCUMENT_FILE, + (unsigned) Ntf_EVENT_TEACHERS_FILE, (unsigned) Ntf_EVENT_SHARED_FILE, (unsigned) Ntf_EVENT_MARKS_FILE, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, GrpCod); @@ -1147,28 +1172,50 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod) case Ntf_EVENT_UNKNOWN: // This function should not be called in this case return 0; case Ntf_EVENT_DOCUMENT_FILE: + case Ntf_EVENT_TEACHERS_FILE: case Ntf_EVENT_SHARED_FILE: case Ntf_EVENT_MARKS_FILE: switch (Gbl.FileBrowser.Type) { case Brw_ADMI_DOCUM_CRS: case Brw_ADMI_SHARE_CRS: - case Brw_ADMI_MARKS_CRS: + case Brw_ADMI_MARKS_CRS: // Notify all users in course except me sprintf (Query,"SELECT UsrCod FROM crs_usr" " WHERE CrsCod='%ld'" " AND UsrCod<>'%ld'", Gbl.CurrentCrs.Crs.CrsCod, Gbl.Usrs.Me.UsrDat.UsrCod); break; + case Brw_ADMI_TEACH_CRS: // Notify all teachers in course except me + sprintf (Query,"SELECT UsrCod FROM crs_usr" + " WHERE CrsCod='%ld'" + " AND UsrCod<>'%ld'" + " AND Role='%u'", // Notify teachers only + Gbl.CurrentCrs.Crs.CrsCod, + Gbl.Usrs.Me.UsrDat.UsrCod, + (unsigned) Rol_TEACHER); + break; case Brw_ADMI_DOCUM_GRP: case Brw_ADMI_SHARE_GRP: - case Brw_ADMI_MARKS_GRP: + case Brw_ADMI_MARKS_GRP: // Notify all users in group except me sprintf (Query,"SELECT UsrCod FROM crs_grp_usr" " WHERE crs_grp_usr.GrpCod='%ld'" " AND crs_grp_usr.UsrCod<>'%ld'", Gbl.CurrentCrs.Grps.GrpCod, Gbl.Usrs.Me.UsrDat.UsrCod); break; + case Brw_ADMI_TEACH_GRP: // Notify all teachers in group except me + sprintf (Query,"SELECT crs_grp_usr.UsrCod" + " FROM crs_grp_usr,crs_grp,crs_usr" + " WHERE crs_grp_usr.GrpCod='%ld'" + " AND crs_grp_usr.UsrCod<>'%ld'" + " AND crs_grp_usr.GrpCod=crs_grp.GrpCod" + " AND crs_grp.CrsCod=crs_usr.CrsCod" + " AND crs_usr.Role='%u'", // Notify teachers only + Gbl.CurrentCrs.Grps.GrpCod, + Gbl.Usrs.Me.UsrDat.UsrCod, + (unsigned) Rol_TEACHER); + break; default: // This function should not be called in other cases return 0; } @@ -1207,7 +1254,8 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod) if (Gbl.CurrentCrs.Crs.NumTchs) // If this course has teachers ==> send notification to teachers sprintf (Query,"SELECT UsrCod FROM crs_usr" - " WHERE CrsCod='%ld' AND UsrCod<>'%ld'" + " WHERE CrsCod='%ld'" + " AND UsrCod<>'%ld'" " AND Role='%u'", // Notify teachers only Gbl.CurrentCrs.Crs.CrsCod, Gbl.Usrs.Me.UsrDat.UsrCod, @@ -1593,6 +1641,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign case Ntf_EVENT_FOLLOWER: break; case Ntf_EVENT_DOCUMENT_FILE: + case Ntf_EVENT_TEACHERS_FILE: case Ntf_EVENT_SHARED_FILE: case Ntf_EVENT_ASSIGNMENT: case Ntf_EVENT_EXAM_ANNOUNCEMENT: diff --git a/swad_notification.h b/swad_notification.h index 4eee0af9..d7a21479 100644 --- a/swad_notification.h +++ b/swad_notification.h @@ -37,42 +37,44 @@ /******************************** Public types *******************************/ /*****************************************************************************/ -#define Ntf_NUM_NOTIFY_EVENTS (1+18) +#define Ntf_NUM_NOTIFY_EVENTS (1+19) // If the numbers assigned to each event type change, -// it is necessary to change old numbers to new ones in database tables notif and sta_notif +// it is necessary to change old numbers to new ones +// in database tables notif, sta_notif and usr_data typedef enum { Ntf_EVENT_UNKNOWN = 0, /* Course tab */ Ntf_EVENT_DOCUMENT_FILE = 1, - Ntf_EVENT_SHARED_FILE = 2, + Ntf_EVENT_TEACHERS_FILE = 2, // TODO: Change all the numbers >= 2 + Ntf_EVENT_SHARED_FILE = 3, // Old 2 /* Assessment tab */ - Ntf_EVENT_ASSIGNMENT = 3, - Ntf_EVENT_EXAM_ANNOUNCEMENT = 4, - Ntf_EVENT_MARKS_FILE = 5, + Ntf_EVENT_ASSIGNMENT = 4, // Old 3 + Ntf_EVENT_EXAM_ANNOUNCEMENT = 5, // Old 4 + Ntf_EVENT_MARKS_FILE = 6, // Old 5 /* Users tab */ - Ntf_EVENT_ENROLLMENT_STUDENT = 6, - Ntf_EVENT_ENROLLMENT_TEACHER = 7, - Ntf_EVENT_ENROLLMENT_REQUEST = 8, + Ntf_EVENT_ENROLLMENT_STUDENT = 7, // Old 6 + Ntf_EVENT_ENROLLMENT_TEACHER = 8, // Old 7 + Ntf_EVENT_ENROLLMENT_REQUEST = 9, // Old 8 /* Social tab */ - Ntf_EVENT_TIMELINE_COMMENT = 9, // Old 10 // New comment to one of my social publishings (notes or comments) - Ntf_EVENT_TIMELINE_FAV = 10, // Old 11 // New fav of one of my social publishings (notes or comments) - Ntf_EVENT_TIMELINE_SHARE = 11, // Old 12 // New sharing of one of my social notes - Ntf_EVENT_TIMELINE_MENTION = 12, // Old 13 // New mention - Ntf_EVENT_FOLLOWER = 13, // Old 14 - Ntf_EVENT_FORUM_POST_COURSE = 14, // Old 15 // New post in forums of my courses - Ntf_EVENT_FORUM_REPLY = 15, // Old 16 // New reply to one of my posts in any forum + Ntf_EVENT_TIMELINE_COMMENT = 10, // Old 9 // New comment to one of my social publishings (notes or comments) + Ntf_EVENT_TIMELINE_FAV = 11, // Old 10 // New fav of one of my social publishings (notes or comments) + Ntf_EVENT_TIMELINE_SHARE = 12, // Old 11 // New sharing of one of my social notes + Ntf_EVENT_TIMELINE_MENTION = 13, // Old 12 // New mention + Ntf_EVENT_FOLLOWER = 14, // Old 13 + Ntf_EVENT_FORUM_POST_COURSE = 15, // Old 14 // New post in forums of my courses + Ntf_EVENT_FORUM_REPLY = 16, // Old 15 // New reply to one of my posts in any forum /* Messages tab */ - Ntf_EVENT_NOTICE = 16, // Old 17 - Ntf_EVENT_MESSAGE = 17, // Old 18 + Ntf_EVENT_NOTICE = 17, // Old 16 + Ntf_EVENT_MESSAGE = 18, // Old 17 /* Statistics tab */ - Ntf_EVENT_SURVEY = 18, // Old 19 + Ntf_EVENT_SURVEY = 19, // Old 18 /* Profile tab */ diff --git a/swad_search.c b/swad_search.c index a17264dd..60602771 100644 --- a/swad_search.c +++ b/swad_search.c @@ -875,7 +875,7 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) extern const char *Txt_document_in_my_courses; extern const char *Txt_documents_in_my_courses; char SearchQuery[Sch_MAX_LENGTH_SEARCH_QUERY+1]; - char Query[(512+Sch_MAX_LENGTH_SEARCH_QUERY)*2]; + char Query[(1024+Sch_MAX_LENGTH_SEARCH_QUERY)*2]; unsigned NumDocs; /***** Check user's permission *****/ @@ -890,25 +890,31 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) if (mysql_query (&Gbl.mysql,Query)) DB_ExitOnMySQLError ("can not remove temporary table"); - sprintf (Query,"CREATE TEMPORARY TABLE my_files_crs (FilCod INT NOT NULL,UNIQUE INDEX(FilCod)) ENGINE=MEMORY" + sprintf (Query,"CREATE TEMPORARY TABLE my_files_crs" + " (FilCod INT NOT NULL,UNIQUE INDEX(FilCod))" + " ENGINE=MEMORY" " SELECT files.FilCod FROM crs_usr,files" " WHERE crs_usr.UsrCod='%ld'" " AND crs_usr.CrsCod=files.Cod" - " AND files.FileBrowser IN ('%u','%u','%u')", + " AND files.FileBrowser IN ('%u','%u','%u','%u')", Gbl.Usrs.Me.UsrDat.UsrCod, (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_MARKS_CRS); if (mysql_query (&Gbl.mysql,Query)) DB_ExitOnMySQLError ("can not create temporary table"); - sprintf (Query,"CREATE TEMPORARY TABLE my_files_grp (FilCod INT NOT NULL,UNIQUE INDEX(FilCod)) ENGINE=MEMORY" + sprintf (Query,"CREATE TEMPORARY TABLE my_files_grp" + " (FilCod INT NOT NULL,UNIQUE INDEX(FilCod))" + " ENGINE=MEMORY" " SELECT files.FilCod FROM crs_grp_usr,files" " WHERE crs_grp_usr.UsrCod='%ld'" " AND crs_grp_usr.GrpCod=files.Cod" - " AND files.FileBrowser IN ('%u','%u','%u')", + " AND files.FileBrowser IN ('%u','%u','%u','%u')", Gbl.Usrs.Me.UsrDat.UsrCod, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP); /* if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SYS_ADM) @@ -928,7 +934,7 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) "'-1' AS GrpCod" " FROM files,courses,degrees,centres,institutions,countries" " WHERE files.FilCod IN (SELECT FilCod FROM my_files_crs) AND %s" - " AND files.FileBrowser IN ('%u','%u','%u')" + " AND files.FileBrowser IN ('%u','%u','%u','%u')" " AND files.Cod=courses.CrsCod" " AND courses.DegCod=degrees.DegCod" " AND degrees.CtrCod=centres.CtrCod" @@ -945,7 +951,7 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) "crs_grp.GrpCod" " FROM files,crs_grp,crs_grp_types,courses,degrees,centres,institutions,countries" " WHERE files.FilCod IN (SELECT FilCod FROM my_files_grp) AND %s" - " AND files.FileBrowser IN ('%u','%u','%u')" + " AND files.FileBrowser IN ('%u','%u','%u','%u')" " AND files.Cod=crs_grp.GrpCod" " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod" " AND crs_grp_types.CrsCod=courses.CrsCod" @@ -959,11 +965,13 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery) " ORDER BY InsShortName,CtrShortName,DegShortName,CrsShortName,PathFromRoot", SearchQuery, (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_MARKS_CRS, RangeQuery, SearchQuery, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, RangeQuery); @@ -1060,7 +1068,7 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery) "'-1' AS GrpCod" " FROM files,courses,degrees,centres,institutions,countries" " WHERE files.PublisherUsrCod='%ld' AND %s" - " AND files.FileBrowser IN ('%u','%u','%u')" + " AND files.FileBrowser IN ('%u','%u','%u','%u')" " AND files.Cod=courses.CrsCod" " AND courses.DegCod=degrees.DegCod" " AND degrees.CtrCod=centres.CtrCod" @@ -1077,7 +1085,7 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery) "crs_grp.GrpCod" " FROM files,crs_grp,crs_grp_types,courses,degrees,centres,institutions,countries" " WHERE files.PublisherUsrCod='%ld' AND %s" - " AND files.FileBrowser IN ('%u','%u','%u')" + " AND files.FileBrowser IN ('%u','%u','%u','%u')" " AND files.Cod=crs_grp.GrpCod" " AND crs_grp.GrpTypCod=crs_grp_types.GrpTypCod" " AND crs_grp_types.CrsCod=courses.CrsCod" @@ -1114,11 +1122,13 @@ static unsigned Sch_SearchMyDocumentsInDB (const char *RangeQuery) RangeQuery, Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_MARKS_CRS, RangeQuery, Gbl.Usrs.Me.UsrDat.UsrCod,SearchQuery, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP, RangeQuery, diff --git a/swad_social.c b/swad_social.c index 7ad4c38f..7c430f7d 100644 --- a/swad_social.c +++ b/swad_social.c @@ -275,6 +275,7 @@ void Soc_ShowTimelineGbl (void) /* Course tab */ Soc_TOP_MESSAGE_NONE, // Ntf_EVENT_DOCUMENT_FILE + Soc_TOP_MESSAGE_NONE, // Ntf_EVENT_TEACHERS_FILE Soc_TOP_MESSAGE_NONE, // Ntf_EVENT_SHARED_FILE /* Assessment tab */ @@ -1689,7 +1690,7 @@ static void Soc_GetNoteSummary (const struct SocialNote *SocNot, case Soc_NOTE_DEG_SHA_PUB_FILE: case Soc_NOTE_CRS_DOC_PUB_FILE: case Soc_NOTE_CRS_SHA_PUB_FILE: - Brw_GetSummaryAndContentOrSharedFile (SummaryStr,NULL,SocNot->Cod,MaxChars,false); + Brw_GetSummaryAndContentOfFile (SummaryStr,NULL,SocNot->Cod,MaxChars,false); break; case Soc_NOTE_EXAM_ANNOUNCEMENT: Exa_GetSummaryAndContentExamAnnouncement (SummaryStr,NULL,SocNot->Cod,MaxChars,false); diff --git a/swad_statistic.c b/swad_statistic.c index 074316cf..1f2204b9 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -5226,6 +5226,8 @@ static void Sta_GetAndShowFileBrowsersStats (void) { Brw_ADMI_DOCUM_CRS, Brw_ADMI_DOCUM_GRP, + Brw_ADMI_TEACH_CRS, + Brw_ADMI_TEACH_GRP, Brw_ADMI_SHARE_CRS, Brw_ADMI_SHARE_GRP, Brw_ADMI_MARKS_CRS, @@ -5486,45 +5488,72 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," - "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + "COUNT(DISTINCT GrpCod)-1," + "'-1'," + "MAX(NumLevels)," + "SUM(NumFolders)," + "SUM(NumFiles)," + "SUM(TotalSize)" " FROM " "(" - "SELECT Cod AS CrsCod,'-1' AS GrpCod," - "NumLevels,NumFolders,NumFiles,TotalSize" + "SELECT Cod AS CrsCod," + "'-1' AS GrpCod," + "NumLevels," + "NumFolders," + "NumFiles," + "TotalSize" " FROM file_browser_size" - " WHERE FileBrowser IN ('%u','%u','%u','%u','%u')" + " WHERE FileBrowser IN ('%u','%u','%u','%u','%u','%u')" " UNION " - "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," - "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + "SELECT crs_grp_types.CrsCod," + "file_browser_size.Cod AS GrpCod," + "file_browser_size.NumLevels," + "file_browser_size.NumFolders," + "file_browser_size.NumFiles," + "file_browser_size.TotalSize" " FROM crs_grp_types,crs_grp,file_browser_size" " WHERE crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u')" ") AS sizes", (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_WORKS_USR, (unsigned) Brw_ADMI_MARKS_CRS, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP); break; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_MARKS_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT Cod),'-1','-1'," - "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT Cod)," + "'-1'," + "'-1'," + "MAX(NumLevels)," + "SUM(NumFolders)," + "SUM(NumFiles)," + "SUM(TotalSize)" " FROM file_browser_size" " WHERE FileBrowser='%u'", (unsigned) FileBrowser); break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + "COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM crs_grp_types,crs_grp,file_browser_size" " WHERE crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" @@ -5533,15 +5562,25 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, break; case Brw_ADMI_ASSIG_USR: case Brw_ADMI_WORKS_USR: - sprintf (Query,"SELECT COUNT(DISTINCT Cod),'-1',COUNT(DISTINCT ZoneUsrCod)," - "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT Cod)," + "'-1'," + "COUNT(DISTINCT ZoneUsrCod)," + "MAX(NumLevels)," + "SUM(NumFolders)," + "SUM(NumFiles)," + "SUM(TotalSize)" " FROM file_browser_size" " WHERE FileBrowser='%u'", (unsigned) FileBrowser); break; case Brw_ADMI_BRIEF_USR: - sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT ZoneUsrCod)," - "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + sprintf (Query,"SELECT '-1'," + "'-1'," + "COUNT(DISTINCT ZoneUsrCod)," + "MAX(NumLevels)," + "SUM(NumFolders)," + "SUM(NumFiles)," + "SUM(TotalSize)" " FROM file_browser_size" " WHERE FileBrowser='%u'", (unsigned) FileBrowser); @@ -5556,22 +5595,35 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," - "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + "COUNT(DISTINCT GrpCod)-1," + "'-1'," + "MAX(NumLevels)," + "SUM(NumFolders)," + "SUM(NumFiles)," + "SUM(TotalSize)" " FROM " "(" - "SELECT file_browser_size.Cod AS CrsCod,'-1' AS GrpCod," // Course zones - "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + "SELECT file_browser_size.Cod AS CrsCod," + "'-1' AS GrpCod," // Course zones + "file_browser_size.NumLevels," + "file_browser_size.NumFolders," + "file_browser_size.NumFiles," + "file_browser_size.TotalSize" " FROM institutions,centres,degrees,courses,file_browser_size" " WHERE institutions.CtyCod='%ld'" " AND institutions.InsCod=centres.InsCod" " AND centres.CtrCod=degrees.CtrCod" " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u')" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u','%u')" " UNION " - "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," // Group zones - "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + "SELECT crs_grp_types.CrsCod," + "file_browser_size.Cod AS GrpCod," // Group zones + "file_browser_size.NumLevels," + "file_browser_size.NumFolders," + "file_browser_size.NumFiles," + "file_browser_size.TotalSize" " FROM institutions,centres,degrees,courses,crs_grp_types,crs_grp,file_browser_size" " WHERE institutions.CtyCod='%ld'" " AND institutions.InsCod=centres.InsCod" @@ -5580,24 +5632,32 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u')" ") AS sizes", Gbl.CurrentCty.Cty.CtyCod, (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_WORKS_USR, (unsigned) Brw_ADMI_MARKS_CRS, Gbl.CurrentCty.Cty.CtyCod, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP); break; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_MARKS_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1','-1'," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "'-1'," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM institutions,centres,degrees,courses,file_browser_size" " WHERE institutions.CtyCod='%ld'" " AND institutions.InsCod=centres.InsCod" @@ -5608,10 +5668,16 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + "COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM institutions,centres,degrees,courses,crs_grp_types,crs_grp,file_browser_size" " WHERE institutions.CtyCod='%ld'" " AND institutions.InsCod=centres.InsCod" @@ -5625,8 +5691,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, break; case Brw_ADMI_ASSIG_USR: case Brw_ADMI_WORKS_USR: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM institutions,centres,degrees,courses,file_browser_size" " WHERE institutions.CtyCod='%ld'" " AND institutions.InsCod=centres.InsCod" @@ -5637,8 +5708,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, Gbl.CurrentCty.Cty.CtyCod,(unsigned) FileBrowser); break; case Brw_ADMI_BRIEF_USR: - sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT '-1'," + "'-1'," + "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM institutions,centres,degrees,courses,crs_usr,file_browser_size" " WHERE institutions.CtyCod='%ld'" " AND institutions.InsCod=centres.InsCod" @@ -5659,21 +5735,34 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," - "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + "COUNT(DISTINCT GrpCod)-1," + "'-1'," + "MAX(NumLevels)," + "SUM(NumFolders)," + "SUM(NumFiles)," + "SUM(TotalSize)" " FROM " "(" - "SELECT file_browser_size.Cod AS CrsCod,'-1' AS GrpCod," // Course zones - "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + "SELECT file_browser_size.Cod AS CrsCod," + "'-1' AS GrpCod," // Course zones + "file_browser_size.NumLevels," + "file_browser_size.NumFolders," + "file_browser_size.NumFiles," + "file_browser_size.TotalSize" " FROM centres,degrees,courses,file_browser_size" " WHERE centres.InsCod='%ld'" " AND centres.CtrCod=degrees.CtrCod" " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u')" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u','%u')" " UNION " - "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," // Group zones - "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + "SELECT crs_grp_types.CrsCod," + "file_browser_size.Cod AS GrpCod," // Group zones + "file_browser_size.NumLevels," + "file_browser_size.NumFolders," + "file_browser_size.NumFiles," + "file_browser_size.TotalSize" " FROM centres,degrees,courses,crs_grp_types,crs_grp,file_browser_size" " WHERE centres.InsCod='%ld'" " AND centres.CtrCod=degrees.CtrCod" @@ -5681,24 +5770,32 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, " AND courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u')" ") AS sizes", Gbl.CurrentIns.Ins.InsCod, (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_WORKS_USR, (unsigned) Brw_ADMI_MARKS_CRS, Gbl.CurrentIns.Ins.InsCod, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP); break; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_MARKS_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1','-1'," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "'-1'," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM centres,degrees,courses,file_browser_size" " WHERE centres.InsCod='%ld'" " AND centres.CtrCod=degrees.CtrCod" @@ -5708,10 +5805,16 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + "COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM centres,degrees,courses,crs_grp_types,crs_grp,file_browser_size" " WHERE centres.InsCod='%ld'" " AND centres.CtrCod=degrees.CtrCod" @@ -5724,8 +5827,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, break; case Brw_ADMI_ASSIG_USR: case Brw_ADMI_WORKS_USR: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM centres,degrees,courses,file_browser_size" " WHERE centres.InsCod='%ld'" " AND centres.CtrCod=degrees.CtrCod" @@ -5735,8 +5843,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, Gbl.CurrentIns.Ins.InsCod,(unsigned) FileBrowser); break; case Brw_ADMI_BRIEF_USR: - sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT '-1'," + "'-1'," + "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM centres,degrees,courses,crs_usr,file_browser_size" " WHERE centres.InsCod='%ld'" " AND centres.CtrCod=degrees.CtrCod" @@ -5756,44 +5869,65 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," - "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + "COUNT(DISTINCT GrpCod)-1," + "'-1'," + "MAX(NumLevels)," + "SUM(NumFolders)," + "SUM(NumFiles)," + "SUM(TotalSize)" " FROM " "(" - "SELECT file_browser_size.Cod AS CrsCod,'-1' AS GrpCod," // Course zones - "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + "SELECT file_browser_size.Cod AS CrsCod," + "'-1' AS GrpCod," // Course zones + "file_browser_size.NumLevels," + "file_browser_size.NumFolders," + "file_browser_size.NumFiles," + "file_browser_size.TotalSize" " FROM degrees,courses,file_browser_size" " WHERE degrees.CtrCod='%ld'" " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u')" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u','%u')" " UNION " - "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," // Group zones - "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + "SELECT crs_grp_types.CrsCod," + "file_browser_size.Cod AS GrpCod," // Group zones + "file_browser_size.NumLevels," + "file_browser_size.NumFolders," + "file_browser_size.NumFiles," + "file_browser_size.TotalSize" " FROM degrees,courses,crs_grp_types,crs_grp,file_browser_size" " WHERE degrees.CtrCod='%ld'" " AND degrees.DegCod=courses.DegCod" " AND courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u')" ") AS sizes", Gbl.CurrentCtr.Ctr.CtrCod, (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_WORKS_USR, (unsigned) Brw_ADMI_MARKS_CRS, Gbl.CurrentCtr.Ctr.CtrCod, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP); break; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_MARKS_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1','-1'," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "'-1'," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM degrees,courses,file_browser_size" " WHERE degrees.CtrCod='%ld'" " AND degrees.DegCod=courses.DegCod" @@ -5802,10 +5936,16 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + "COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM degrees,courses,crs_grp_types,crs_grp,file_browser_size" " WHERE degrees.CtrCod='%ld'" " AND degrees.DegCod=courses.DegCod" @@ -5817,8 +5957,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, break; case Brw_ADMI_ASSIG_USR: case Brw_ADMI_WORKS_USR: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM degrees,courses,file_browser_size" " WHERE degrees.CtrCod='%ld'" " AND degrees.DegCod=courses.DegCod" @@ -5827,8 +5972,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, Gbl.CurrentCtr.Ctr.CtrCod,(unsigned) FileBrowser); break; case Brw_ADMI_BRIEF_USR: - sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT '-1'," + "'-1'," + "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM degrees,courses,crs_usr,file_browser_size" " WHERE degrees.CtrCod='%ld'" " AND degrees.DegCod=courses.DegCod" @@ -5847,42 +5997,63 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," - "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + "COUNT(DISTINCT GrpCod)-1," + "'-1'," + "MAX(NumLevels)," + "SUM(NumFolders)," + "SUM(NumFiles)," + "SUM(TotalSize)" " FROM " "(" - "SELECT file_browser_size.Cod AS CrsCod,'-1' AS GrpCod," // Course zones - "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + "SELECT file_browser_size.Cod AS CrsCod," + "'-1' AS GrpCod," // Course zones + "file_browser_size.NumLevels," + "file_browser_size.NumFolders," + "file_browser_size.NumFiles," + "file_browser_size.TotalSize" " FROM courses,file_browser_size" " WHERE courses.DegCod='%ld'" " AND courses.CrsCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u')" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u','%u','%u')" " UNION " - "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," // Group zones - "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + "SELECT crs_grp_types.CrsCod," + "file_browser_size.Cod AS GrpCod," // Group zones + "file_browser_size.NumLevels," + "file_browser_size.NumFolders," + "file_browser_size.NumFiles," + "file_browser_size.TotalSize" " FROM courses,crs_grp_types,crs_grp,file_browser_size" " WHERE courses.DegCod='%ld'" " AND courses.CrsCod=crs_grp_types.CrsCod" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u')" ") AS sizes", Gbl.CurrentDeg.Deg.DegCod, (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_WORKS_USR, (unsigned) Brw_ADMI_MARKS_CRS, Gbl.CurrentDeg.Deg.DegCod, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP); break; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_MARKS_CRS: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1','-1'," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "'-1'," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM courses,file_browser_size" " WHERE courses.DegCod='%ld'" " AND courses.CrsCod=file_browser_size.Cod" @@ -5890,10 +6061,16 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + "COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM courses,crs_grp_types,crs_grp,file_browser_size" " WHERE courses.DegCod='%ld'" " AND courses.CrsCod=crs_grp_types.CrsCod" @@ -5904,8 +6081,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, break; case Brw_ADMI_ASSIG_USR: case Brw_ADMI_WORKS_USR: - sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod),'-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM courses,file_browser_size" " WHERE courses.DegCod='%ld'" " AND courses.CrsCod=file_browser_size.Cod" @@ -5913,8 +6095,13 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, Gbl.CurrentDeg.Deg.DegCod,(unsigned) FileBrowser); break; case Brw_ADMI_BRIEF_USR: - sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT '-1'," + "'-1'," + "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM courses,crs_usr,file_browser_size" " WHERE courses.DegCod='%ld'" " AND courses.CrsCod=crs_usr.CrsCod" @@ -5932,49 +6119,76 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, switch (FileBrowser) { case Brw_UNKNOWN: - sprintf (Query,"SELECT COUNT(DISTINCT CrsCod),COUNT(DISTINCT GrpCod)-1,'-1'," - "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT CrsCod)," + "COUNT(DISTINCT GrpCod)-1," + "'-1'," + "MAX(NumLevels)," + "SUM(NumFolders)," + "SUM(NumFiles)," + "SUM(TotalSize)" " FROM " "(" - "SELECT Cod AS CrsCod,'-1' AS GrpCod," // Course zones - "NumLevels,NumFolders,NumFiles,TotalSize" + "SELECT Cod AS CrsCod," + "'-1' AS GrpCod," // Course zones + "NumLevels," + "NumFolders," + "NumFiles," + "TotalSize" " FROM file_browser_size" " WHERE Cod='%ld'" - " AND FileBrowser IN ('%u','%u','%u','%u','%u')" + " AND FileBrowser IN ('%u','%u','%u','%u','%u','%u')" " UNION " - "SELECT crs_grp_types.CrsCod,file_browser_size.Cod AS GrpCod," // Group zones - "file_browser_size.NumLevels,file_browser_size.NumFolders,file_browser_size.NumFiles,file_browser_size.TotalSize" + "SELECT crs_grp_types.CrsCod," + "file_browser_size.Cod AS GrpCod," // Group zones + "file_browser_size.NumLevels," + "file_browser_size.NumFolders," + "file_browser_size.NumFiles," + "file_browser_size.TotalSize" " FROM crs_grp_types,crs_grp,file_browser_size" " WHERE crs_grp_types.CrsCod='%ld'" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" " AND crs_grp.GrpCod=file_browser_size.Cod" - " AND file_browser_size.FileBrowser IN ('%u','%u','%u')" + " AND file_browser_size.FileBrowser IN ('%u','%u','%u','%u')" ") AS sizes", Gbl.CurrentCrs.Crs.CrsCod, (unsigned) Brw_ADMI_DOCUM_CRS, + (unsigned) Brw_ADMI_TEACH_CRS, (unsigned) Brw_ADMI_SHARE_CRS, (unsigned) Brw_ADMI_ASSIG_USR, (unsigned) Brw_ADMI_WORKS_USR, (unsigned) Brw_ADMI_MARKS_CRS, Gbl.CurrentCrs.Crs.CrsCod, (unsigned) Brw_ADMI_DOCUM_GRP, + (unsigned) Brw_ADMI_TEACH_GRP, (unsigned) Brw_ADMI_SHARE_GRP, (unsigned) Brw_ADMI_MARKS_GRP); break; case Brw_ADMI_DOCUM_CRS: + case Brw_ADMI_TEACH_CRS: case Brw_ADMI_SHARE_CRS: case Brw_ADMI_MARKS_CRS: - sprintf (Query,"SELECT '1','-1','-1'," - "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + sprintf (Query,"SELECT '1'," + "'-1'," + "'-1'," + "MAX(NumLevels)," + "SUM(NumFolders)," + "SUM(NumFiles)," + "SUM(TotalSize)" " FROM file_browser_size" " WHERE Cod='%ld' AND FileBrowser='%u'", Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); break; case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_ADMI_MARKS_GRP: - sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod),COUNT(DISTINCT file_browser_size.Cod),'-1'," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT COUNT(DISTINCT crs_grp_types.CrsCod)," + "COUNT(DISTINCT file_browser_size.Cod)," + "'-1'," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM crs_grp_types,crs_grp,file_browser_size" " WHERE crs_grp_types.CrsCod='%ld'" " AND crs_grp_types.GrpTypCod=crs_grp.GrpTypCod" @@ -5984,15 +6198,25 @@ static void Sta_GetSizeOfFileZoneFromDB (Sco_Scope_t Scope, break; case Brw_ADMI_ASSIG_USR: case Brw_ADMI_WORKS_USR: - sprintf (Query,"SELECT '1','-1',COUNT(DISTINCT ZoneUsrCod)," - "MAX(NumLevels),SUM(NumFolders),SUM(NumFiles),SUM(TotalSize)" + sprintf (Query,"SELECT '1'," + "'-1'," + "COUNT(DISTINCT ZoneUsrCod)," + "MAX(NumLevels)," + "SUM(NumFolders)," + "SUM(NumFiles)," + "SUM(TotalSize)" " FROM file_browser_size" " WHERE Cod='%ld' AND FileBrowser='%u'", Gbl.CurrentCrs.Crs.CrsCod,(unsigned) FileBrowser); break; case Brw_ADMI_BRIEF_USR: - sprintf (Query,"SELECT '-1','-1',COUNT(DISTINCT file_browser_size.ZoneUsrCod)," - "MAX(file_browser_size.NumLevels),SUM(file_browser_size.NumFolders),SUM(file_browser_size.NumFiles),SUM(file_browser_size.TotalSize)" + sprintf (Query,"SELECT '-1'," + "'-1'," + "COUNT(DISTINCT file_browser_size.ZoneUsrCod)," + "MAX(file_browser_size.NumLevels)," + "SUM(file_browser_size.NumFolders)," + "SUM(file_browser_size.NumFiles)," + "SUM(file_browser_size.TotalSize)" " FROM crs_usr,file_browser_size" " WHERE crs_usr.CrsCod='%ld'" " AND crs_usr.UsrCod=file_browser_size.ZoneUsrCod" diff --git a/swad_statistic.h b/swad_statistic.h index f9c4dc5f..2f689139 100644 --- a/swad_statistic.h +++ b/swad_statistic.h @@ -133,7 +133,7 @@ typedef enum Sta_WHITE_TO_BLACK, } Sta_ColorType_t; -#define Sta_NUM_STAT_CRS_FILE_ZONES 9 +#define Sta_NUM_STAT_CRS_FILE_ZONES 11 /*****************************************************************************/ /***************************** Public prototypes *****************************/ diff --git a/swad_text.c b/swad_text.c index 1fe1c704..e11c4462 100644 --- a/swad_text.c +++ b/swad_text.c @@ -572,6 +572,19 @@ const char *Txt_NOTIFY_EVENTS_SINGULAR_NO_HTML[Ntf_NUM_NOTIFY_EVENTS][1+Txt_NUM_ "Novo arquivo de documento", }, { + // Ntf_EVENT_TEACHERS_FILE + "", + "Nou arxiu de professors", + "Neue Lehrer Datei", + "New teachers' file", + "Nuevo archivo de profesores", + "Nouveau fichier d'enseignants", + "Nuevo archivo de profesores", // Okoteve traducción + "Nuovo file di professori", + "Nowy Nauczyciela plik", + "Novo arquivo dos professores", + }, + { // Ntf_EVENT_SHARED_FILE "", "Nou arxiu compartit", @@ -17869,6 +17882,27 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Dokumentów" #elif L==9 "Documentos" +#endif + , + // ActAdmTchCrsGrp +#if L==1 + "Privats" +#elif L==2 + "Private" +#elif L==3 + "Private" +#elif L==4 + "Privados" +#elif L==5 + "Privés" +#elif L==6 + "Privados" // Okoteve traducción +#elif L==7 + "Privati" +#elif L==8 + "Prywatne" +#elif L==9 + "Privados" #endif , // ActAdmShaCrsGrp @@ -17984,7 +18018,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = NULL, NULL, NULL, - NULL, }, { // TabAss ***************************************************** @@ -19822,6 +19855,27 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Obszar Dokumentów" #elif L==9 "Documentos" +#endif + , + // ActAdmTchCrsGrp +#if L==1 + "Arxius privats, només per als professors de l'assignatura" +#elif L==2 + "Privat-Dateien, nur für die Lehrer des Kurses" +#elif L==3 + "Private files, only for teachers of the course" +#elif L==4 + "Archivos privados, solo para los profesores de la asignatura" +#elif L==5 + "Fichiers privés, seulement pour les enseignants du cours" +#elif L==6 + "Archivos privados, solo para los profesores de la asignatura"// Okoteve traducción +#elif L==7 + "File privati, solo per gli insegnanti del corso" +#elif L==8 + "Pliki prywatne, tylko dla nauczycieli przedmiotu" +#elif L==9 + "Arquivos privados, apenas para os professores do curso" #endif , // ActAdmShaCrsGrp @@ -19941,7 +19995,6 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = NULL, NULL, NULL, - NULL, }, { // TabAss ***************************************************** @@ -25515,6 +25568,26 @@ const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS] = "Novos arquivos de documento" #endif , +#if L==1 // Ntf_EVENT_TEACHERS_FILE + "Nous arxiu de professors" +#elif L==2 + "New Lehrer Dateien" +#elif L==3 + "New teachers' files" +#elif L==4 + "Nuevos archivos de profesores" +#elif L==5 + "Nouveaux fichiers d'enseignants" +#elif L==6 + "Nuevos archivos de profesores" // Okoteve traducción +#elif L==7 + "Nuovi file di professori" +#elif L==8 + "Nowy Nauczyciela plik" +#elif L==9 + "Novos arquivos dos professores" +#endif + , #if L==1 // Ntf_EVENT_SHARED_FILE "Nous arxiu compartit" #elif L==2 @@ -25898,6 +25971,26 @@ const char *Txt_NOTIFY_EVENTS_SINGULAR[Ntf_NUM_NOTIFY_EVENTS] = "Arquivo de documento" #endif , +#if L==1 // Ntf_EVENT_TEACHERS_FILE + "Arxiu de professors" +#elif L==2 + "Lehrer Datei" +#elif L==3 + "Teachers' file" +#elif L==4 + "Archivo de profesores" +#elif L==5 + "Fichier d'enseignants" +#elif L==6 + "Archivo de profesores" // Okoteve traducción +#elif L==7 + "File di professori" +#elif L==8 + "Nauczyciela plik" +#elif L==9 + "Arquivo dos professores" +#endif + , #if L==1 // Ntf_EVENT_SHARED_FILE "Arxiu compartit" #elif L==2 @@ -34509,6 +34602,48 @@ const char *Txt_ROOT_FOLDER_EXTERNAL_NAMES[Brw_NUM_TYPES_FILE_BROWSER] = "shared" // Potrzebujesz tlumaczenie #elif L==9 "comum" +#endif + , + // Brw_ADMI_TEACH_CRS +#if L==1 + "privats" +#elif L==2 + "Private" +#elif L==3 + "private" +#elif L==4 + "privados" +#elif L==5 + "privés" +#elif L==6 + "privados" // Okoteve traducción +#elif L==7 + "privati" +#elif L==8 + "prywatne" +#elif L==9 + "privados" +#endif + , + // Brw_ADMI_TEACH_GRP +#if L==1 + "privats" +#elif L==2 + "Private" +#elif L==3 + "private" +#elif L==4 + "privados" +#elif L==5 + "privés" +#elif L==6 + "privados" // Okoteve traducción +#elif L==7 + "privati" +#elif L==8 + "prywatne" +#elif L==9 + "privados" #endif }; @@ -37584,6 +37719,46 @@ const char *Txt_STAT_COURSE_FILE_ZONES[Sta_NUM_STAT_CRS_FILE_ZONES] = // Use &nb "Documentos (grp.)" #endif , +#if L==1 // Brw_ADMI_TEACH_CRS + "Professors (ass.)" +#elif L==2 + "Lehrkräfte (Ver.)" +#elif L==3 + "Teachers (crs.)" +#elif L==4 + "Profesores (asg.)" +#elif L==5 + "Enseignants (mat.)" +#elif L==6 + "Profesores (asg.)" // Okoteve traducción +#elif L==7 + "Professori (crs.)" +#elif L==8 + "Nauczycieli (kurs)" +#elif L==9 + "Professores (crs.)" +#endif + , +#if L==1 // Brw_ADMI_TEACH_GRP + "Professors (grp.)" +#elif L==2 + "Lehrkräfte (Grp.)" +#elif L==3 + "Teachers (grp.)" +#elif L==4 + "Profesores (grp.)" +#elif L==5 + "Enseignants (grp.)" +#elif L==6 + "Profesores (grp.)" // Okoteve traducción +#elif L==7 + "Professori (grp.)" +#elif L==8 + "Nauczycieli (grp.)" +#elif L==9 + "Professores (grp.)" +#endif + , #if L==1 // Brw_ADMI_SHARE_CRS "Compartits (asg.)" #elif L==2 @@ -40367,6 +40542,48 @@ const char *Txt_teachers_ABBREVIATION = // Abbreviation of "Teachers" "prof."; #endif +const char *Txt_Teachers_files_area = +#if L==1 + "Zona d'arxius de professors"; +#elif L==2 + "Lehrer Dateien-Bereich"; +#elif L==3 + "Teachers' files area"; +#elif L==4 + "Zona de archivos de profesores"; +#elif L==5 + "Zone de fichiers d'enseignants"; +#elif L==6 + "Zona de archivos de profesores"; // Okoteve traducción +#elif L==7 + "Zona di file di professori"; +#elif L==8 + "Nauczyciela udostępnionych plików"; +#elif L==9 + "Zona de arquivos dos professores"; +#endif + +const char *Txt_teachers_files_area = +#if L==1 + "zona d'arxius de professors"; +#elif L==2 + "Lehrer Dateien-Bereich"; +#elif L==3 + "teachers' files area"; +#elif L==4 + "zona de archivos de profesores"; +#elif L==5 + "zone de fichiers d'enseignants"; +#elif L==6 + "zona de archivos de profesores"; // Okoteve traducción +#elif L==7 + "zona di file di professori"; +#elif L==8 + "nauczyciela udostępnionych plików"; +#elif L==9 + "zona de arquivos dos professores"; +#endif + const char *Txt_Temporary_private_storage_area = #if L==1 "Zona d'emmagatzematge privada"; diff --git a/swad_web_service.c b/swad_web_service.c index 610bdabb..0144cf17 100644 --- a/swad_web_service.c +++ b/swad_web_service.c @@ -3946,7 +3946,6 @@ int swad__getDirectoryTree (struct soap *soap, "Tree code must be 1 (documents), 2 (shared files) or 3 (marks)"); /***** Return directory tree *****/ - /* Get directory tree into XML file */ if (courseCode > 0) { @@ -4256,8 +4255,6 @@ int swad__getFile (struct soap *soap, /***** Check if file is in a valid zone *****/ switch ((Gbl.FileBrowser.Type = FileMetadata.FileBrowser)) { - // case Brw_SHOW_DOCUM_CRS: // This type of file browser is not in database - // case Brw_SHOW_DOCUM_GRP: // This type of file browser is not in database case Brw_ADMI_DOCUM_CRS: case Brw_ADMI_DOCUM_GRP: case Brw_ADMI_SHARE_CRS: diff --git a/swad_zip.c b/swad_zip.c index 47acaa2d..38eb5169 100644 --- a/swad_zip.c +++ b/swad_zip.c @@ -80,6 +80,8 @@ const Act_Action_t ZIP_ActZIPFolder[Brw_NUM_TYPES_FILE_BROWSER] = ActZIPShaDeg, // Brw_ADMI_SHARE_DEG ActZIPShaCtr, // Brw_ADMI_SHARE_CTR ActZIPShaIns, // Brw_ADMI_SHARE_INS + ActZIPTchCrs, // Brw_ADMI_TEACH_CRS + ActZIPTchGrp, // Brw_ADMI_TEACH_GRP }; /*****************************************************************************/ @@ -316,6 +318,7 @@ void ZIP_PutButtonToDownloadZIPOfAFolder (const char *PathInTree,const char *Fil { case Brw_SHOW_DOCUM_GRP: case Brw_ADMI_DOCUM_GRP: + case Brw_ADMI_TEACH_GRP: case Brw_ADMI_SHARE_GRP: case Brw_SHOW_MARKS_GRP: case Brw_ADMI_MARKS_GRP: