Version 16.164

This commit is contained in:
Antonio Cañas Vargas 2017-03-24 12:23:42 +01:00
parent 4cb29c68e7
commit 0f4e4325cd
9 changed files with 117 additions and 34 deletions

View File

@ -1517,7 +1517,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActSeeCty */{ 862, 1,TabSys,ActSeeCty , 0, 0, 0, 0, 0, 0,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,Cty_ListCountries1 ,Cty_ListCountries2 ,"earth64x64.gif" }, /* ActSeeCty */{ 862, 1,TabSys,ActSeeCty , 0, 0, 0, 0, 0, 0,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,Cty_ListCountries1 ,Cty_ListCountries2 ,"earth64x64.gif" },
/* ActSeePen */{1060, 2,TabSys,ActSeePen , 0, 0, 0, 0, 0, 0,0x1E0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Deg_SeePending ,"hierarchy64x64.png" }, /* ActSeePen */{1060, 2,TabSys,ActSeePen , 0, 0, 0, 0, 0, 0,0x1E0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Deg_SeePending ,"hierarchy64x64.png" },
/* ActReqRemOldCrs */{1109, 3,TabSys,ActReqRemOldCrs , 0, 0, 0, 0, 0, 0,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Crs_AskRemoveOldCrss ,"removeusers64x64.gif" }, /* ActReqRemOldCrs */{1109, 3,TabSys,ActReqRemOldCrs , 0, 0, 0, 0, 0, 0,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Crs_AskRemoveOldCrss ,"removeusers64x64.gif" },
/* ActSeeDegTyp */{1013, 4,TabSys,ActSeeDegTyp , 0, 0, 0, 0, 0, 0,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,DT_SeeDegreeTypes ,"grouptypes64x64.gif" }, /* ActSeeDegTyp */{1013, 4,TabSys,ActSeeDegTyp , 0, 0, 0, 0, 0, 0,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,DT_SeeDegreeTypesInSysTab ,"grouptypes64x64.gif" },
/* ActSeeMai */{ 855, 5,TabSys,ActSeeMai , 0, 0, 0, 0, 0, 0,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Mai_SeeMailDomains ,"email64x64.gif" }, /* ActSeeMai */{ 855, 5,TabSys,ActSeeMai , 0, 0, 0, 0, 0, 0,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Mai_SeeMailDomains ,"email64x64.gif" },
/* ActSeeBan */{1137, 6,TabSys,ActSeeBan , 0, 0, 0, 0, 0, 0,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Ban_SeeBanners ,"picture64x64.gif" }, /* ActSeeBan */{1137, 6,TabSys,ActSeeBan , 0, 0, 0, 0, 0, 0,0x100,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Ban_SeeBanners ,"picture64x64.gif" },
/* ActSeeLnk */{ 748, 7,TabSys,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Lnk_SeeLinks ,"link64x64.gif" }, /* ActSeeLnk */{ 748, 7,TabSys,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Lnk_SeeLinks ,"link64x64.gif" },

View File

@ -209,13 +209,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.163 (2017-03-24)" #define Log_PLATFORM_VERSION "SWAD 16.164 (2017-03-24)"
#define CSS_FILE "swad16.161.css" #define CSS_FILE "swad16.161.css"
#define JS_FILE "swad16.144.js" #define JS_FILE "swad16.144.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // 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 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/* /*
Version 16.164: Mar 24, 2017 New figure in statistics: types of degree. (217510 lines)
Version 16.163: Mar 24, 2017 Types of degree can be ordered by name and by number of degrees. Version 16.163: Mar 24, 2017 Types of degree can be ordered by name and by number of degrees.
Integer fields in database queries without single quotes. (217434 lines) Integer fields in database queries without single quotes. (217434 lines)
Version 16.162: Mar 23, 2017 Changes in layout of types of degree. (217330 lines) Version 16.162: Mar 23, 2017 Changes in layout of types of degree. (217330 lines)

View File

@ -62,16 +62,17 @@ extern struct Globals Gbl;
/**************************** Private prototypes *****************************/ /**************************** Private prototypes *****************************/
/*****************************************************************************/ /*****************************************************************************/
static void DT_GetParamDegTypOrder (void); static void DT_SeeDegreeTypes (Act_Action_t NextAction,DT_Order_t DefaultOrder);
static void DT_GetParamDegTypOrder (DT_Order_t DefaultOrder);
static void DT_ListDegreeTypes (void); static void DT_ListDegreeTypes (Act_Action_t NextAction);
static void DT_EditDegreeTypes (void); static void DT_EditDegreeTypes (void);
static void DT_ListDegreeTypesForSeeing (void); static void DT_ListDegreeTypesForSeeing (void);
static void DT_PutIconToEditDegTypes (void); static void DT_PutIconToEditDegTypes (void);
static void DT_ListDegreeTypesForEdition (void); static void DT_ListDegreeTypesForEdition (void);
static void DT_PutFormToCreateDegreeType (void); static void DT_PutFormToCreateDegreeType (void);
static void DT_PutHeadDegreeTypesForSeeing (void); static void DT_PutHeadDegreeTypesForSeeing (Act_Action_t NextAction);
static void DT_PutHeadDegreeTypesForEdition (void); static void DT_PutHeadDegreeTypesForEdition (void);
static void DT_CreateDegreeType (struct DegreeType *DegTyp); static void DT_CreateDegreeType (struct DegreeType *DegTyp);
@ -124,16 +125,28 @@ void DT_WriteSelectorDegreeTypes (void)
/***************************** Show degree types *****************************/ /***************************** Show degree types *****************************/
/*****************************************************************************/ /*****************************************************************************/
void DT_SeeDegreeTypes (void) void DT_SeeDegreeTypesInSysTab (void)
{
DT_SeeDegreeTypes (ActSeeDegTyp,
DT_ORDER_BY_DEGREE_TYPE); // Default order if not specified
}
void DT_SeeDegreeTypesInStaTab (void)
{
DT_SeeDegreeTypes (ActSeeUseGbl,
DT_ORDER_BY_NUM_DEGREES); // Default order if not specified
}
static void DT_SeeDegreeTypes (Act_Action_t NextAction,DT_Order_t DefaultOrder)
{ {
/***** Get parameter with the type of order in the list of degree types *****/ /***** Get parameter with the type of order in the list of degree types *****/
DT_GetParamDegTypOrder (); DT_GetParamDegTypOrder (DefaultOrder);
/***** Get list of degree types *****/ /***** Get list of degree types *****/
DT_GetListDegreeTypes (); DT_GetListDegreeTypes ();
/***** List degree types *****/ /***** List degree types *****/
DT_ListDegreeTypes (); DT_ListDegreeTypes (NextAction);
/***** Free list of degree types *****/ /***** Free list of degree types *****/
DT_FreeListDegreeTypes (); DT_FreeListDegreeTypes ();
@ -143,13 +156,13 @@ void DT_SeeDegreeTypes (void)
/******* Get parameter with the type or order in list of degree types ********/ /******* Get parameter with the type or order in list of degree types ********/
/*****************************************************************************/ /*****************************************************************************/
static void DT_GetParamDegTypOrder (void) static void DT_GetParamDegTypOrder (DT_Order_t DefaultOrder)
{ {
Gbl.Degs.DegTypes.SelectedOrder = (DT_Order_t) Gbl.Degs.DegTypes.SelectedOrder = (DT_Order_t)
Par_GetParToUnsignedLong ("Order", Par_GetParToUnsignedLong ("Order",
0, 0,
DT_NUM_ORDERS - 1, DT_NUM_ORDERS - 1,
(unsigned long) DT_ORDER_DEFAULT); (unsigned long) DefaultOrder);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -159,6 +172,7 @@ static void DT_GetParamDegTypOrder (void)
void DT_ReqEditDegreeTypes (void) void DT_ReqEditDegreeTypes (void)
{ {
/***** Get list of degree types *****/ /***** Get list of degree types *****/
Gbl.Degs.DegTypes.SelectedOrder = DT_ORDER_BY_DEGREE_TYPE;
DT_GetListDegreeTypes (); DT_GetListDegreeTypes ();
/***** Put form to edit degree types *****/ /***** Put form to edit degree types *****/
@ -171,13 +185,34 @@ void DT_ReqEditDegreeTypes (void)
/*****************************************************************************/ /*****************************************************************************/
/***************************** List degree types *****************************/ /***************************** List degree types *****************************/
/*****************************************************************************/ /*****************************************************************************/
// This function can be called from:
// - system tab ==> NextAction = ActSeeDegTyp
// - statistic tab ==> NextAction = ActSeeUseGbl
static void DT_ListDegreeTypes (void) static void DT_ListDegreeTypes (Act_Action_t NextAction)
{ {
extern const char *Hlp_SYSTEM_Studies;
extern const char *Hlp_STATS_Figures_types_of_degree;
extern const char *Txt_Types_of_degree;
extern const char *Txt_There_are_no_types_of_degree; extern const char *Txt_There_are_no_types_of_degree;
if (Gbl.Degs.DegTypes.Num) if (Gbl.Degs.DegTypes.Num)
{
/***** Write heading *****/
Lay_StartRoundFrameTable (NULL,Txt_Types_of_degree,
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM ? DT_PutIconToEditDegTypes :
NULL,
(NextAction == ActSeeDegTyp) ? Hlp_SYSTEM_Studies :
Hlp_STATS_Figures_types_of_degree,
2);
DT_PutHeadDegreeTypesForSeeing (NextAction);
/***** List current degree types for seeing *****/
DT_ListDegreeTypesForSeeing (); DT_ListDegreeTypesForSeeing ();
/***** End table and frame *****/
Lay_EndRoundFrameTable ();
}
else else
Lay_ShowAlert (Lay_INFO,Txt_There_are_no_types_of_degree); Lay_ShowAlert (Lay_INFO,Txt_There_are_no_types_of_degree);
} }
@ -208,18 +243,9 @@ static void DT_EditDegreeTypes (void)
static void DT_ListDegreeTypesForSeeing (void) static void DT_ListDegreeTypesForSeeing (void)
{ {
extern const char *Hlp_SYSTEM_Studies;
extern const char *Txt_Types_of_degree;
unsigned NumDegTyp; unsigned NumDegTyp;
const char *BgColor; const char *BgColor;
/***** Write heading *****/
Lay_StartRoundFrameTable (NULL,Txt_Types_of_degree,
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM ? DT_PutIconToEditDegTypes :
NULL,
Hlp_SYSTEM_Studies,2);
DT_PutHeadDegreeTypesForSeeing ();
/***** List degree types with forms for edition *****/ /***** List degree types with forms for edition *****/
for (NumDegTyp = 0; for (NumDegTyp = 0;
NumDegTyp < Gbl.Degs.DegTypes.Num; NumDegTyp < Gbl.Degs.DegTypes.Num;
@ -251,10 +277,6 @@ static void DT_ListDegreeTypesForSeeing (void)
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
/***** End table *****/
fprintf (Gbl.F.Out,"</table>");
Lay_EndRoundFrame ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -381,7 +403,7 @@ static void DT_PutFormToCreateDegreeType (void)
/***************** Write header with fields of a degree type *****************/ /***************** Write header with fields of a degree type *****************/
/*****************************************************************************/ /*****************************************************************************/
static void DT_PutHeadDegreeTypesForSeeing (void) static void DT_PutHeadDegreeTypesForSeeing (Act_Action_t NextAction)
{ {
extern const char *Txt_DEGREE_TYPES_HELP_ORDER[DT_NUM_ORDERS]; extern const char *Txt_DEGREE_TYPES_HELP_ORDER[DT_NUM_ORDERS];
extern const char *Txt_DEGREE_TYPES_ORDER[DT_NUM_ORDERS]; extern const char *Txt_DEGREE_TYPES_ORDER[DT_NUM_ORDERS];
@ -397,17 +419,22 @@ static void DT_PutHeadDegreeTypesForSeeing (void)
Order == DT_ORDER_BY_DEGREE_TYPE ? "LEFT_MIDDLE" : Order == DT_ORDER_BY_DEGREE_TYPE ? "LEFT_MIDDLE" :
"RIGHT_MIDDLE"); "RIGHT_MIDDLE");
Act_FormStart (ActSeeDegTyp); /* Start form to change order */
Act_FormStart (NextAction);
if (NextAction == ActSeeUseGbl)
Sta_PutHiddenParamFigures ();
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order); Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
/* Link with the head of this column */
Act_LinkFormSubmit (Txt_DEGREE_TYPES_HELP_ORDER[Order],"TIT_TBL",NULL); Act_LinkFormSubmit (Txt_DEGREE_TYPES_HELP_ORDER[Order],"TIT_TBL",NULL);
if (Order == Gbl.Degs.DegTypes.SelectedOrder) if (Order == Gbl.Degs.DegTypes.SelectedOrder)
fprintf (Gbl.F.Out,"<u>"); fprintf (Gbl.F.Out,"<u>");
fprintf (Gbl.F.Out,"%s",Txt_DEGREE_TYPES_ORDER[Order]); fprintf (Gbl.F.Out,"%s",Txt_DEGREE_TYPES_ORDER[Order]);
if (Order == Gbl.Degs.DegTypes.SelectedOrder) if (Order == Gbl.Degs.DegTypes.SelectedOrder)
fprintf (Gbl.F.Out,"</u>"); fprintf (Gbl.F.Out,"</u>");
fprintf (Gbl.F.Out,"</a>"); fprintf (Gbl.F.Out,"</a>");
/* End form */
Act_FormEnd (); Act_FormEnd ();
fprintf (Gbl.F.Out,"</th>"); fprintf (Gbl.F.Out,"</th>");

View File

@ -51,14 +51,15 @@ typedef enum
DT_ORDER_BY_DEGREE_TYPE = 0, DT_ORDER_BY_DEGREE_TYPE = 0,
DT_ORDER_BY_NUM_DEGREES = 1, DT_ORDER_BY_NUM_DEGREES = 1,
} DT_Order_t; } DT_Order_t;
#define DT_ORDER_DEFAULT DT_ORDER_BY_DEGREE_TYPE
/*****************************************************************************/ /*****************************************************************************/
/***************************** Public prototypes *****************************/ /***************************** Public prototypes *****************************/
/*****************************************************************************/ /*****************************************************************************/
void DT_WriteSelectorDegreeTypes (void); void DT_WriteSelectorDegreeTypes (void);
void DT_SeeDegreeTypes (void);
void DT_SeeDegreeTypesInSysTab (void);
void DT_SeeDegreeTypesInStaTab (void);
void DT_ReqEditDegreeTypes (void); void DT_ReqEditDegreeTypes (void);
void DT_GetListDegreeTypes (void); void DT_GetListDegreeTypes (void);

View File

@ -294,7 +294,6 @@ void Gbl_InitializeGlobals (void)
Gbl.Degs.DegTypes.Num = 0; Gbl.Degs.DegTypes.Num = 0;
Gbl.Degs.DegTypes.Lst = NULL; Gbl.Degs.DegTypes.Lst = NULL;
Gbl.Degs.DegTypes.SelectedOrder = DT_ORDER_DEFAULT;
Gbl.Degs.EditingDegTyp.DegTypCod = -1L; Gbl.Degs.EditingDegTyp.DegTypCod = -1L;
Gbl.Degs.EditingDegTyp.DegTypName[0] = '\0'; Gbl.Degs.EditingDegTyp.DegTypName[0] = '\0';

View File

@ -2174,6 +2174,27 @@ const char *Hlp_STATS_Figures_institutions =
"STATS.Figures#institutions"; "STATS.Figures#institutions";
#endif #endif
const char *Hlp_STATS_Figures_types_of_degree =
#if L==1
"STATS.Figures#types-of-degree";
#elif L==2
"STATS.Figures#types-of-degree";
#elif L==3
"STATS.Figures#types-of-degree";
#elif L==4
"STATS.Figures#types-of-degree";
#elif L==5
"STATS.Figures#types-of-degree";
#elif L==6
"STATS.Figures#types-of-degree";
#elif L==7
"STATS.Figures#types-of-degree";
#elif L==8
"STATS.Figures#types-of-degree";
#elif L==9
"STATS.Figures#types-of-degree";
#endif
const char *Hlp_STATS_Figures_folders_and_files = const char *Hlp_STATS_Figures_folders_and_files =
#if L==1 #if L==1
"STATS.Figures#folders-and-files"; "STATS.Figures#folders-and-files";

View File

@ -199,6 +199,8 @@ static void Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void);
static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure); static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure);
static unsigned Sta_GetInsAndStat (struct Instit *Ins,MYSQL_RES *mysql_res); static unsigned Sta_GetInsAndStat (struct Instit *Ins,MYSQL_RES *mysql_res);
static void Sta_GetAndShowDegreeTypesStats (void);
static unsigned Sta_GetTotalNumberOfUsersInPlatform (void); static unsigned Sta_GetTotalNumberOfUsersInPlatform (void);
static void Sta_GetAndShowUsersStats (void); static void Sta_GetAndShowUsersStats (void);
@ -3986,6 +3988,7 @@ void Sta_ShowFigures (void)
Sta_GetAndShowUsersRanking, // Sta_USERS_RANKING Sta_GetAndShowUsersRanking, // Sta_USERS_RANKING
Sta_GetAndShowHierarchyStats, // Sta_HIERARCHY Sta_GetAndShowHierarchyStats, // Sta_HIERARCHY
Sta_GetAndShowInstitutionsStats, // Sta_INSTITS Sta_GetAndShowInstitutionsStats, // Sta_INSTITS
Sta_GetAndShowDegreeTypesStats, // Sta_DEGREE_TYPES
Sta_GetAndShowFileBrowsersStats, // Sta_FOLDERS_AND_FILES Sta_GetAndShowFileBrowsersStats, // Sta_FOLDERS_AND_FILES
Sta_GetAndShowOERsStats, // Sta_OER Sta_GetAndShowOERsStats, // Sta_OER
Sta_GetAndShowAssignmentsStats, // Sta_ASSIGNMENTS Sta_GetAndShowAssignmentsStats, // Sta_ASSIGNMENTS
@ -5209,7 +5212,7 @@ static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure)
} }
/*****************************************************************************/ /*****************************************************************************/
/************************* Get total number of users *************************/ /******************** Get institution data and statistic *********************/
/*****************************************************************************/ /*****************************************************************************/
static unsigned Sta_GetInsAndStat (struct Instit *Ins,MYSQL_RES *mysql_res) static unsigned Sta_GetInsAndStat (struct Instit *Ins,MYSQL_RES *mysql_res)
@ -5232,6 +5235,16 @@ static unsigned Sta_GetInsAndStat (struct Instit *Ins,MYSQL_RES *mysql_res)
return NumberThisRow; return NumberThisRow;
} }
/*****************************************************************************/
/****************** Get and show stats about institutions ********************/
/*****************************************************************************/
static void Sta_GetAndShowDegreeTypesStats (void)
{
/***** Show statistic about number of degrees in each type of degree *****/
DT_SeeDegreeTypesInStaTab ();
}
/*****************************************************************************/ /*****************************************************************************/
/****************** Get total number of users in platform ********************/ /****************** Get total number of users in platform ********************/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -103,13 +103,14 @@ typedef enum
} Sta_ClicksGroupedBy_t; } Sta_ClicksGroupedBy_t;
#define Sta_CLICKS_GROUPED_BY_DEFAULT Sta_CLICKS_CRS_PER_USR #define Sta_CLICKS_GROUPED_BY_DEFAULT Sta_CLICKS_CRS_PER_USR
#define Sta_NUM_FIGURES 23 #define Sta_NUM_FIGURES 24
typedef enum typedef enum
{ {
Sta_USERS, // Number of users Sta_USERS, // Number of users
Sta_USERS_RANKING, // Users' ranking Sta_USERS_RANKING, // Users' ranking
Sta_HIERARCHY, // Number of countries, institutions, centres, degrees and courses Sta_HIERARCHY, // Number of countries, institutions, centres, degrees and courses
Sta_INSTITS, // Number of users in each institution Sta_INSTITS, // Number of users in each institution
Sta_DEGREE_TYPES, // Number of degrees in each type of degree
Sta_FOLDERS_AND_FILES, // Number of folders and files Sta_FOLDERS_AND_FILES, // Number of folders and files
Sta_OER, // Number of OERs (Open Educational Resources) Sta_OER, // Number of OERs (Open Educational Resources)
Sta_ASSIGNMENTS, // Number of assignments Sta_ASSIGNMENTS, // Number of assignments

View File

@ -39614,7 +39614,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_FIGURES] =
"Hierarquia" "Hierarquia"
#endif #endif
, ,
#if L==1 // Sta_INSTITUTIONS #if L==1 // Sta_INSTITS
"Institucions" "Institucions"
#elif L==2 #elif L==2
"Hochschulen" "Hochschulen"
@ -39634,6 +39634,26 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_FIGURES] =
"Institu&ccedil;&otilde;es" "Institu&ccedil;&otilde;es"
#endif #endif
, ,
#if L==1 // Sta_DEGREE_TYPES
"Tipus de titulaci&oacute;"
#elif L==2
"Abschlussart"
#elif L==3
"Types of degree"
#elif L==4
"Tipos de titulaci&oacute;n"
#elif L==5
"Types d'&eacute;tude"
#elif L==6
"Arandur&atilde; l&aacute;ja"
#elif L==7
"Tipi di laurea"
#elif L==8
"Rodzaje stopni"
#elif L==9
"Tipos de titula&ccedil;&atilde;o"
#endif
,
#if L==1 // Sta_FOLDERS_AND_FILES #if L==1 // Sta_FOLDERS_AND_FILES
"Carpetes i fitxers" "Carpetes i fitxers"
#elif L==2 #elif L==2