Version 21.117.1: Sep 12, 2022 Copy link to file into resource clipboard.

This commit is contained in:
acanas 2022-09-12 12:25:07 +02:00
parent dfed213480
commit 3986739834
7 changed files with 103 additions and 53 deletions

View File

@ -65,6 +65,7 @@
#include "swad_photo.h" #include "swad_photo.h"
#include "swad_profile.h" #include "swad_profile.h"
#include "swad_profile_database.h" #include "swad_profile_database.h"
#include "swad_program_database.h"
#include "swad_project.h" #include "swad_project.h"
#include "swad_project_database.h" #include "swad_project_database.h"
#include "swad_role.h" #include "swad_role.h"
@ -8325,7 +8326,7 @@ void Brw_GetLinkToFile (void)
if (Found) if (Found)
{ {
/***** Copy link to file into resource clipboard *****/ /***** Copy link to file into resource clipboard *****/
// Prg_DB_CopyToClipboard (&FileMetadata); Prg_DB_CopyToClipboard (PrgRsc_DOCUMENT,FileMetadata.FilCod);
/***** Write sucess message *****/ /***** Write sucess message *****/
Ale_ShowAlert (Ale_SUCCESS,Txt_Link_to_resource_X_copied_into_clipboard, Ale_ShowAlert (Ale_SUCCESS,Txt_Link_to_resource_X_copied_into_clipboard,

View File

@ -606,15 +606,16 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
TODO: Attach pdf files in multimedia. TODO: Attach pdf files in multimedia.
*/ */
#define Log_PLATFORM_VERSION "SWAD 21.117 (2022-09-12)" #define Log_PLATFORM_VERSION "SWAD 21.117.1 (2022-09-12)"
#define CSS_FILE "swad21.107.1.css" #define CSS_FILE "swad21.107.1.css"
#define JS_FILE "swad21.100.js" #define JS_FILE "swad21.100.js"
/* /*
Version 21.117.1: Sep 12, 2022 Copy link to file into resource clipboard. (329561 lines)
Version 21.117: Sep 12, 2022 New database table with clipboards for program resources. Version 21.117: Sep 12, 2022 New database table with clipboards for program resources.
New actions to get link to file in course document area. (329514 lines) New actions to get link to file in course document area. (329514 lines)
1 change necessary in database: 1 change necessary in database:
ALTER TABLE prg_resources ADD COLUMN Type ENUM('none','asg','cfe','exa','gam','svy','doc','mrk','att','for') NOT NULL DEFAULT 'none' AFTER Hidden; ALTER TABLE prg_resources ADD COLUMN Type ENUM('none','asg','cfe','exa','gam','svy','doc','mrk','att','for') NOT NULL DEFAULT 'none' AFTER Hidden;
CREATE TABLE IF NOT EXISTS prg_clipboards (UsrCod INT NOT NULL,CrsCod INT NOT NULL,Type ENUM('none','asg','cfe','exa','gam','svy','doc','mrk','att','for') NOT NULL DEFAULT 'none',Cod INT NOT NULL DEFAULT -1,CopyTime TIMESTAMP,INDEX(UsrCod,CrsCod,CopyTime),INDEX(CrsCod,Type,Cod),INDEX(CopyTime)); CREATE TABLE IF NOT EXISTS prg_clipboards (UsrCod INT NOT NULL,CrsCod INT NOT NULL,Type ENUM('none','asg','cfe','exa','gam','svy','doc','mrk','att','for') NOT NULL DEFAULT 'none',Cod INT NOT NULL DEFAULT -1,CopyTime TIMESTAMP,UNIQUE INDEX(UsrCod,CrsCod,Type,Cod),INDEX(CrsCod,Type,Cod),INDEX(CopyTime));
If you want to use MyISAM: If you want to use MyISAM:
ALTER TABLE prg_clipboards ENGINE=MyISAM; ALTER TABLE prg_clipboards ENGINE=MyISAM;

View File

@ -2456,10 +2456,10 @@ mysql> DESCRIBE prg_clipboards;
+----------+--------------------------------------------------------------------+------+-----+---------+-------+ +----------+--------------------------------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+----------+--------------------------------------------------------------------+------+-----+---------+-------+ +----------+--------------------------------------------------------------------+------+-----+---------+-------+
| UsrCod | int | NO | MUL | NULL | | | UsrCod | int | NO | PRI | NULL | |
| CrsCod | int | NO | MUL | NULL | | | CrsCod | int | NO | PRI | NULL | |
| Type | enum('none','asg','cfe','exa','gam','svy','doc','mrk','att','for') | NO | | none | | | Type | enum('none','asg','cfe','exa','gam','svy','doc','mrk','att','for') | NO | PRI | none | |
| Cod | int | NO | | -1 | | | Cod | int | NO | PRI | -1 | |
| CopyTime | timestamp | YES | MUL | NULL | | | CopyTime | timestamp | YES | MUL | NULL | |
+----------+--------------------------------------------------------------------+------+-----+---------+-------+ +----------+--------------------------------------------------------------------+------+-----+---------+-------+
5 rows in set (0,00 sec) 5 rows in set (0,00 sec)
@ -2480,7 +2480,7 @@ mysql> DESCRIBE prg_clipboards;
"'for') NOT NULL DEFAULT 'none'," "'for') NOT NULL DEFAULT 'none',"
"Cod INT NOT NULL DEFAULT -1," "Cod INT NOT NULL DEFAULT -1,"
"CopyTime TIMESTAMP," "CopyTime TIMESTAMP,"
"INDEX(UsrCod,CrsCod,CopyTime)," "UNIQUE INDEX(UsrCod,CrsCod,Type,Cod),"
"INDEX(CrsCod,Type,Cod)," "INDEX(CrsCod,Type,Cod),"
"INDEX(CopyTime))"); "INDEX(CopyTime))");

View File

@ -30,6 +30,32 @@
#include "swad_program.h" #include "swad_program.h"
#include "swad_program_resource.h" #include "swad_program_resource.h"
/*****************************************************************************/
/**************************** Private constants ******************************/
/*****************************************************************************/
const char *Prg_ResourceTypesDB[PrgRsc_NUM_TYPES] =
{
[PrgRsc_NONE ] = "non",
// gui TEACHING_GUIDE // Link to teaching guide
// bib BIBLIOGRAPHY // Link to bibliography
// faq FAQ // Link to FAQ
// lnk LINKS // Link to links
// tmt TIMETABLE // Link to timetable
[PrgRsc_ASSIGNMENT ] = "asg",
// prj PROJECT // A project is only for some students
[PrgRsc_CALL_FOR_EXAM ] = "cfe",
// tst TEST // User selects tags, teacher should select
[PrgRsc_EXAM ] = "exa",
[PrgRsc_GAME ] = "gam",
[PrgRsc_SURVEY ] = "svy",
[PrgRsc_DOCUMENT ] = "doc",
[PrgRsc_MARKS ] = "mrk",
// grp GROUPS // ??? User select groups
[PrgRsc_ATTENDANCE_EVENT] = "att",
[PrgRsc_FORUM_THREAD ] = "for",
};
/*****************************************************************************/ /*****************************************************************************/
/************** External global variables from others modules ****************/ /************** External global variables from others modules ****************/
/*****************************************************************************/ /*****************************************************************************/
@ -645,3 +671,45 @@ void Prg_DB_UpdateRscInd (long RscCod,int RscInd)
RscInd, RscInd,
RscCod); RscCod);
} }
/*****************************************************************************/
/**************** Get resources in the current course clipboard **************/
/*****************************************************************************/
/*
mysql> SELECT * FROM prg_clipboards;
+--------+--------+------+-----+---------------------+
| UsrCod | CrsCod | Type | Cod | CopyTime |
+--------+--------+------+-----+---------------------+
| 1 | 1 | doc | 33 | 2022-09-12 12:08:25 |
| 1 | 1 | doc | 28 | 2022-09-12 12:08:31 |
+--------+--------+------+-----+---------------------+
2 rows in set (0,00 sec)
*/
/*****************************************************************************/
/********************** Copy link to resource into clipboard *****************/
/*****************************************************************************/
/*
mysql> DESCRIBE prg_clipboards;
+----------+--------------------------------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------------------------------------------------------------+------+-----+---------+-------+
| UsrCod | int | NO | PRI | NULL | |
| CrsCod | int | NO | PRI | NULL | |
| Type | enum('none','asg','cfe','exa','gam','svy','doc','mrk','att','for') | NO | PRI | none | |
| Cod | int | NO | PRI | -1 | |
| CopyTime | timestamp | YES | MUL | NULL | |
+----------+--------------------------------------------------------------------+------+-----+---------+-------+
5 rows in set (0,00 sec)
*/
void Prg_DB_CopyToClipboard (PrgRsc_Type_t Type,long Cod)
{
DB_QueryREPLACE ("can not copy link to resource clipboard",
"REPLACE INTO prg_clipboards"
" (UsrCod,CrsCod,Type,Cod,CopyTime)"
" VALUES"
" (%ld,%ld,'%s',%ld,NOW())",
Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Hierarchy.Crs.CrsCod,
Prg_ResourceTypesDB[Type],
Cod);
}

View File

@ -77,4 +77,6 @@ void Prg_DB_HideOrUnhideResource (long RscCod,bool Hide);
void Prg_DB_LockTableResources (void); void Prg_DB_LockTableResources (void);
void Prg_DB_UpdateRscInd (long RscCod,int RscInd); void Prg_DB_UpdateRscInd (long RscCod,int RscInd);
void Prg_DB_CopyToClipboard (PrgRsc_Type_t Type,long Cod);
#endif #endif

View File

@ -49,51 +49,6 @@ typedef enum
PrgRsc_MOVE_DOWN, PrgRsc_MOVE_DOWN,
} PrgRsc_MoveUpDown_t; } PrgRsc_MoveUpDown_t;
#define PrgRsc_NUM_TYPES 10
typedef enum
{
PrgRsc_NONE,
// gui TEACHING_GUIDE // Link to teaching guide
// bib BIBLIOGRAPHY // Link to bibliography
// faq FAQ // Link to FAQ
// lnk LINKS // Link to links
// tmt TIMETABLE // Link to timetable
PrgRsc_ASSIGNMENT,
// prj PROJECT // A project is only for some students
PrgRsc_CALL_FOR_EXAM,
// tst TEST // User selects tags, teacher should select
PrgRsc_EXAM,
PrgRsc_GAME,
PrgRsc_SURVEY,
PrgRsc_DOCUMENT,
PrgRsc_MARKS,
// grp GROUPS // ??? User select groups
PrgRsc_ATTENDANCE_EVENT,
PrgRsc_FORUM_THREAD,
} PrgRsc_Type_t;
const char *PrgRsc_TypesDB[PrgRsc_NUM_TYPES] =
{
[PrgRsc_NONE ] = "non",
// gui TEACHING_GUIDE // Link to teaching guide
// bib BIBLIOGRAPHY // Link to bibliography
// faq FAQ // Link to FAQ
// lnk LINKS // Link to links
// tmt TIMETABLE // Link to timetable
[PrgRsc_ASSIGNMENT ] = "asg",
// prj PROJECT // A project is only for some students
[PrgRsc_CALL_FOR_EXAM ] = "cfe",
// tst TEST // User selects tags, teacher should select
[PrgRsc_EXAM ] = "exa",
[PrgRsc_GAME ] = "gam",
[PrgRsc_SURVEY ] = "svy",
[PrgRsc_DOCUMENT ] = "doc",
[PrgRsc_MARKS ] = "mrk",
// grp GROUPS // ??? User select groups
[PrgRsc_ATTENDANCE_EVENT] = "att",
[PrgRsc_FORUM_THREAD ] = "for",
};
/*****************************************************************************/ /*****************************************************************************/
/***************************** Private variables *****************************/ /***************************** Private variables *****************************/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -48,6 +48,29 @@ struct PrgRsc_Resource
char Title[PrgRsc_MAX_BYTES_PROGRAM_RESOURCE_TITLE + 1]; char Title[PrgRsc_MAX_BYTES_PROGRAM_RESOURCE_TITLE + 1];
}; };
#define PrgRsc_NUM_TYPES 10
typedef enum
{
PrgRsc_NONE,
// gui TEACHING_GUIDE // Link to teaching guide
// bib BIBLIOGRAPHY // Link to bibliography
// faq FAQ // Link to FAQ
// lnk LINKS // Link to links
// tmt TIMETABLE // Link to timetable
PrgRsc_ASSIGNMENT,
// prj PROJECT // A project is only for some students
PrgRsc_CALL_FOR_EXAM,
// tst TEST // User selects tags, teacher should select
PrgRsc_EXAM,
PrgRsc_GAME,
PrgRsc_SURVEY,
PrgRsc_DOCUMENT,
PrgRsc_MARKS,
// grp GROUPS // ??? User select groups
PrgRsc_ATTENDANCE_EVENT,
PrgRsc_FORUM_THREAD,
} PrgRsc_Type_t;
/*****************************************************************************/ /*****************************************************************************/
/***************************** Public prototypes *****************************/ /***************************** Public prototypes *****************************/
/*****************************************************************************/ /*****************************************************************************/