Compare commits

...

4 Commits

8 changed files with 116 additions and 75 deletions

View File

@ -5044,12 +5044,6 @@ button.PAG_DARK:hover, .PAG_CUR_DARK {background-color:#707070;}
height:10px;
}
/********************************** Statistics *******************************/
.STAT_SEL
{
width:300px;
}
/******************************** User's report ******************************/
.TITLE_REPORT
{

View File

@ -1801,7 +1801,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
[ActRemSvyQst ] = { 981,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RemoveQst ,NULL},
[ActSeeAccGbl ] = { 79,-1,TabUnk,ActReqAccGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Sta_SeeGblAccesses ,NULL},
[ActReqAccCrs ] = { 594,-1,TabUnk,ActReqAccGbl ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDatesToRecentWeeks,Sta_AskShowCrsHits ,NULL},
[ActReqAccCrs ] = { 594,-1,TabUnk,ActReqAccGbl ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDatesToRecentWeeks,Sta_ReqCrsHits ,NULL},
[ActSeeAccCrs ] = { 119,-1,TabUnk,ActReqAccGbl ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Sta_SeeCrsAccesses ,NULL},
[ActLstClk ] = { 989,-1,TabUnk,ActReqAccGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Log_ShowLastClicks ,NULL},

View File

@ -633,10 +633,13 @@ Me sale este error, no s
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
*/
#define Log_PLATFORM_VERSION "SWAD 23.59 (2024-01-24)"
#define Log_PLATFORM_VERSION "SWAD 23.59.3 (2024-01-24)"
#define CSS_FILE "swad23.58.1.css"
#define JS_FILE "swad23.53.6.js"
/*
Version 23.59.3: Jan 24, 2024 Responsive design in course hits. (335698 lines)
Version 23.59.2: Jan 24, 2024 Responsive design in global hits. (335672 lines)
Version 23.59.1: Jan 24, 2024 Responsive design in surveys. (335668 lines)
Version 23.59: Jan 24, 2024 Responsive design in assignments. (335664 lines)
Version 23.58.1: Jan 20, 2024 Changes in layout. (335670 lines)
Version 23.58: Jan 20, 2024 Responsive design and layout changes in exam sets. (335673 lines)

View File

@ -52,7 +52,8 @@ void Sco_PutSelectorScope (const char *ParName,HTM_SubmitOnChange_t SubmitOnChan
bool WriteScope;
HTM_SELECT_Begin (SubmitOnChange,NULL,
"id=\"%s\" name=\"%s\" class=\"REC_C2_BOT_INPUT INPUT_%s\"",
"id=\"%s\" name=\"%s\""
" class=\"REC_C2_BOT_INPUT INPUT_%s\"",
ParName,ParName,The_GetSuffix ());
for (Level = (Hie_Level_t) 1;

View File

@ -192,10 +192,10 @@ void Sta_ResetStats (struct Sta_Stats *Stats)
}
/*****************************************************************************/
/******************** Show a form to make a query of clicks ******************/
/**************** Show a form to make a query of course hits *****************/
/*****************************************************************************/
void Sta_AskShowCrsHits (void)
void Sta_ReqCrsHits (void)
{
struct Sta_Stats Stats;
@ -212,6 +212,7 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
extern const char *Txt_Statistics_of_visits_to_the_course_X;
extern const char *Txt_Users;
extern const char *Txt_Show;
extern const char *Txt_Graph;
extern const char *Txt_distributed_by;
extern const char *Txt_STAT_CLICKS_GROUPED_BY[Sta_NUM_CLICKS_GROUPED_BY];
extern const char *Txt_results_per_page;
@ -296,12 +297,16 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
Par_PutParLong (NULL,"FirstRow",0);
Par_PutParLong (NULL,"LastRow",0);
/***** Put list of users to select some of them *****/
HTM_TABLE_BeginCenterPadding (2);
/***** List of users to select some of them *****/
HTM_TR_Begin (NULL);
HTM_TD_TxtColon (Txt_Users);
HTM_TD_Begin ("class=\"LT FORM_IN_%s\"",
/* Label */
Frm_LabelColumn ("REC_C1_BOT RT","",Txt_Users);
/* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LT FORM_IN_%s\"",
The_GetSuffix ());
HTM_TABLE_Begin (NULL);
Usr_ListUsersToSelect (Rol_TCH,&Gbl.Usrs.Selected);
@ -327,26 +332,33 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
/***** Selection of action *****/
Sta_WriteSelectorAction (Stats);
/***** Option a) Listing of clicks distributed by some metric *****/
/***** Listing of clicks (graphic or detailed) *****/
HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"RM FORM_IN_%s\"",
The_GetSuffix ());
HTM_TxtColon (Txt_Show);
HTM_TD_End ();
/* Label */
Frm_LabelColumn ("REC_C1_BOT RT","",Txt_Show);
HTM_TD_Begin ("class=\"LM\"");
/* Data */
HTM_TD_Begin ("class=\"REC_C2_BOT LM\"");
if ((Stats->ClicksGroupedBy < Sta_CLICKS_CRS_PER_USR ||
Stats->ClicksGroupedBy > Sta_CLICKS_CRS_PER_ACTION) &&
Stats->ClicksGroupedBy != Sta_CLICKS_CRS_DETAILED_LIST)
Stats->ClicksGroupedBy = Sta_CLICKS_GROUPED_BY_DEFAULT;
HTM_INPUT_RADIO ("GroupedOrDetailed",HTM_DONT_SUBMIT_ON_CLICK,
"value=\"%u\"%s onclick=\"disableDetailedClicks();\"",
(unsigned) Sta_CLICKS_GROUPED,
Stats->ClicksGroupedBy == Sta_CLICKS_CRS_DETAILED_LIST ? "" :
" checked=\"checked\"");
/***** Option a) Graphic of clicks in this course *****/
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",
The_GetSuffix ());
HTM_INPUT_RADIO ("GroupedOrDetailed",HTM_DONT_SUBMIT_ON_CLICK,
"value=\"%u\"%s onclick=\"disableDetailedClicks();\"",
(unsigned) Sta_CLICKS_GROUPED,
Stats->ClicksGroupedBy == Sta_CLICKS_CRS_DETAILED_LIST ? "" :
" checked=\"checked\"");
HTM_Txt (Txt_Graph);
HTM_LABEL_End ();
/* Separator */
HTM_BR ();
/* Selection of count type (number of pages generated, accesses per user, etc.) */
Sta_WriteSelectorCountType (Stats);
@ -377,7 +389,7 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
/***** Option b) Listing of detailed clicks to this course *****/
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",
The_GetSuffix ());
The_GetSuffix ());
HTM_INPUT_RADIO ("GroupedOrDetailed",HTM_DONT_SUBMIT_ON_CLICK,
"value=\"%u\"%s onclick=\"enableDetailedClicks();\"",
(unsigned) Sta_CLICKS_DETAILED,
@ -387,7 +399,7 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
HTM_LABEL_End ();
/* Separator */
HTM_SP ();
HTM_BR ();
/* Number of rows per page */
// To use getElementById in Firefox, it's necessary to have the id attribute
@ -501,13 +513,13 @@ static void Sta_PutFormGblHits (struct Sta_Stats *Stats)
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT","Role",Txt_Users);
Frm_LabelColumn ("REC_C1_BOT RT","Role",Txt_Users);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_TD_Begin ("class=\"REC_C2_BOT LT\"");
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
"id=\"Role\" name=\"Role\""
" class=\"STAT_SEL INPUT_%s\"",
" class=\"REC_C2_BOT_INPUT INPUT_%s\"",
The_GetSuffix ());
for (RoleStat = (Sta_Role_t) 0;
RoleStat <= (Sta_Role_t) (Sta_NUM_ROLES_STAT - 1);
@ -532,10 +544,10 @@ static void Sta_PutFormGblHits (struct Sta_Stats *Stats)
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT","ScopeSta",Txt_Scope);
Frm_LabelColumn ("REC_C1_BOT RT","ScopeSta",Txt_Scope);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_TD_Begin ("class=\"REC_C2_BOT LT\"");
Gbl.Scope.Allowed = 1 << Hie_SYS |
1 << Hie_CTY |
1 << Hie_INS |
@ -552,10 +564,10 @@ static void Sta_PutFormGblHits (struct Sta_Stats *Stats)
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT","CountType",Txt_Show);
Frm_LabelColumn ("REC_C1_BOT RT","CountType",Txt_Show);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_TD_Begin ("class=\"REC_C2_BOT LT\"");
Sta_WriteSelectorCountType (Stats);
/***** Type of statistic *****/
@ -568,7 +580,8 @@ static void Sta_PutFormGblHits (struct Sta_Stats *Stats)
Stats->ClicksGroupedBy = Sta_CLICKS_GBL_PER_DAY;
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
"name=\"GroupedBy\" class=\"INPUT_%s\"",
"name=\"GroupedBy\""
" class=\"REC_C2_BOT_INPUT INPUT_%s\"",
The_GetSuffix ());
for (ClicksGroupedBy = Sta_CLICKS_GBL_PER_DAY;
ClicksGroupedBy <= Sta_CLICKS_GBL_PER_COURSE;
@ -650,7 +663,8 @@ static void Sta_WriteSelectorCountType (const struct Sta_Stats *Stats)
/**** Count type *****/
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
"id=\"CountType\" name=\"CountType\" class=\"INPUT_%s\"",
"id=\"CountType\" name=\"CountType\""
" class=\"REC_C2_BOT_INPUT INPUT_%s\"",
The_GetSuffix ());
for (StatCountType = (Sta_CountType_t) 0;
StatCountType <= (Sta_CountType_t) (Sta_NUM_COUNT_TYPES - 1);
@ -683,12 +697,12 @@ static void Sta_WriteSelectorAction (const struct Sta_Stats *Stats)
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT","StatAct",Txt_Action);
Frm_LabelColumn ("REC_C1_BOT RT","StatAct",Txt_Action);
HTM_TD_Begin ("class=\"LT\"");
HTM_TD_Begin ("class=\"REC_C2_BOT LT\"");
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
"id=\"StatAct\" name=\"StatAct\""
" class=\"STAT_SEL INPUT_%s\"",
" class=\"REC_C2_BOT_INPUT INPUT_%s\"",
The_GetSuffix ());
HTM_OPTION (HTM_Type_STRING,"0",
Stats->NumAction == 0 ? HTM_OPTION_SELECTED :

View File

@ -152,7 +152,7 @@ struct Sta_Stats
void Sta_ResetStats (struct Sta_Stats *Stats);
void Sta_AskShowCrsHits (void);
void Sta_ReqCrsHits (void);
void Sta_AskShowGblHits (void);
void Sta_PutLinkToCourseHits (void);
void Sta_PutLinkToGlobalHits (void);

View File

@ -201,7 +201,7 @@ void Svy_ListAllSurveys (struct Svy_Surveys *Surveys)
Surveys->CurrentPage = (unsigned) Pagination.CurrentPage;
/***** Begin box *****/
Box_BoxBegin ("100%",Txt_Surveys,
Box_BoxBegin (NULL,Txt_Surveys,
Svy_PutIconsListSurveys,Surveys,
Hlp_ANALYTICS_Surveys,Box_NOT_CLOSABLE);
@ -221,7 +221,7 @@ void Svy_ListAllSurveys (struct Svy_Surveys *Surveys)
if (Surveys->Num)
{
/***** Table head *****/
HTM_TABLE_BeginWideMarginPadding (5);
HTM_TABLE_Begin ("TBL_SCROLL");
HTM_TR_Begin (NULL);
if (Surveys->Svy.Status.ICanEdit ||
@ -1645,10 +1645,10 @@ void Svy_ReqCreatOrEditSvy (void)
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT","ScopeSvy",Txt_Scope);
Frm_LabelColumn ("REC_C1_BOT RT","ScopeSvy",Txt_Scope);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_TD_Begin ("class=\"REC_C2_BOT LT\"");
Svy_SetAllowedScopes (&Surveys.Svy);
Sco_GetScope ("ScopeSvy",Surveys.Svy.Level);
Sco_PutSelectorScope ("ScopeSvy",HTM_DONT_SUBMIT_ON_CHANGE);
@ -1660,14 +1660,14 @@ void Svy_ReqCreatOrEditSvy (void)
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT","Title",Txt_Title);
Frm_LabelColumn ("REC_C1_BOT RT","Title",Txt_Title);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_TD_Begin ("class=\"REC_C2_BOT LT\"");
HTM_INPUT_TEXT ("Title",Svy_MAX_CHARS_SURVEY_TITLE,Surveys.Svy.Title,
HTM_DONT_SUBMIT_ON_CHANGE,
"id=\"Title\""
" class=\"TITLE_DESCRIPTION_WIDTH INPUT_%s\""
" class=\"REC_C2_BOT_INPUT INPUT_%s\""
" required=\"required\"",
The_GetSuffix ());
HTM_TD_End ();
@ -1683,12 +1683,12 @@ void Svy_ReqCreatOrEditSvy (void)
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT","Txt",Txt_Description);
Frm_LabelColumn ("REC_C1_BOT RT","Txt",Txt_Description);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_TD_Begin ("class=\"REC_C2_BOT LT\"");
HTM_TEXTAREA_Begin ("id=\"Txt\" name=\"Txt\" rows=\"5\""
" class=\"TITLE_DESCRIPTION_WIDTH INPUT_%s\"",
" class=\"REC_C2_BOT_INPUT INPUT_%s\"",
The_GetSuffix ());
if (!ItsANewSurvey)
HTM_Txt (Txt);
@ -1699,7 +1699,11 @@ void Svy_ReqCreatOrEditSvy (void)
/***** Users' roles who can answer the survey *****/
HTM_TR_Begin (NULL);
HTM_TD_TxtColon (Txt_Users);
/* Label */
Frm_LabelColumn ("REC_C1_BOT RT","",Txt_Users);
/* Data */
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
Rol_WriteSelectorRoles (1 << Rol_STD |
1 << Rol_NET |
@ -1722,6 +1726,8 @@ void Svy_ReqCreatOrEditSvy (void)
/***** End form *****/
Frm_EndForm ();
HTM_BR ();
/***** Show questions of the survey ready to be edited *****/
if (!ItsANewSurvey)
Svy_ListSvyQuestions (&Surveys);
@ -2630,7 +2636,7 @@ static void Svy_ListSvyQuestions (struct Svy_Surveys *Surveys)
}
/***** Write the heading *****/
HTM_TABLE_BeginWideMarginPadding (5);
HTM_TABLE_Begin ("TBL_SCROLL");
HTM_TR_Begin (NULL);
if (Surveys->Svy.Status.ICanEdit)

View File

@ -14995,6 +14995,29 @@ const char *Txt_Grade =
"Vas&inodot;f";
#endif
const char *Txt_Graph =
#if L==1 // ca
"Gr&agrave;fica";
#elif L==2 // de
"Graph";
#elif L==3 // en
"Graph";
#elif L==4 // es
"Gr&aacute;fica";
#elif L==5 // fr
"Graphique";
#elif L==6 // gn
"Gr&aacute;fica"; // Okoteve traducción
#elif L==7 // it
"Grafico";
#elif L==8 // pl
"Wykres";
#elif L==9 // pt
"Gr&aacute;fico";
#elif L==10 // tr
"Grafik";
#endif
const char *Txt_Group =
#if L==1 // ca
"Grup";
@ -34208,25 +34231,25 @@ const char *Txt_Required_reading =
const char *Txt_Reset_survey =
#if L==1 // ca
"Posar enquesta a zero";
"Posar a zero";
#elif L==2 // de
"Reset Umfrage";
"Reset";
#elif L==3 // en
"Reset survey";
"Reset";
#elif L==4 // es
"Poner encuesta a cero";
"Poner a cero";
#elif L==5 // fr
"Reset sondage";
"Reset";
#elif L==6 // gn
"Poner encuesta a cero"; // Okoteve traducción
"Poner a cero"; // Okoteve traducción
#elif L==7 // it
"Resettare sondaggio";
"Resettare";
#elif L==8 // pl
"Reset badania";
"Reset";
#elif L==9 // pt
"Reiniciar inqu&eacute;rito";
"Reiniciar";
#elif L==10 // tr
"Reset survey"; // Çeviri lazim!
"S&inodot;f&inodot;rla";
#endif
const char *Txt_Resource_clipboard =
@ -42764,25 +42787,25 @@ const char *Txt_STAT_CLICKS_GROUPED_BY[Sta_NUM_CLICKS_GROUPED_BY] =
{
[Sta_CLICKS_CRS_DETAILED_LIST] =
#if L==1 // ca
"clics detallats"
"Clics detallats"
#elif L==2 // de
"detaillierte Klicks"
"Detaillierte Klicks"
#elif L==3 // en
"detailed clicks"
"Detailed clicks"
#elif L==4 // es
"clics detallados"
"Clics detallados"
#elif L==5 // fr
"clics d&eacute;taill&eacute;es"
"Clics d&eacute;taill&eacute;es"
#elif L==6 // gn
"clics detallados" // Okoteve traducción
"Clics detallados" // Okoteve traducción
#elif L==7 // it
"dettagli di scatto"
"Dettagli di scatto"
#elif L==8 // pl
"szczeg&oacute;&lstrok;owe klikni&eogon;&cacute;"
"Szczeg&oacute;&lstrok;owe klikni&eogon;&cacute;"
#elif L==9 // pt
"detalhadamente cliques"
"Detalhadamente cliques"
#elif L==10 // tr
"detailed clicks" // Çeviri lazim!
"Detailed clicks" // Çeviri lazim!
#endif
,
[Sta_CLICKS_CRS_PER_USR] =
@ -44948,7 +44971,7 @@ const char *Txt_Statistic =
const char *Txt_Statistics_of_all_visits =
#if L==1 // ca
"Estad&iacute;stica de todos los accesos"; // Necessita traducció
"Estad&iacute;stica de tots els accessos";
#elif L==2 // de
"Statistik aller Besuche";
#elif L==3 // en
@ -44958,7 +44981,7 @@ const char *Txt_Statistics_of_all_visits =
#elif L==5 // fr
"Statistiques de toutes les visites";
#elif L==6 // gn
"Estad&iacute;stica de todos los accesos"; // Okoteve traducción
"Estad&iacute;stica opaite jeike rehegua";
#elif L==7 // it
"Statistiche di tutte gli accessi";
#elif L==8 // pl
@ -44966,7 +44989,7 @@ const char *Txt_Statistics_of_all_visits =
#elif L==9 // pt
"Estat&iacute;sticas de todas as visitas";
#elif L==10 // tr
"Statistics of all visits"; // Çeviri lazim!
"T&uuml;m ziyaretlerin istatistikleri";
#endif
const char *Txt_Statistics_of_visits_to_the_course_X = // Warning: it is very important to include %s in the following sentences