mirror of https://github.com/acanas/swad-core.git
Version 16.61
This commit is contained in:
parent
54eef99ee4
commit
adde1a92f8
2
Makefile
2
Makefile
|
@ -36,7 +36,7 @@ OBJS = swad_account.o swad_action.o swad_agenda.o swad_announcement.o \
|
|||
swad_enrollment.o swad_exam.o \
|
||||
swad_file.o swad_file_browser.o swad_follow.o swad_forum.o \
|
||||
swad_global.o swad_group.o \
|
||||
swad_help.o swad_holiday.o \
|
||||
swad_help.o swad_hierarchy.o swad_holiday.o \
|
||||
swad_icon.o swad_ID.o swad_image.o swad_indicator.o \
|
||||
swad_info.o swad_institution.o \
|
||||
swad_layout.o swad_link.o swad_logo.o \
|
||||
|
|
2680
css/swad16.59.css
2680
css/swad16.59.css
File diff suppressed because it is too large
Load Diff
|
@ -37,6 +37,7 @@
|
|||
#include "swad_database.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_help.h"
|
||||
#include "swad_hierarchy.h"
|
||||
#include "swad_institution.h"
|
||||
#include "swad_logo.h"
|
||||
#include "swad_parameter.h"
|
||||
|
@ -721,7 +722,7 @@ void Ctr_ShowCtrsOfCurrentIns (void)
|
|||
Ctr_GetListCentres (Gbl.CurrentIns.Ins.InsCod);
|
||||
|
||||
/***** Write menu to select country and institution *****/
|
||||
Deg_WriteMenuAllCourses ();
|
||||
Hie_WriteMenuAllCourses ();
|
||||
|
||||
/***** List centres *****/
|
||||
Ctr_ListCentres ();
|
||||
|
@ -1764,7 +1765,7 @@ void Ctr_ChangeCtrInsInConfig (void)
|
|||
Gbl.CurrentIns.Ins.InsCod = NewIns.InsCod;
|
||||
|
||||
/***** Initialize again current course, degree, centre... *****/
|
||||
Deg_InitCurrentCourse ();
|
||||
Hie_InitCurrentCourse ();
|
||||
|
||||
/***** Write message to show the change made *****/
|
||||
sprintf (Gbl.Message,Txt_The_centre_X_has_been_moved_to_the_institution_Y,
|
||||
|
|
|
@ -157,13 +157,17 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 16.59.3 (2016-11-14)"
|
||||
#define CSS_FILE "swad16.59.css"
|
||||
#define Log_PLATFORM_VERSION "SWAD 16.61 (2016-11-14)"
|
||||
#define CSS_FILE "swad16.60.1.css"
|
||||
#define JS_FILE "swad16.46.1.js"
|
||||
|
||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
||||
/*
|
||||
Version 16.61: Nov 14, 2016 New module swad_hierarchy. (207159 lines)
|
||||
Version 16.60.1: Nov 14, 2016 Changes in layout of file browser. (207096 lines)
|
||||
Version 16.60: Nov 14, 2016 Code refactoring in file browser.
|
||||
Fixed bug in assigments, reported by Javier Fernández Baldomero. (207101 lines)
|
||||
Version 16.59.3: Nov 14, 2016 Code refactoring in file browser. (207072 lines)
|
||||
Version 16.59.2: Nov 14, 2016 Fix bug in user's usage report. (207077 lines)
|
||||
Version 16.59.1: Nov 14, 2016 Fix bug in deletion of a notice, reported by Javier Fernández Baldomero and others. (207076 lines)
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "swad_exam.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_help.h"
|
||||
#include "swad_hierarchy.h"
|
||||
#include "swad_indicator.h"
|
||||
#include "swad_logo.h"
|
||||
#include "swad_notification.h"
|
||||
|
@ -970,7 +971,7 @@ void Crs_ShowCrssOfCurrentDeg (void)
|
|||
Crs_GetListCoursesInDegree (Crs_ALL_COURSES_EXCEPT_REMOVED);
|
||||
|
||||
/***** Write menu to select country, institution, centre and degree *****/
|
||||
Deg_WriteMenuAllCourses ();
|
||||
Hie_WriteMenuAllCourses ();
|
||||
|
||||
/***** Show list of courses *****/
|
||||
Crs_ListCourses ();
|
||||
|
@ -2444,7 +2445,7 @@ void Crs_ChangeCrsDegInConfig (void)
|
|||
Gbl.CurrentDeg.Deg.DegCod = NewDeg.DegCod;
|
||||
|
||||
/***** Initialize again current course, degree, centre... *****/
|
||||
Deg_InitCurrentCourse ();
|
||||
Hie_InitCurrentCourse ();
|
||||
|
||||
/***** Create message to show the change made *****/
|
||||
sprintf (Gbl.Message,Txt_The_course_X_has_been_moved_to_the_degree_Y,
|
||||
|
|
442
swad_degree.c
442
swad_degree.c
|
@ -41,6 +41,7 @@
|
|||
#include "swad_exam.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_help.h"
|
||||
#include "swad_hierarchy.h"
|
||||
#include "swad_indicator.h"
|
||||
#include "swad_info.h"
|
||||
#include "swad_logo.h"
|
||||
|
@ -77,9 +78,6 @@ typedef enum
|
|||
/**************************** Private constants ******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Deg_MAX_LENGTH_SHORT_NAME_DEGREE_ON_PAGE_HEAD 20 // Adjust depending on the size of the style used for the degree on the page head
|
||||
#define Deg_MAX_LENGTH_SHORT_NAME_COURSE_ON_PAGE_HEAD 20 // Adjust depending on the size of the style used for the degree on the page head
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************************** Private prototypes *****************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -87,8 +85,6 @@ typedef enum
|
|||
static void Deg_Configuration (bool PrintView);
|
||||
static void Deg_PutIconsToPrintAndUpload (void);
|
||||
|
||||
static void Deg_WriteSelectorOfDegree (void);
|
||||
|
||||
static void Deg_ListDegreesForEdition (void);
|
||||
static bool Deg_CheckIfICanEditADegree (struct Degree *Deg);
|
||||
static Deg_StatusTxt_t Deg_GetStatusTxtFromStatusBits (Deg_Status_t Status);
|
||||
|
@ -584,104 +580,11 @@ static void Deg_PutIconsToPrintAndUpload (void)
|
|||
Log_PutIconToChangeLogo (Sco_SCOPE_DEG);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*** Write menu to select country, institution, centre, degree and course ****/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_WriteMenuAllCourses (void)
|
||||
{
|
||||
extern const char *The_ClassForm[The_NUM_THEMES];
|
||||
extern const char *Txt_Country;
|
||||
extern const char *Txt_Institution;
|
||||
extern const char *Txt_Centre;
|
||||
extern const char *Txt_Degree;
|
||||
extern const char *Txt_Course;
|
||||
|
||||
/***** Start of table *****/
|
||||
fprintf (Gbl.F.Out,"<table class=\"CELLS_PAD_2\""
|
||||
" style=\"margin:0 auto 12px auto;\">");
|
||||
|
||||
/***** Write a 1st selector
|
||||
with all the countries *****/
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\">",
|
||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Country);
|
||||
Cty_WriteSelectorOfCountry ();
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
if (Gbl.CurrentCty.Cty.CtyCod > 0)
|
||||
{
|
||||
/***** Write a 2nd selector
|
||||
with the institutions of selected country *****/
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\">",
|
||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Institution);
|
||||
Ins_WriteSelectorOfInstitution ();
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
if (Gbl.CurrentIns.Ins.InsCod > 0)
|
||||
{
|
||||
/***** Write a 3rd selector
|
||||
with all the centres of selected institution *****/
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\">",
|
||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Centre);
|
||||
Ctr_WriteSelectorOfCentre ();
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
|
||||
{
|
||||
/***** Write a 4th selector
|
||||
with all the degrees of selected centre *****/
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\">",
|
||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Degree);
|
||||
Deg_WriteSelectorOfDegree ();
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
if (Gbl.CurrentDeg.Deg.DegCod > 0)
|
||||
{
|
||||
/***** Write a 5th selector
|
||||
with all the courses of selected degree *****/
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\">",
|
||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Course);
|
||||
Crs_WriteSelectorOfCourse ();
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/***** End of table *****/
|
||||
fprintf (Gbl.F.Out,"</table>");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************************** Write selector of degree ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Deg_WriteSelectorOfDegree (void)
|
||||
void Deg_WriteSelectorOfDegree (void)
|
||||
{
|
||||
extern const char *Txt_Degree;
|
||||
char Query[512];
|
||||
|
@ -743,341 +646,6 @@ static void Deg_WriteSelectorOfDegree (void)
|
|||
Act_FormEnd ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************* Write hierarchy breadcrumb in the top of the page *************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_WriteHierarchyBreadcrumb (void)
|
||||
{
|
||||
extern const char *The_ClassBreadcrumb[The_NUM_THEMES];
|
||||
extern const char *Txt_System;
|
||||
extern const char *Txt_Country;
|
||||
extern const char *Txt_Institution;
|
||||
extern const char *Txt_Centre;
|
||||
extern const char *Txt_Degree;
|
||||
char DegreeShortName[Deg_MAX_LENGTH_DEGREE_FULL_NAME+1]; // Full name of degree
|
||||
char ClassOn[64];
|
||||
char ClassSemiOff[64];
|
||||
char ClassOff[64];
|
||||
|
||||
/***** CSS classes *****/
|
||||
strcpy (ClassOn,The_ClassBreadcrumb[Gbl.Prefs.Theme]);
|
||||
sprintf (ClassSemiOff,"BC_SEMIOFF %s",The_ClassBreadcrumb[Gbl.Prefs.Theme]);
|
||||
sprintf (ClassOff,"BC_OFF %s",The_ClassBreadcrumb[Gbl.Prefs.Theme]);
|
||||
|
||||
/***** Form to go to the system *****/
|
||||
Act_FormGoToStart (ActMnu);
|
||||
Par_PutHiddenParamUnsigned ("NxtTab",(unsigned) TabSys);
|
||||
Act_LinkFormSubmit (Txt_System,ClassOn,NULL);
|
||||
fprintf (Gbl.F.Out,"%s</a>",Txt_System);
|
||||
Act_FormEnd ();
|
||||
|
||||
if (Gbl.CurrentCty.Cty.CtyCod > 0) // Country selected...
|
||||
{
|
||||
/***** Separator *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > </span>",ClassOn);
|
||||
|
||||
/***** Form to go to see institutions of this country *****/
|
||||
Act_FormGoToStart (ActSeeIns);
|
||||
Cty_PutParamCtyCod (Gbl.CurrentCty.Cty.CtyCod);
|
||||
Act_LinkFormSubmit (Gbl.CurrentCty.Cty.Name[Gbl.Prefs.Language],ClassOn,NULL);
|
||||
fprintf (Gbl.F.Out,"%s</a>",
|
||||
Gbl.CurrentCty.Cty.Name[Gbl.Prefs.Language]);
|
||||
Act_FormEnd ();
|
||||
}
|
||||
else
|
||||
{
|
||||
/***** Separator *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > </span>",ClassSemiOff);
|
||||
|
||||
/***** Form to go to select countries *****/
|
||||
Act_FormGoToStart (ActSeeCty);
|
||||
Act_LinkFormSubmit (Txt_Country,ClassSemiOff,NULL);
|
||||
fprintf (Gbl.F.Out,"%s</a>",Txt_Country);
|
||||
Act_FormEnd ();
|
||||
}
|
||||
|
||||
if (Gbl.CurrentIns.Ins.InsCod > 0) // Institution selected...
|
||||
{
|
||||
/***** Separator *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > </span>",ClassOn);
|
||||
|
||||
/***** Form to see centres of this institution *****/
|
||||
Act_FormGoToStart (ActSeeCtr);
|
||||
Ins_PutParamInsCod (Gbl.CurrentIns.Ins.InsCod);
|
||||
Act_LinkFormSubmit (Gbl.CurrentIns.Ins.FullName,ClassOn,NULL);
|
||||
fprintf (Gbl.F.Out,"%s</a>",
|
||||
Gbl.CurrentIns.Ins.ShrtName);
|
||||
Act_FormEnd ();
|
||||
}
|
||||
else if (Gbl.CurrentCty.Cty.CtyCod > 0)
|
||||
{
|
||||
/***** Separator *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > </span>",ClassSemiOff);
|
||||
|
||||
/***** Form to go to select institutions *****/
|
||||
Act_FormGoToStart (ActSeeIns);
|
||||
Act_LinkFormSubmit (Txt_Institution,ClassSemiOff,NULL);
|
||||
fprintf (Gbl.F.Out,"%s</a>",Txt_Institution);
|
||||
Act_FormEnd ();
|
||||
}
|
||||
else
|
||||
/***** Separator and hidden institution *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > %s</span>",
|
||||
ClassOff,Txt_Institution);
|
||||
|
||||
if (Gbl.CurrentCtr.Ctr.CtrCod > 0) // Centre selected...
|
||||
{
|
||||
/***** Separator *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > </span>",ClassOn);
|
||||
|
||||
/***** Form to see degrees of this centre *****/
|
||||
Act_FormGoToStart (ActSeeDeg);
|
||||
Ctr_PutParamCtrCod (Gbl.CurrentCtr.Ctr.CtrCod);
|
||||
Act_LinkFormSubmit (Gbl.CurrentCtr.Ctr.FullName,ClassOn,NULL);
|
||||
fprintf (Gbl.F.Out,"%s</a>",
|
||||
Gbl.CurrentCtr.Ctr.ShrtName);
|
||||
Act_FormEnd ();
|
||||
}
|
||||
else if (Gbl.CurrentIns.Ins.InsCod > 0)
|
||||
{
|
||||
/***** Separator *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > </span>",ClassSemiOff);
|
||||
|
||||
/***** Form to go to select centres *****/
|
||||
Act_FormGoToStart (ActSeeCtr);
|
||||
Act_LinkFormSubmit (Txt_Centre,ClassSemiOff,NULL);
|
||||
fprintf (Gbl.F.Out,"%s</a>",Txt_Centre);
|
||||
Act_FormEnd ();
|
||||
}
|
||||
else
|
||||
/***** Separator and hidden centre *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > %s</span>",
|
||||
ClassOff,Txt_Centre);
|
||||
|
||||
if (Gbl.CurrentDeg.Deg.DegCod > 0) // Degree selected...
|
||||
{
|
||||
/***** Separator *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > </span>",ClassOn);
|
||||
|
||||
/***** Form to go to see courses of this degree *****/
|
||||
Act_FormGoToStart (ActSeeCrs);
|
||||
Deg_PutParamDegCod (Gbl.CurrentDeg.Deg.DegCod);
|
||||
Act_LinkFormSubmit (Gbl.CurrentDeg.Deg.FullName,ClassOn,NULL);
|
||||
strcpy (DegreeShortName,Gbl.CurrentDeg.Deg.ShrtName);
|
||||
Str_LimitLengthHTMLStr (DegreeShortName,
|
||||
Deg_MAX_LENGTH_SHORT_NAME_DEGREE_ON_PAGE_HEAD);
|
||||
fprintf (Gbl.F.Out,"%s</a>",
|
||||
DegreeShortName);
|
||||
Act_FormEnd ();
|
||||
}
|
||||
else if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
|
||||
{
|
||||
/***** Separator *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > </span>",ClassSemiOff);
|
||||
|
||||
/***** Form to go to select degrees *****/
|
||||
Act_FormGoToStart (ActSeeDeg);
|
||||
Act_LinkFormSubmit (Txt_Degree,ClassSemiOff,NULL);
|
||||
fprintf (Gbl.F.Out,"%s</a>",Txt_Degree);
|
||||
Act_FormEnd ();
|
||||
}
|
||||
else
|
||||
/***** Separator and hidden degree *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > %s</span>",
|
||||
ClassOff,Txt_Degree);
|
||||
|
||||
/***** Separator *****/
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > </span>",
|
||||
(Gbl.CurrentCrs.Crs.CrsCod > 0) ? ClassOn :
|
||||
((Gbl.CurrentDeg.Deg.DegCod > 0) ? ClassSemiOff :
|
||||
ClassOff));
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** Write course full name in the top of the page ***************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_WriteBigNameCtyInsCtrDegCrs (void)
|
||||
{
|
||||
extern const char *The_ClassCourse[The_NUM_THEMES];
|
||||
extern const char *Txt_TAGLINE;
|
||||
|
||||
fprintf (Gbl.F.Out,"<h1 id=\"main_title\" class=\"%s\">",
|
||||
The_ClassCourse[Gbl.Prefs.Theme]);
|
||||
|
||||
/***** Logo *****/
|
||||
if (Gbl.CurrentCrs.Crs.CrsCod > 0 ||
|
||||
Gbl.CurrentDeg.Deg.DegCod > 0)
|
||||
Log_DrawLogo (Sco_SCOPE_DEG,Gbl.CurrentDeg.Deg.DegCod,
|
||||
Gbl.CurrentDeg.Deg.ShrtName,40,"TOP_LOGO",false);
|
||||
else if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
|
||||
Log_DrawLogo (Sco_SCOPE_CTR,Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Gbl.CurrentCtr.Ctr.ShrtName,40,"TOP_LOGO",false);
|
||||
else if (Gbl.CurrentIns.Ins.InsCod > 0)
|
||||
Log_DrawLogo (Sco_SCOPE_INS,Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentIns.Ins.ShrtName,40,"TOP_LOGO",false);
|
||||
else if (Gbl.CurrentCty.Cty.CtyCod > 0)
|
||||
Cty_DrawCountryMap (&Gbl.CurrentCty.Cty,"COUNTRY_MAP_TITLE");
|
||||
else
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/%s\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
" class=\"TOP_LOGO\" />",
|
||||
Gbl.Prefs.IconsURL,Cfg_PLATFORM_LOGO_SMALL_FILENAME,
|
||||
Cfg_PLATFORM_SHORT_NAME,Cfg_PLATFORM_FULL_NAME);
|
||||
|
||||
/***** Text *****/
|
||||
fprintf (Gbl.F.Out,"<div id=\"big_name_container\">");
|
||||
if (Gbl.CurrentCty.Cty.CtyCod > 0)
|
||||
fprintf (Gbl.F.Out,"<div id=\"big_full_name\">"
|
||||
"%s" // Full name
|
||||
"</div>"
|
||||
"<div class=\"NOT_SHOWN\">"
|
||||
" / " // To separate
|
||||
"</div>"
|
||||
"<div id=\"big_short_name\">"
|
||||
"%s" // Short name
|
||||
"</div>",
|
||||
(Gbl.CurrentCrs.Crs.CrsCod > 0) ? Gbl.CurrentCrs.Crs.FullName :
|
||||
((Gbl.CurrentDeg.Deg.DegCod > 0) ? Gbl.CurrentDeg.Deg.FullName :
|
||||
((Gbl.CurrentCtr.Ctr.CtrCod > 0) ? Gbl.CurrentCtr.Ctr.FullName :
|
||||
((Gbl.CurrentIns.Ins.InsCod > 0) ? Gbl.CurrentIns.Ins.FullName :
|
||||
Gbl.CurrentCty.Cty.Name[Gbl.Prefs.Language]))),
|
||||
(Gbl.CurrentCrs.Crs.CrsCod > 0) ? Gbl.CurrentCrs.Crs.ShrtName :
|
||||
((Gbl.CurrentDeg.Deg.DegCod > 0) ? Gbl.CurrentDeg.Deg.ShrtName :
|
||||
((Gbl.CurrentCtr.Ctr.CtrCod > 0) ? Gbl.CurrentCtr.Ctr.ShrtName :
|
||||
((Gbl.CurrentIns.Ins.InsCod > 0) ? Gbl.CurrentIns.Ins.ShrtName :
|
||||
Gbl.CurrentCty.Cty.Name[Gbl.Prefs.Language]))));
|
||||
else // No country specified ==> home page
|
||||
fprintf (Gbl.F.Out,"<div id=\"big_full_name\">"
|
||||
"%s: %s" // Full name
|
||||
"</div>"
|
||||
"<div class=\"NOT_SHOWN\">"
|
||||
" / " // To separate
|
||||
"</div>"
|
||||
"<div id=\"big_short_name\">"
|
||||
"%s" // Short name
|
||||
"</div>",
|
||||
Cfg_PLATFORM_SHORT_NAME,Txt_TAGLINE,
|
||||
Cfg_PLATFORM_SHORT_NAME);
|
||||
fprintf (Gbl.F.Out,"</div>"
|
||||
"</h1>");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************** Initialize values related to current course ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_InitCurrentCourse (void)
|
||||
{
|
||||
/***** If numerical course code is available, get course data *****/
|
||||
if (Gbl.CurrentCrs.Crs.CrsCod > 0)
|
||||
{
|
||||
if (Crs_GetDataOfCourseByCod (&Gbl.CurrentCrs.Crs)) // Course found
|
||||
Gbl.CurrentDeg.Deg.DegCod = Gbl.CurrentCrs.Crs.DegCod;
|
||||
else
|
||||
{
|
||||
Gbl.CurrentIns.Ins.InsCod =
|
||||
Gbl.CurrentCtr.Ctr.CtrCod =
|
||||
Gbl.CurrentDeg.Deg.DegCod =
|
||||
Gbl.CurrentCrs.Crs.CrsCod = -1L;
|
||||
}
|
||||
}
|
||||
|
||||
/***** If numerical degree code is available, get degree data *****/
|
||||
if (Gbl.CurrentDeg.Deg.DegCod > 0)
|
||||
{
|
||||
if (Deg_GetDataOfDegreeByCod (&Gbl.CurrentDeg.Deg)) // Degree found
|
||||
{
|
||||
Gbl.CurrentCtr.Ctr.CtrCod = Gbl.CurrentDeg.Deg.CtrCod;
|
||||
Gbl.CurrentDegTyp.DegTyp.DegTypCod = Gbl.CurrentDeg.Deg.DegTypCod;
|
||||
Gbl.CurrentIns.Ins.InsCod = Deg_GetInsCodOfDegreeByCod (Gbl.CurrentDeg.Deg.DegCod);
|
||||
|
||||
/***** Degree type is available, so get degree type data *****/
|
||||
if (!DT_GetDataOfDegreeTypeByCod (&Gbl.CurrentDegTyp.DegTyp)) // Degree type not found
|
||||
{
|
||||
Gbl.CurrentIns.Ins.InsCod =
|
||||
Gbl.CurrentCtr.Ctr.CtrCod =
|
||||
Gbl.CurrentDeg.Deg.DegTypCod =
|
||||
Gbl.CurrentDeg.Deg.DegCod =
|
||||
Gbl.CurrentCrs.Crs.CrsCod = -1L;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Gbl.CurrentIns.Ins.InsCod =
|
||||
Gbl.CurrentCtr.Ctr.CtrCod =
|
||||
Gbl.CurrentDeg.Deg.DegCod =
|
||||
Gbl.CurrentCrs.Crs.CrsCod = -1L;
|
||||
}
|
||||
}
|
||||
|
||||
/***** If centre code is available, get centre data *****/
|
||||
if (Gbl.CurrentCtr.Ctr.CtrCod > 0)
|
||||
{
|
||||
if (Ctr_GetDataOfCentreByCod (&Gbl.CurrentCtr.Ctr)) // Centre found
|
||||
Gbl.CurrentIns.Ins.InsCod = Gbl.CurrentCtr.Ctr.InsCod;
|
||||
else
|
||||
Gbl.CurrentCtr.Ctr.CtrCod = -1L;
|
||||
}
|
||||
|
||||
/***** If numerical institution code is available, get institution data *****/
|
||||
if (Gbl.CurrentIns.Ins.InsCod > 0)
|
||||
{
|
||||
if (Ins_GetDataOfInstitutionByCod (&Gbl.CurrentIns.Ins,Ins_GET_BASIC_DATA)) // Institution found
|
||||
Gbl.CurrentCty.Cty.CtyCod = Gbl.CurrentIns.Ins.CtyCod;
|
||||
else
|
||||
{
|
||||
Gbl.CurrentCty.Cty.CtyCod =
|
||||
Gbl.CurrentIns.Ins.InsCod =
|
||||
Gbl.CurrentCtr.Ctr.CtrCod =
|
||||
Gbl.CurrentDeg.Deg.DegCod =
|
||||
Gbl.CurrentCrs.Crs.CrsCod = -1L;
|
||||
}
|
||||
}
|
||||
|
||||
/***** If numerical country code is available, get country data *****/
|
||||
if (Gbl.CurrentCty.Cty.CtyCod > 0)
|
||||
{
|
||||
if (!Cty_GetDataOfCountryByCod (&Gbl.CurrentCty.Cty,Cty_GET_BASIC_DATA)) // Country not found
|
||||
{
|
||||
Gbl.CurrentCty.Cty.CtyCod =
|
||||
Gbl.CurrentIns.Ins.InsCod =
|
||||
Gbl.CurrentCtr.Ctr.CtrCod =
|
||||
Gbl.CurrentDeg.Deg.DegCod =
|
||||
Gbl.CurrentCrs.Crs.CrsCod = -1L;
|
||||
}
|
||||
}
|
||||
|
||||
/***** Initialize default fields for edition to current values *****/
|
||||
Gbl.Inss.EditingIns.CtyCod = Gbl.CurrentCty.Cty.CtyCod;
|
||||
Gbl.Ctrs.EditingCtr.InsCod =
|
||||
Gbl.Dpts.EditingDpt.InsCod = Gbl.CurrentIns.Ins.InsCod;
|
||||
Gbl.Degs.EditingDeg.CtrCod = Gbl.CurrentCtr.Ctr.CtrCod;
|
||||
Gbl.Degs.EditingDeg.DegTypCod = Gbl.CurrentDegTyp.DegTyp.DegTypCod;
|
||||
|
||||
/***** Initialize paths *****/
|
||||
if (Gbl.CurrentCrs.Crs.CrsCod > 0)
|
||||
{
|
||||
/***** Paths of course directories *****/
|
||||
sprintf (Gbl.CurrentCrs.PathPriv,"%s/%s/%ld",
|
||||
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,Gbl.CurrentCrs.Crs.CrsCod);
|
||||
sprintf (Gbl.CurrentCrs.PathRelPubl,"%s/%s/%ld",
|
||||
Cfg_PATH_SWAD_PUBLIC ,Cfg_FOLDER_CRS,Gbl.CurrentCrs.Crs.CrsCod);
|
||||
sprintf (Gbl.CurrentCrs.PathURLPubl,"%s/%s/%ld",
|
||||
Cfg_URL_SWAD_PUBLIC,Cfg_FOLDER_CRS,Gbl.CurrentCrs.Crs.CrsCod);
|
||||
|
||||
/***** If any of the course directories does not exist, create it *****/
|
||||
if (!Fil_CheckIfPathExists (Gbl.CurrentCrs.PathPriv))
|
||||
Fil_CreateDirIfNotExists (Gbl.CurrentCrs.PathPriv);
|
||||
if (!Fil_CheckIfPathExists (Gbl.CurrentCrs.PathRelPubl))
|
||||
Fil_CreateDirIfNotExists (Gbl.CurrentCrs.PathRelPubl);
|
||||
|
||||
/***** Count number of groups in current course (used only in some actions) *****/
|
||||
Gbl.CurrentCrs.Grps.NumGrps = Grp_CountNumGrpsInCurrentCrs ();
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************* Show the degrees belonging to the current centre **************/
|
||||
/*****************************************************************************/
|
||||
|
@ -1091,7 +659,7 @@ void Deg_ShowDegsOfCurrentCtr (void)
|
|||
Deg_GetListDegsOfCurrentCtr ();
|
||||
|
||||
/***** Write menu to select country, institution and centre *****/
|
||||
Deg_WriteMenuAllCourses ();
|
||||
Hie_WriteMenuAllCourses ();
|
||||
|
||||
/***** Show list of degrees *****/
|
||||
Deg_ListDegrees ();
|
||||
|
@ -2512,7 +2080,7 @@ void Deg_ChangeDegCtrInConfig (void)
|
|||
Gbl.CurrentCtr.Ctr.CtrCod = NewCtr.CtrCod;
|
||||
|
||||
/***** Initialize again current course, degree, centre... *****/
|
||||
Deg_InitCurrentCourse ();
|
||||
Hie_InitCurrentCourse ();
|
||||
|
||||
/***** Create message to show the change made *****/
|
||||
sprintf (Gbl.Message,Txt_The_degree_X_has_been_moved_to_the_centre_Y,
|
||||
|
@ -2858,7 +2426,7 @@ unsigned Deg_GetNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery)
|
|||
/***** Write institutions, centres and degrees administrated by an admin *****/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
|
||||
void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
|
||||
{
|
||||
extern const char *Sco_ScopeDB[Sco_NUM_SCOPES];
|
||||
extern const char *Txt_all_degrees;
|
||||
|
|
|
@ -98,10 +98,7 @@ void Deg_DrawDegreeLogoAndNameWithLink (struct Degree *Deg,Act_Action_t Action,
|
|||
void Deg_ShowConfiguration (void);
|
||||
void Deg_PrintConfiguration (void);
|
||||
|
||||
void Deg_WriteMenuAllCourses (void);
|
||||
void Deg_WriteHierarchyBreadcrumb (void);
|
||||
void Deg_WriteBigNameCtyInsCtrDegCrs (void);
|
||||
void Deg_InitCurrentCourse (void);
|
||||
void Deg_WriteSelectorOfDegree (void);
|
||||
|
||||
void Deg_ShowDegsOfCurrentCtr (void);
|
||||
|
||||
|
@ -149,8 +146,6 @@ unsigned Deg_GetNumDegsInCtr (long CtrCod);
|
|||
unsigned Deg_GetNumDegsWithCrss (const char *SubQuery);
|
||||
unsigned Deg_GetNumDegsWithUsrs (Rol_Role_t Role,const char *SubQuery);
|
||||
|
||||
void Deg_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan);
|
||||
|
||||
unsigned Deg_ListDegsFound (const char *Query);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1476,26 +1476,21 @@ static long Brw_GetGrpLastAccZone (const char *FieldNameDB);
|
|||
static void Brw_ResetFileBrowserSize (void);
|
||||
static void Brw_CalcSizeOfDirRecursive (unsigned Level,char *Path);
|
||||
static void Brw_ListDir (unsigned Level,const char *Path,const char *PathInTree);
|
||||
static bool Brw_WriteRowFileBrowser (unsigned Level,
|
||||
Brw_FileType_t FileType,Brw_ExpandTree_t ExpandTree,
|
||||
static bool Brw_WriteRowFileBrowser (unsigned Level,Brw_ExpandTree_t ExpandTree,
|
||||
const char *PathInTree,const char *FileName);
|
||||
static void Brw_PutIconsRemoveCopyPaste (unsigned Level,Brw_FileType_t FileType,
|
||||
static void Brw_PutIconsRemoveCopyPaste (unsigned Level,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
static bool Brw_CheckIfCanPasteIn (unsigned Level);
|
||||
static void Brw_PutIconRemoveFile (Brw_FileType_t FileType,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
static void Brw_PutIconRemoveFile (const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
static void Brw_PutIconRemoveDir (const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
static void Brw_PutIconCopy (Brw_FileType_t FileType,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameShow);
|
||||
static void Brw_PutIconCopy (const char *PathInTree,const char *FileName,const char *FileNameShow);
|
||||
static void Brw_PutIconPasteOn (const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
static void Brw_PutIconPasteOff (void);
|
||||
static void Brw_IndentAndWriteIconExpandContract (unsigned Level,Brw_ExpandTree_t ExpandTree,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
static void Brw_IndentDependingOnLevel (unsigned Level);
|
||||
static void Brw_PutIconShow (unsigned Level,Brw_FileType_t FileType,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
static void Brw_PutIconHide (unsigned Level,Brw_FileType_t FileType,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
static void Brw_PutIconShow (unsigned Level,const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
static void Brw_PutIconHide (unsigned Level,const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
static bool Brw_CheckIfAnyUpperLevelIsHidden (unsigned CurrentLevel);
|
||||
static void Brw_PutIconFolder (unsigned Level,Brw_ExpandTree_t ExpandTree,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
|
@ -1504,13 +1499,14 @@ static void Brw_PutIconFileWithLinkToViewMetadata (unsigned Size,
|
|||
struct FileMetadata *FileMetadata,
|
||||
const char *FileNameToShow);
|
||||
static void Brw_PutIconFile (unsigned Size,Brw_FileType_t FileType,const char *FileName);
|
||||
static void Brw_WriteFileName (unsigned Level,bool IsPublic,Brw_FileType_t FileType,
|
||||
static void Brw_WriteFileName (unsigned Level,bool IsPublic,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow);
|
||||
static void Brw_GetFileNameToShow (Brw_FileBrowser_t FileBrowser,unsigned Level,Brw_FileType_t FileType,
|
||||
static void Brw_GetFileNameToShow (Brw_FileBrowser_t FileBrowser,unsigned Level,
|
||||
Brw_FileType_t FileType,
|
||||
const char *FileName,char *FileNameToShow);
|
||||
static void Brw_LimitLengthFileNameToShow (Brw_FileType_t FileType,const char *FileName,char *FileNameToShow);
|
||||
static void Brw_WriteDatesAssignment (void);
|
||||
static void Brw_WriteFileSizeAndDate (Brw_FileType_t FileType,struct FileMetadata *FileMetadata);
|
||||
static void Brw_WriteFileSizeAndDate (struct FileMetadata *FileMetadata);
|
||||
static void Brw_WriteFileOrFolderPublisher (unsigned Level,unsigned long UsrCod);
|
||||
static void Brw_AskConfirmRemoveFolderNotEmpty (void);
|
||||
|
||||
|
@ -1518,8 +1514,8 @@ static inline void Brw_GetAndWriteClipboard (void);
|
|||
static void Brw_WriteCurrentClipboard (void);
|
||||
static bool Brw_GetMyClipboard (void);
|
||||
static bool Brw_CheckIfClipboardIsInThisTree (void);
|
||||
static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path);
|
||||
static void Brw_UpdatePathInClipboard (Brw_FileType_t FileType,const char *Path);
|
||||
static void Brw_AddPathToClipboards (void);
|
||||
static void Brw_UpdatePathInClipboard (void);
|
||||
static long Brw_GetCodForClipboard (void);
|
||||
static long Brw_GetWorksUsrCodForClipboard (void);
|
||||
|
||||
|
@ -3370,22 +3366,22 @@ static void Brw_GetSelectedGroupData (struct GroupData *GrpDat,bool AbortOnError
|
|||
|
||||
static void Brw_ShowDataOwnerAsgWrk (struct UsrData *UsrDat)
|
||||
{
|
||||
extern const char *Txt_Write_a_message_to_X;
|
||||
extern const char *Txt_View_record_for_this_course;
|
||||
bool ShowPhoto;
|
||||
char PhotoURL[PATH_MAX+1];
|
||||
|
||||
/***** Show user's photo *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\" style=\"width:100px;\">");
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\" style=\"width:64px;\">");
|
||||
ShowPhoto = Pho_ShowUsrPhotoIsAllowed (UsrDat,PhotoURL);
|
||||
Pho_ShowUsrPhoto (UsrDat,ShowPhoto ? PhotoURL :
|
||||
NULL,
|
||||
"PHOTO93x124",Pho_ZOOM,false);
|
||||
"PHOTO60x80",Pho_ZOOM,false);
|
||||
fprintf (Gbl.F.Out,"</td>");
|
||||
|
||||
/***** Start form to send a message to this user *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"MSG_AUT LEFT_TOP\" style=\"width:200px;\">");
|
||||
fprintf (Gbl.F.Out,"<td class=\"MSG_AUT LEFT_TOP\" style=\"width:180px;\">");
|
||||
Act_FormStart (UsrDat->RoleInCurrentCrsDB == Rol_STUDENT ? ActSeeRecOneStd :
|
||||
ActSeeRecOneTch);
|
||||
ActSeeRecOneTch);
|
||||
Usr_PutParamUsrCodEncrypted (UsrDat->EncryptedUsrCod);
|
||||
|
||||
/***** Show user's ID *****/
|
||||
|
@ -3393,9 +3389,7 @@ static void Brw_ShowDataOwnerAsgWrk (struct UsrData *UsrDat)
|
|||
|
||||
/***** Show user's name *****/
|
||||
fprintf (Gbl.F.Out,"<br />");
|
||||
sprintf (Gbl.Title,Txt_Write_a_message_to_X,
|
||||
UsrDat->FullName);
|
||||
Act_LinkFormSubmit (Gbl.Title,"MSG_AUT",NULL);
|
||||
Act_LinkFormSubmit (Txt_View_record_for_this_course,"MSG_AUT",NULL);
|
||||
fprintf (Gbl.F.Out,"%s",UsrDat->Surname1);
|
||||
if (UsrDat->Surname2[0])
|
||||
fprintf (Gbl.F.Out," %s",UsrDat->Surname2);
|
||||
|
@ -3407,7 +3401,8 @@ static void Brw_ShowDataOwnerAsgWrk (struct UsrData *UsrDat)
|
|||
if (UsrDat->Email[0])
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<br />"
|
||||
"<a href=\"mailto:%s\" target=\"_blank\" class=\"MSG_AUT\">",
|
||||
"<a href=\"mailto:%s\" target=\"_blank\""
|
||||
" class=\"MSG_AUT\">",
|
||||
UsrDat->Email);
|
||||
Str_LimitLengthHTMLStr (UsrDat->Email,25);
|
||||
fprintf (Gbl.F.Out,"%s</a>",UsrDat->Email);
|
||||
|
@ -3641,7 +3636,8 @@ static void Brw_ShowFileBrowser (void)
|
|||
/***** List recursively the directory *****/
|
||||
fprintf (Gbl.F.Out,"<table class=\"BROWSER_TABLE\">");
|
||||
Brw_SetFullPathInTree (Brw_RootFolderInternalNames[Gbl.FileBrowser.Type],".");
|
||||
if (Brw_WriteRowFileBrowser (0,Brw_IS_FOLDER,Brw_EXPAND_TREE_NOTHING,Brw_RootFolderInternalNames[Gbl.FileBrowser.Type],"."))
|
||||
Gbl.FileBrowser.FileType = Brw_IS_FOLDER;
|
||||
if (Brw_WriteRowFileBrowser (0,Brw_EXPAND_TREE_NOTHING,Brw_RootFolderInternalNames[Gbl.FileBrowser.Type],"."))
|
||||
Brw_ListDir (1,Gbl.FileBrowser.Priv.PathRootFolder,Brw_RootFolderInternalNames[Gbl.FileBrowser.Type]);
|
||||
fprintf (Gbl.F.Out,"</table>");
|
||||
|
||||
|
@ -5044,7 +5040,8 @@ static void Brw_ListDir (unsigned Level,const char *Path,const char *PathInTree)
|
|||
}
|
||||
|
||||
/***** Write a row for the subdirectory *****/
|
||||
if (Brw_WriteRowFileBrowser (Level,Brw_IS_FOLDER,ExpandTree,PathInTree,FileList[NumFile]->d_name))
|
||||
Gbl.FileBrowser.FileType = Brw_IS_FOLDER;
|
||||
if (Brw_WriteRowFileBrowser (Level,ExpandTree,PathInTree,FileList[NumFile]->d_name))
|
||||
if (ExpandTree == Brw_EXPAND_TREE_MINUS ||
|
||||
ExpandTree == Brw_EXPAND_TREE_NOTHING)
|
||||
if (Level < Brw_MAX_DIR_LEVELS)
|
||||
|
@ -5052,10 +5049,11 @@ static void Brw_ListDir (unsigned Level,const char *Path,const char *PathInTree)
|
|||
Brw_ListDir (Level + 1,PathFileRel,PathFileInExplTree);
|
||||
}
|
||||
else if (S_ISREG (FileStatus.st_mode)) // It's a regular file
|
||||
Brw_WriteRowFileBrowser (Level,
|
||||
Str_FileIs (FileList[NumFile]->d_name,"url") ? Brw_IS_LINK :
|
||||
Brw_IS_FILE,
|
||||
Brw_EXPAND_TREE_NOTHING,PathInTree,FileList[NumFile]->d_name);
|
||||
{
|
||||
Gbl.FileBrowser.FileType = Str_FileIs (FileList[NumFile]->d_name,"url") ? Brw_IS_LINK :
|
||||
Brw_IS_FILE;
|
||||
Brw_WriteRowFileBrowser (Level,Brw_EXPAND_TREE_NOTHING,PathInTree,FileList[NumFile]->d_name);
|
||||
}
|
||||
}
|
||||
free ((void *) FileList[NumFile]);
|
||||
}
|
||||
|
@ -5072,8 +5070,7 @@ static void Brw_ListDir (unsigned Level,const char *Path,const char *PathInTree)
|
|||
// If it is not the first row, it is shown or not depending on whether it is hidden or not
|
||||
// If the row is visible, return true. If it is hidden, return false
|
||||
|
||||
static bool Brw_WriteRowFileBrowser (unsigned Level,
|
||||
Brw_FileType_t FileType,Brw_ExpandTree_t ExpandTree,
|
||||
static bool Brw_WriteRowFileBrowser (unsigned Level,Brw_ExpandTree_t ExpandTree,
|
||||
const char *PathInTree,const char *FileName)
|
||||
{
|
||||
bool RowSetAsHidden = false;
|
||||
|
@ -5110,7 +5107,7 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,
|
|||
if (SeeDocsZone || AdminDocsZone ||
|
||||
SeeMarks || AdminMarks)
|
||||
{
|
||||
RowSetAsHidden = Brw_CheckIfFileOrFolderIsSetAsHiddenInDB (FileType,
|
||||
RowSetAsHidden = Brw_CheckIfFileOrFolderIsSetAsHiddenInDB (Gbl.FileBrowser.FileType,
|
||||
Gbl.FileBrowser.Priv.FullPathInTree);
|
||||
if (RowSetAsHidden && Level && (SeeDocsZone || SeeMarks))
|
||||
return false;
|
||||
|
@ -5118,13 +5115,13 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,
|
|||
{
|
||||
if (RowSetAsHidden) // this row is marked as hidden
|
||||
{
|
||||
if (FileType == Brw_IS_FOLDER)
|
||||
if (Gbl.FileBrowser.FileType == Brw_IS_FOLDER)
|
||||
Gbl.FileBrowser.HiddenLevels[Level] = true;
|
||||
LightStyle = true;
|
||||
}
|
||||
else // this row is not marked as hidden
|
||||
{
|
||||
if (FileType == Brw_IS_FOLDER)
|
||||
if (Gbl.FileBrowser.FileType == Brw_IS_FOLDER)
|
||||
Gbl.FileBrowser.HiddenLevels[Level] = false;
|
||||
LightStyle = Brw_CheckIfAnyUpperLevelIsHidden (Level);
|
||||
}
|
||||
|
@ -5142,8 +5139,8 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,
|
|||
/***** Is this row public or private? *****/
|
||||
if (SeeDocsZone || AdminDocsZone || SharedZone)
|
||||
{
|
||||
RowSetAsPublic = (FileType == Brw_IS_FOLDER) ? Brw_GetIfFolderHasPublicFiles (Gbl.FileBrowser.Priv.FullPathInTree) :
|
||||
FileMetadata.IsPublic;
|
||||
RowSetAsPublic = (Gbl.FileBrowser.FileType == Brw_IS_FOLDER) ? Brw_GetIfFolderHasPublicFiles (Gbl.FileBrowser.Priv.FullPathInTree) :
|
||||
FileMetadata.IsPublic;
|
||||
if (Gbl.FileBrowser.ShowOnlyPublicFiles && !RowSetAsPublic)
|
||||
return false;
|
||||
}
|
||||
|
@ -5154,28 +5151,34 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,
|
|||
IsRecent = true;
|
||||
|
||||
/* Style of the text in this row */
|
||||
Gbl.FileBrowser.TxtStyle = (LightStyle ? (FileType == Brw_IS_FOLDER || !IsRecent ? "LST_HID" :
|
||||
"LST_REC_HID") :
|
||||
(FileType == Brw_IS_FOLDER || !IsRecent ? "LST" :
|
||||
"LST_REC"));
|
||||
Gbl.FileBrowser.InputStyle = (LightStyle ? (FileType == Brw_IS_FOLDER || !IsRecent ? "LST_EDIT_HID" :
|
||||
"LST_EDIT_REC_HID") :
|
||||
(FileType == Brw_IS_FOLDER || !IsRecent ? "LST_EDIT" :
|
||||
"LST_EDIT_REC"));
|
||||
Gbl.FileBrowser.TxtStyle = (LightStyle ? (Gbl.FileBrowser.FileType == Brw_IS_FOLDER || !IsRecent ? "LST_HID" :
|
||||
"LST_REC_HID") :
|
||||
(Gbl.FileBrowser.FileType == Brw_IS_FOLDER || !IsRecent ? "LST" :
|
||||
"LST_REC"));
|
||||
Gbl.FileBrowser.InputStyle = (LightStyle ? (Gbl.FileBrowser.FileType == Brw_IS_FOLDER || !IsRecent ? "LST_EDIT_HID" :
|
||||
"LST_EDIT_REC_HID") :
|
||||
(Gbl.FileBrowser.FileType == Brw_IS_FOLDER || !IsRecent ? "LST_EDIT" :
|
||||
"LST_EDIT_REC"));
|
||||
|
||||
/***** Get data of assignment using the name of the folder *****/
|
||||
if (AssignmentsZone && Level == 1)
|
||||
if (AssignmentsZone)
|
||||
{
|
||||
strncpy (Gbl.FileBrowser.Asg.Folder,FileName,Asg_MAX_LENGTH_FOLDER);
|
||||
Gbl.FileBrowser.Asg.Folder[Asg_MAX_LENGTH_FOLDER] = '\0';
|
||||
Asg_GetDataOfAssignmentByFolder (&Gbl.FileBrowser.Asg);
|
||||
// The data of this assignment remains in Gbl.FileBrowser.Asg
|
||||
// for all subsequent rows with Level > 1 (files or folders inside this folder),
|
||||
// and they are overwritten on the next row with level == 1 (next assignment)
|
||||
if (Level == 1) // Main folder of the assignment
|
||||
{
|
||||
strncpy (Gbl.FileBrowser.Asg.Folder,FileName,Asg_MAX_LENGTH_FOLDER);
|
||||
Gbl.FileBrowser.Asg.Folder[Asg_MAX_LENGTH_FOLDER] = '\0';
|
||||
Asg_GetDataOfAssignmentByFolder (&Gbl.FileBrowser.Asg);
|
||||
// The data of this assignment remains in Gbl.FileBrowser.Asg
|
||||
// for all subsequent rows with Level > 1 (files or folders inside this folder),
|
||||
// and they are overwritten on the next row with level == 1 (next assignment)
|
||||
}
|
||||
}
|
||||
else // Not an assignment zone
|
||||
Gbl.FileBrowser.Asg.AsgCod = -1L;
|
||||
|
||||
/***** Get the name of the file to show *****/
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Level,FileType,
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Level,
|
||||
Gbl.FileBrowser.FileType,
|
||||
FileName,FileNameToShow);
|
||||
|
||||
/***** Start this row *****/
|
||||
|
@ -5193,10 +5196,10 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,
|
|||
Gbl.FileBrowser.Clipboard.IsThisFile = true;
|
||||
|
||||
/* Check if I can modify (remove, rename, etc.) this file or folder */
|
||||
Gbl.FileBrowser.ICanEditFileOrFolder = Brw_CheckIfICanEditFileOrFolder (Level);
|
||||
Gbl.FileBrowser.ICanEditFileOrFolder = Brw_CheckIfICanEditFileOrFolder (Level);
|
||||
|
||||
/* Put icons to remove, copy and paste */
|
||||
Brw_PutIconsRemoveCopyPaste (Level,FileType,PathInTree,FileName,FileNameToShow);
|
||||
Brw_PutIconsRemoveCopyPaste (Level,PathInTree,FileName,FileNameToShow);
|
||||
}
|
||||
|
||||
/***** Indentation depending on level, icon, and file/folder name *****/
|
||||
|
@ -5216,15 +5219,13 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,
|
|||
if (AdminDocsZone || AdminMarks)
|
||||
{
|
||||
if (RowSetAsHidden) // this row is marked as hidden
|
||||
Brw_PutIconShow (Level,FileType,
|
||||
PathInTree,FileName,FileNameToShow);
|
||||
Brw_PutIconShow (Level,PathInTree,FileName,FileNameToShow);
|
||||
else // this row is not marked as hidden
|
||||
Brw_PutIconHide (Level,FileType,
|
||||
PathInTree,FileName,FileNameToShow);
|
||||
Brw_PutIconHide (Level,PathInTree,FileName,FileNameToShow);
|
||||
}
|
||||
|
||||
/***** File or folder icon *****/
|
||||
if (FileType == Brw_IS_FOLDER)
|
||||
if (Gbl.FileBrowser.FileType == Brw_IS_FOLDER)
|
||||
/* Icon with folder */
|
||||
Brw_PutIconFolder (Level,ExpandTree,
|
||||
PathInTree,FileName,FileNameToShow);
|
||||
|
@ -5242,7 +5243,7 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,
|
|||
Brw_PutIconNewFileOrFolder ();
|
||||
|
||||
/* File or folder name */
|
||||
Brw_WriteFileName (Level,FileMetadata.IsPublic,FileType,
|
||||
Brw_WriteFileName (Level,FileMetadata.IsPublic,
|
||||
PathInTree,FileName,FileNameToShow);
|
||||
|
||||
/* End of the column */
|
||||
|
@ -5252,16 +5253,16 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,
|
|||
|
||||
if (AdminMarks)
|
||||
/***** Header and footer rows *****/
|
||||
Mrk_GetAndWriteNumRowsHeaderAndFooter (FileType,PathInTree,FileName);
|
||||
Mrk_GetAndWriteNumRowsHeaderAndFooter (Gbl.FileBrowser.FileType,PathInTree,FileName);
|
||||
|
||||
if (AssignmentsZone && Level == 1)
|
||||
/***** Start and end dates of assignment *****/
|
||||
Brw_WriteDatesAssignment ();
|
||||
else
|
||||
/***** File date and size *****/
|
||||
Brw_WriteFileSizeAndDate (FileType,&FileMetadata);
|
||||
Brw_WriteFileSizeAndDate (&FileMetadata);
|
||||
|
||||
if (FileType == Brw_IS_FOLDER)
|
||||
if (Gbl.FileBrowser.FileType == Brw_IS_FOLDER)
|
||||
{
|
||||
/***** Put icon to download ZIP of folder *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">",Gbl.RowEvenOdd);
|
||||
|
@ -5308,22 +5309,22 @@ void Brw_SetFullPathInTree (const char *PathInTreeUntilFileOrFolder,const char *
|
|||
/****************** Put icons to remove, copy and paste **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Brw_PutIconsRemoveCopyPaste (unsigned Level,Brw_FileType_t FileType,
|
||||
static void Brw_PutIconsRemoveCopyPaste (unsigned Level,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow)
|
||||
{
|
||||
/***** Icon to remove folder, file or link *****/
|
||||
if (FileType == Brw_IS_FOLDER)
|
||||
if (Gbl.FileBrowser.FileType == Brw_IS_FOLDER)
|
||||
/* Icon to remove a folder */
|
||||
Brw_PutIconRemoveDir (PathInTree,FileName,FileNameToShow);
|
||||
else // File or link
|
||||
/* Icon to remove a file or link */
|
||||
Brw_PutIconRemoveFile (FileType,PathInTree,FileName,FileNameToShow);
|
||||
Brw_PutIconRemoveFile (PathInTree,FileName,FileNameToShow);
|
||||
|
||||
/***** Icon to copy *****/
|
||||
Brw_PutIconCopy (FileType,PathInTree,FileName,FileNameToShow);
|
||||
Brw_PutIconCopy (PathInTree,FileName,FileNameToShow);
|
||||
|
||||
/***** Icon to paste *****/
|
||||
if (FileType == Brw_IS_FOLDER)
|
||||
if (Gbl.FileBrowser.FileType == Brw_IS_FOLDER)
|
||||
{
|
||||
if (Brw_CheckIfCanPasteIn (Level))
|
||||
/* Icon to paste active */
|
||||
|
@ -5345,19 +5346,25 @@ static bool Brw_CheckIfCanPasteIn (unsigned Level)
|
|||
{
|
||||
char PathDstWithFile[PATH_MAX+1];
|
||||
|
||||
/* If there is nothing in clipboard... */
|
||||
/***** If not in a folder... *****/
|
||||
if (Gbl.FileBrowser.FileType != Brw_IS_FOLDER)
|
||||
return false;
|
||||
|
||||
/***** If there is nothing in clipboard... *****/
|
||||
if (Gbl.FileBrowser.Clipboard.FileBrowser == Brw_UNKNOWN)
|
||||
return false;
|
||||
|
||||
/* Do not paste a link in marks... */
|
||||
/***** Do not paste a link in marks... *****/
|
||||
if (Gbl.FileBrowser.Clipboard.FileType == Brw_IS_LINK &&
|
||||
(Gbl.FileBrowser.Type == Brw_ADMI_MARKS_CRS ||
|
||||
Gbl.FileBrowser.Type == Brw_ADMI_MARKS_GRP))
|
||||
return false;
|
||||
|
||||
/**** If I can not create elements into this folder... *****/
|
||||
if (!Brw_CheckIfICanCreateIntoFolder (Level))
|
||||
return false; // Pasting into top level of assignments is forbidden
|
||||
|
||||
/**** If we are in the same tree of the clipboard... *****/
|
||||
if (Gbl.FileBrowser.Clipboard.IsThisTree) // We are in the same tree of the clipboard ==> we can paste or not depending on the subtree
|
||||
{
|
||||
/***** Construct the name of the file or folder destination *****/
|
||||
|
@ -5372,10 +5379,9 @@ static bool Brw_CheckIfCanPasteIn (unsigned Level)
|
|||
/*****************************************************************************/
|
||||
/******************* Write link e icon to remove a file **********************/
|
||||
/*****************************************************************************/
|
||||
// FileType can be Brw_IS_FILE or Brw_IS_LINK
|
||||
// Gbl.FileBrowser.FileType can be Brw_IS_FILE or Brw_IS_LINK
|
||||
|
||||
static void Brw_PutIconRemoveFile (Brw_FileType_t FileType,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow)
|
||||
static void Brw_PutIconRemoveFile (const char *PathInTree,const char *FileName,const char *FileNameToShow)
|
||||
{
|
||||
extern const char *Txt_Remove_FILE_OR_LINK_X;
|
||||
|
||||
|
@ -5401,7 +5407,7 @@ static void Brw_PutIconRemoveFile (Brw_FileType_t FileType,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
Brw_ParamListFiles (FileType,PathInTree,FileName);
|
||||
Brw_ParamListFiles (Gbl.FileBrowser.FileType,PathInTree,FileName);
|
||||
sprintf (Gbl.Title,Txt_Remove_FILE_OR_LINK_X,FileNameToShow);
|
||||
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/remove-on64x64.png\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
|
@ -5465,8 +5471,7 @@ static void Brw_PutIconRemoveDir (const char *PathInTree,const char *FileName,co
|
|||
/************** Write link e icon to copy a file o a folder ******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Brw_PutIconCopy (Brw_FileType_t FileType,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow)
|
||||
static void Brw_PutIconCopy (const char *PathInTree,const char *FileName,const char *FileNameToShow)
|
||||
{
|
||||
extern const char *Txt_Copy_FOLDER_FILE_OR_LINK_X;
|
||||
extern const char *Txt_Copy_not_allowed;
|
||||
|
@ -5493,7 +5498,7 @@ static void Brw_PutIconCopy (Brw_FileType_t FileType,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
Brw_ParamListFiles (FileType,PathInTree,FileName);
|
||||
Brw_ParamListFiles (Gbl.FileBrowser.FileType,PathInTree,FileName);
|
||||
sprintf (Gbl.Title,Txt_Copy_FOLDER_FILE_OR_LINK_X,FileNameToShow);
|
||||
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/copy_on16x16.gif\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
|
@ -5693,8 +5698,7 @@ static void Brw_IndentDependingOnLevel (unsigned Level)
|
|||
/****************** Put link and icon to show file or folder *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Brw_PutIconShow (unsigned Level,Brw_FileType_t FileType,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow)
|
||||
static void Brw_PutIconShow (unsigned Level,const char *PathInTree,const char *FileName,const char *FileNameToShow)
|
||||
{
|
||||
extern const char *Txt_Show_FOLDER_FILE_OR_LINK_X;
|
||||
|
||||
|
@ -5709,7 +5713,7 @@ static void Brw_PutIconShow (unsigned Level,Brw_FileType_t FileType,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
Brw_ParamListFiles (FileType,PathInTree,FileName);
|
||||
Brw_ParamListFiles (Gbl.FileBrowser.FileType,PathInTree,FileName);
|
||||
sprintf (Gbl.Title,Txt_Show_FOLDER_FILE_OR_LINK_X,FileNameToShow);
|
||||
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/eye-slash-%s64x64.png\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
|
@ -5727,8 +5731,7 @@ static void Brw_PutIconShow (unsigned Level,Brw_FileType_t FileType,
|
|||
/****************** Put link and icon to hide file or folder *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Brw_PutIconHide (unsigned Level,Brw_FileType_t FileType,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow)
|
||||
static void Brw_PutIconHide (unsigned Level,const char *PathInTree,const char *FileName,const char *FileNameToShow)
|
||||
{
|
||||
extern const char *Txt_Hide_FOLDER_FILE_OR_LINK_X;
|
||||
|
||||
|
@ -5743,7 +5746,7 @@ static void Brw_PutIconHide (unsigned Level,Brw_FileType_t FileType,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
Brw_ParamListFiles (FileType,PathInTree,FileName);
|
||||
Brw_ParamListFiles (Gbl.FileBrowser.FileType,PathInTree,FileName);
|
||||
sprintf (Gbl.Title,Txt_Hide_FOLDER_FILE_OR_LINK_X,FileNameToShow);
|
||||
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/eye-%s64x64.png\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
|
@ -5948,7 +5951,7 @@ static void Brw_PutIconFile (unsigned Size,Brw_FileType_t FileType,const char *F
|
|||
/********** Write central part with the name of a file or folder *************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Brw_WriteFileName (unsigned Level,bool IsPublic,Brw_FileType_t FileType,
|
||||
static void Brw_WriteFileName (unsigned Level,bool IsPublic,
|
||||
const char *PathInTree,const char *FileName,const char *FileNameToShow)
|
||||
{
|
||||
extern const char *Txt_Check_marks_in_file_X;
|
||||
|
@ -5956,7 +5959,7 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic,Brw_FileType_t FileT
|
|||
extern const char *Txt_Public_open_educational_resource_OER_for_everyone;
|
||||
|
||||
/***** Name and link of the folder, file or link *****/
|
||||
if (FileType == Brw_IS_FOLDER)
|
||||
if (Gbl.FileBrowser.FileType == Brw_IS_FOLDER)
|
||||
{
|
||||
/***** Start of cell *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_MIDDLE",
|
||||
|
@ -5981,10 +5984,6 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic,Brw_FileType_t FileT
|
|||
case Brw_ADMI_WORKS_CRS:
|
||||
Usr_PutHiddenParUsrCodAll (Brw_ActRenameFolder[Gbl.FileBrowser.Type],Gbl.Usrs.Select.All);
|
||||
Usr_PutParamOtherUsrCodEncrypted ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<strong>%ld</strong>",
|
||||
Gbl.FileBrowser.Asg.AsgCod); // TODO: Remove this!!!!!!!!!!!!!!!
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -6050,7 +6049,7 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic,Brw_FileType_t FileT
|
|||
default:
|
||||
break;
|
||||
}
|
||||
Brw_ParamListFiles (FileType,PathInTree,FileName);
|
||||
Brw_ParamListFiles (Gbl.FileBrowser.FileType,PathInTree,FileName);
|
||||
|
||||
/* Link to the form and to the file */
|
||||
sprintf (Gbl.Title,(Gbl.FileBrowser.Type == Brw_SHOW_MARKS_CRS ||
|
||||
|
@ -6079,7 +6078,8 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic,Brw_FileType_t FileT
|
|||
/*********************** Which filename must be shown? ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Brw_GetFileNameToShow (Brw_FileBrowser_t FileBrowser,unsigned Level,Brw_FileType_t FileType,
|
||||
static void Brw_GetFileNameToShow (Brw_FileBrowser_t FileBrowser,unsigned Level,
|
||||
Brw_FileType_t FileType,
|
||||
const char *FileName,char *FileNameToShow)
|
||||
{
|
||||
extern const char *Txt_ROOT_FOLDER_EXTERNAL_NAMES[Brw_NUM_TYPES_FILE_BROWSER];
|
||||
|
@ -6157,9 +6157,7 @@ static void Brw_WriteDatesAssignment (void)
|
|||
UniqueId++;
|
||||
|
||||
/***** Write start date *****/
|
||||
fprintf (Gbl.F.Out,"<table>"
|
||||
"<tr>"
|
||||
"<td id=\"asg_start_date_%u\" class=\"%s RIGHT_MIDDLE\">",
|
||||
fprintf (Gbl.F.Out,"<span id=\"asg_start_date_%u\" class=\"%s RIGHT_MIDDLE\">",
|
||||
UniqueId,
|
||||
Gbl.FileBrowser.Asg.Open ? "ASG_LST_DATE_GREEN" :
|
||||
"ASG_LST_DATE_RED");
|
||||
|
@ -6168,20 +6166,18 @@ static void Brw_WriteDatesAssignment (void)
|
|||
"</script>",
|
||||
UniqueId,
|
||||
(long) Gbl.FileBrowser.Asg.TimeUTC[Asg_START_TIME],Txt_Today);
|
||||
fprintf (Gbl.F.Out,"</td>");
|
||||
fprintf (Gbl.F.Out,"</span>");
|
||||
|
||||
/***** Arrow *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\" style=\"width:20px;\">"
|
||||
"<img src=\"%s/arrow%s16x12.gif\""
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/arrow%s16x12.gif\""
|
||||
" alt=\"\" title=\"\""
|
||||
" class=\"ICO20x15B\" />"
|
||||
"</td>",
|
||||
" class=\"ICO20x15\" />",
|
||||
Gbl.Prefs.IconsURL,
|
||||
Gbl.FileBrowser.Asg.Open ? "green" :
|
||||
"red");
|
||||
|
||||
/***** Write end date *****/
|
||||
fprintf (Gbl.F.Out,"<td id=\"asg_end_date_%u\" class=\"%s RIGHT_MIDDLE\">",
|
||||
fprintf (Gbl.F.Out,"<span id=\"asg_end_date_%u\" class=\"%s RIGHT_MIDDLE\">",
|
||||
UniqueId,
|
||||
Gbl.FileBrowser.Asg.Open ? "ASG_LST_DATE_GREEN" :
|
||||
"ASG_LST_DATE_RED");
|
||||
|
@ -6190,9 +6186,7 @@ static void Brw_WriteDatesAssignment (void)
|
|||
"</script>",
|
||||
UniqueId,
|
||||
(long) Gbl.FileBrowser.Asg.TimeUTC[Asg_END_TIME],Txt_Today);
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>"
|
||||
"</table>");
|
||||
fprintf (Gbl.F.Out,"</span>");
|
||||
}
|
||||
else
|
||||
fprintf (Gbl.F.Out," (%s)",
|
||||
|
@ -6204,14 +6198,14 @@ static void Brw_WriteDatesAssignment (void)
|
|||
/****************** Write size and date of a file or folder ******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Brw_WriteFileSizeAndDate (Brw_FileType_t FileType,struct FileMetadata *FileMetadata)
|
||||
static void Brw_WriteFileSizeAndDate (struct FileMetadata *FileMetadata)
|
||||
{
|
||||
extern const char *Txt_Today;
|
||||
static unsigned UniqueId = 0;
|
||||
char FileSizeStr[Fil_MAX_BYTES_FILE_SIZE_STRING];
|
||||
|
||||
/***** Write the file size *****/
|
||||
if (FileType == Brw_IS_FILE)
|
||||
if (Gbl.FileBrowser.FileType == Brw_IS_FILE)
|
||||
Fil_WriteFileSizeBrief ((double) FileMetadata->Size,FileSizeStr);
|
||||
else
|
||||
FileSizeStr[0] = '\0';
|
||||
|
@ -6225,8 +6219,8 @@ static void Brw_WriteFileSizeAndDate (Brw_FileType_t FileType,struct FileMetadat
|
|||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE COLOR%u\">"
|
||||
" ",
|
||||
Gbl.FileBrowser.TxtStyle,Gbl.RowEvenOdd);
|
||||
if (FileType == Brw_IS_FILE ||
|
||||
FileType == Brw_IS_LINK)
|
||||
if (Gbl.FileBrowser.FileType == Brw_IS_FILE ||
|
||||
Gbl.FileBrowser.FileType == Brw_IS_LINK)
|
||||
{
|
||||
UniqueId++;
|
||||
fprintf (Gbl.F.Out,"<span id=\"filedate%u\"></span>"
|
||||
|
@ -6324,7 +6318,8 @@ void Brw_AskRemFileFromTree (void)
|
|||
Brw_ParamListFiles (Gbl.FileBrowser.FileType,Gbl.FileBrowser.Priv.PathInTreeUntilFilFolLnk,Gbl.FileBrowser.FilFolLnkName);
|
||||
|
||||
/* Show question */
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.FileType,Gbl.FileBrowser.Level,Gbl.FileBrowser.FileType,
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.FileType,Gbl.FileBrowser.Level,
|
||||
Gbl.FileBrowser.FileType,
|
||||
Gbl.FileBrowser.FilFolLnkName,FileNameToShow);
|
||||
sprintf (Gbl.Message,Txt_Do_you_really_want_to_remove_FILE_OR_LINK_X,
|
||||
FileNameToShow);
|
||||
|
@ -6568,11 +6563,9 @@ void Brw_CopyFromFileBrowser (void)
|
|||
|
||||
/***** Put the path in the clipboard *****/
|
||||
if (Brw_GetMyClipboard ())
|
||||
Brw_UpdatePathInClipboard (Gbl.FileBrowser.FileType,
|
||||
Gbl.FileBrowser.Priv.FullPathInTree);
|
||||
Brw_UpdatePathInClipboard ();
|
||||
else
|
||||
Brw_AddPathToClipboards (Gbl.FileBrowser.FileType,
|
||||
Gbl.FileBrowser.Priv.FullPathInTree);
|
||||
Brw_AddPathToClipboards ();
|
||||
|
||||
/***** Show again file browser *****/
|
||||
Brw_ShowAgainFileBrowserOrWorks ();
|
||||
|
@ -6796,7 +6789,8 @@ static void Brw_WriteCurrentClipboard (void)
|
|||
LevelClipboard++;
|
||||
if (LevelClipboard) // Is not the root folder?
|
||||
{
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Clipboard.FileBrowser,LevelClipboard,Gbl.FileBrowser.Clipboard.FileType,
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Clipboard.FileBrowser,LevelClipboard,
|
||||
Gbl.FileBrowser.Clipboard.FileType,
|
||||
Gbl.FileBrowser.Clipboard.FileName,FileNameToShow);
|
||||
switch (Gbl.FileBrowser.Clipboard.FileType)
|
||||
{
|
||||
|
@ -6961,7 +6955,7 @@ static bool Brw_CheckIfClipboardIsInThisTree (void)
|
|||
/***************************** Add path to clipboards ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path)
|
||||
static void Brw_AddPathToClipboards (void)
|
||||
{
|
||||
long Cod = Brw_GetCodForClipboard ();
|
||||
long WorksUsrCod = Brw_GetWorksUsrCodForClipboard ();
|
||||
|
@ -6976,7 +6970,7 @@ static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path)
|
|||
"'%u','%s')",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) Gbl.FileBrowser.Type,
|
||||
Cod,WorksUsrCod,
|
||||
(unsigned) FileType,Path);
|
||||
(unsigned) Gbl.FileBrowser.FileType,Gbl.FileBrowser.Priv.FullPathInTree);
|
||||
DB_QueryINSERT (Query,"can not add source of copy to clipboard");
|
||||
}
|
||||
|
||||
|
@ -6984,7 +6978,7 @@ static void Brw_AddPathToClipboards (Brw_FileType_t FileType,const char *Path)
|
|||
/************************** Update path in my clipboard **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Brw_UpdatePathInClipboard (Brw_FileType_t FileType,const char *Path)
|
||||
static void Brw_UpdatePathInClipboard (void)
|
||||
{
|
||||
long Cod = Brw_GetCodForClipboard ();
|
||||
long WorksUsrCod = Brw_GetWorksUsrCodForClipboard ();
|
||||
|
@ -6996,7 +6990,8 @@ static void Brw_UpdatePathInClipboard (Brw_FileType_t FileType,const char *Path)
|
|||
"FileType='%u',Path='%s'"
|
||||
" WHERE UsrCod='%ld'",
|
||||
(unsigned) Gbl.FileBrowser.Type,
|
||||
Cod,WorksUsrCod,(unsigned) FileType,Path,
|
||||
Cod,WorksUsrCod,
|
||||
(unsigned) Gbl.FileBrowser.FileType,Gbl.FileBrowser.Priv.FullPathInTree,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
DB_QueryUPDATE (Query,"can not update source of copy in clipboard");
|
||||
}
|
||||
|
@ -8015,7 +8010,8 @@ void Brw_ShowFormFileBrowser (void)
|
|||
if (Brw_CheckIfICanCreateIntoFolder (Gbl.FileBrowser.Level))
|
||||
{
|
||||
/***** Name of the folder to be shown ****/
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,Gbl.FileBrowser.FileType,
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,
|
||||
Gbl.FileBrowser.FileType,
|
||||
Gbl.FileBrowser.FilFolLnkName,FileNameToShow);
|
||||
|
||||
/***** 1. Form to create a new folder *****/
|
||||
|
@ -8092,7 +8088,7 @@ static void Brw_PutFormToCreateAFolder (const char *FileNameToShow)
|
|||
"%s: "
|
||||
"</label>"
|
||||
"<input type=\"text\" name=\"NewFolderName\""
|
||||
" size=\"32\" maxlength=\"40\" value=\"\" />",
|
||||
" size=\"30\" maxlength=\"40\" value=\"\" />",
|
||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Folder);
|
||||
|
||||
/* Button to send and end frame *****/
|
||||
|
@ -8421,7 +8417,8 @@ void Brw_RecFolderFileBrowser (void)
|
|||
PathCompleteInTreeIncludingFolder,false,Brw_LICENSE_DEFAULT);
|
||||
|
||||
/* The folder has been created sucessfully */
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,Brw_IS_FOLDER,
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,
|
||||
Brw_IS_FOLDER,
|
||||
Gbl.FileBrowser.FilFolLnkName,FileNameToShow);
|
||||
sprintf (Gbl.Message,Txt_The_folder_X_has_been_created_inside_the_folder_Y,
|
||||
Gbl.FileBrowser.NewFilFolLnkName,FileNameToShow);
|
||||
|
@ -8721,7 +8718,8 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType)
|
|||
/* Show message of confirmation */
|
||||
if (UploadType == Brw_CLASSIC_UPLOAD)
|
||||
{
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,Brw_IS_FOLDER,
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,
|
||||
Brw_IS_FOLDER,
|
||||
Gbl.FileBrowser.FilFolLnkName,FileNameToShow);
|
||||
sprintf (Gbl.Message,Txt_The_file_X_has_been_placed_inside_the_folder_Y,
|
||||
Gbl.FileBrowser.NewFilFolLnkName,
|
||||
|
@ -8901,7 +8899,8 @@ void Brw_RecLinkFileBrowser (void)
|
|||
PathCompleteInTreeIncludingFile,false,Brw_LICENSE_DEFAULT);
|
||||
|
||||
/* Show message of confirmation */
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,Brw_IS_FOLDER,
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,
|
||||
Brw_IS_FOLDER,
|
||||
Gbl.FileBrowser.FilFolLnkName,FileNameToShow);
|
||||
sprintf (Gbl.Message,Txt_The_link_X_has_been_placed_inside_the_folder_Y,
|
||||
FileName,FileNameToShow);
|
||||
|
@ -9055,7 +9054,8 @@ void Brw_SetDocumentAsVisible (void)
|
|||
Brw_RemoveAffectedClipboards (Gbl.FileBrowser.Type,Gbl.Usrs.Me.UsrDat.UsrCod,Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
|
||||
/***** Write message of confirmation *****/
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,Gbl.FileBrowser.FileType,
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,
|
||||
Gbl.FileBrowser.FileType,
|
||||
Gbl.FileBrowser.FilFolLnkName,FileNameToShow);
|
||||
sprintf (Gbl.Message,Txt_FILE_FOLDER_OR_LINK_X_is_now_visible,
|
||||
FileNameToShow);
|
||||
|
@ -9087,7 +9087,8 @@ void Brw_SetDocumentAsHidden (void)
|
|||
Brw_RemoveAffectedClipboards (Gbl.FileBrowser.Type,Gbl.Usrs.Me.UsrDat.UsrCod,Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
|
||||
/***** Write confirmation message *****/
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,Gbl.FileBrowser.FileType,
|
||||
Brw_GetFileNameToShow (Gbl.FileBrowser.Type,Gbl.FileBrowser.Level,
|
||||
Gbl.FileBrowser.FileType,
|
||||
Gbl.FileBrowser.FilFolLnkName,FileNameToShow);
|
||||
sprintf (Gbl.Message,Txt_FILE_FOLDER_OR_LINK_X_is_now_hidden,FileNameToShow);
|
||||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||
|
@ -11116,11 +11117,23 @@ static bool Brw_CheckIfICanEditFileOrFolder (unsigned Level)
|
|||
return Brw_CheckIfICanModifySharedFileOrFolder ();
|
||||
case Brw_ADMI_ASSIG_USR:
|
||||
case Brw_ADMI_ASSIG_CRS:
|
||||
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)));
|
||||
if (Gbl.FileBrowser.Asg.AsgCod <= 0) // If folder does not correspond to any assignment
|
||||
return true; // Folder can be removed or renamed
|
||||
|
||||
if (Gbl.FileBrowser.Asg.Hidden) // If assignment is hidden
|
||||
return false; // Do not edit anything in hidden assigments
|
||||
|
||||
if (Gbl.FileBrowser.FileType == Brw_IS_FOLDER && // The main folder of an assignment
|
||||
Level == 1)
|
||||
return false; // Do not remove / rename main folder of assigment
|
||||
|
||||
if (!Gbl.FileBrowser.Asg.IBelongToCrsOrGrps) // If I do not belong to course / groups of this assignment
|
||||
return false; // I can not edit this assignment
|
||||
|
||||
return ((Gbl.Usrs.Me.LoggedRole == Rol_STUDENT && // Students can edit
|
||||
Gbl.FileBrowser.Asg.Open) || // inside open assignments
|
||||
Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER); // Teachers can edit
|
||||
// inside open or closed assignments
|
||||
default:
|
||||
return Brw_FileBrowserIsEditable[Gbl.FileBrowser.Type];
|
||||
}
|
||||
|
@ -11132,6 +11145,10 @@ static bool Brw_CheckIfICanEditFileOrFolder (unsigned Level)
|
|||
|
||||
static bool Brw_CheckIfICanCreateIntoFolder (unsigned Level)
|
||||
{
|
||||
/***** If not in a folder... *****/
|
||||
if (Gbl.FileBrowser.FileType != Brw_IS_FOLDER)
|
||||
return false;
|
||||
|
||||
/***** I must be student, teacher, admin or superuser to edit *****/
|
||||
if (Gbl.Usrs.Me.MaxRole < Rol_STUDENT)
|
||||
return false;
|
||||
|
@ -11145,12 +11162,23 @@ static bool Brw_CheckIfICanCreateIntoFolder (unsigned Level)
|
|||
{
|
||||
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))));
|
||||
if (Level == 0) // If root folder
|
||||
return false; // Folders of assigments (level 1)
|
||||
// can only be created automatically
|
||||
|
||||
if (Gbl.FileBrowser.Asg.AsgCod <= 0) // If folder does not correspond to any assignment
|
||||
return false; // Do not create anything out of assignments
|
||||
|
||||
if (Gbl.FileBrowser.Asg.Hidden) // If assignment is hidden
|
||||
return false; // Do not create anything in hidden assigments
|
||||
|
||||
if (!Gbl.FileBrowser.Asg.IBelongToCrsOrGrps) // If I do not belong to course / groups of this assignment
|
||||
return false; // I can not create anything inside this assignment
|
||||
|
||||
return ((Gbl.Usrs.Me.LoggedRole == Rol_STUDENT && // Students can create
|
||||
Gbl.FileBrowser.Asg.Open) || // inside open assignments
|
||||
Gbl.Usrs.Me.LoggedRole >= Rol_TEACHER); // Teachers can create
|
||||
// inside open or closed assignments
|
||||
default:
|
||||
return Brw_FileBrowserIsEditable[Gbl.FileBrowser.Type];
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "swad_database.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_help.h"
|
||||
#include "swad_hierarchy.h"
|
||||
#include "swad_institution.h"
|
||||
#include "swad_logo.h"
|
||||
#include "swad_parameter.h"
|
||||
|
@ -645,7 +646,7 @@ void Ins_ShowInssOfCurrentCty (void)
|
|||
Ins_GetListInstitutions (Gbl.CurrentCty.Cty.CtyCod,Ins_GET_EXTRA_DATA);
|
||||
|
||||
/***** Write menu to select country *****/
|
||||
Deg_WriteMenuAllCourses ();
|
||||
Hie_WriteMenuAllCourses ();
|
||||
|
||||
/***** List institutions *****/
|
||||
Ins_ListInstitutions ();
|
||||
|
@ -1791,7 +1792,7 @@ void Ins_ChangeInsCtyInConfig (void)
|
|||
Gbl.CurrentCty.Cty.CtyCod = NewCty.CtyCod;
|
||||
|
||||
/***** Initialize again current course, degree, centre... *****/
|
||||
Deg_InitCurrentCourse ();
|
||||
Hie_InitCurrentCourse ();
|
||||
|
||||
/***** Write message to show the change made *****/
|
||||
sprintf (Gbl.Message,Txt_The_country_of_the_institution_X_has_changed_to_Y,
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include "swad_database.h"
|
||||
#include "swad_exam.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_hierarchy.h"
|
||||
#include "swad_logo.h"
|
||||
#include "swad_MFU.h"
|
||||
#include "swad_notice.h"
|
||||
|
@ -853,7 +854,7 @@ static void Lay_WritePageTopHeading (void)
|
|||
/* 2nd. row, 2nd. column: degree and course */
|
||||
fprintf (Gbl.F.Out,"<div id=\"head_row_2_hierarchy\">");
|
||||
Lay_WriteBreadcrumb ();
|
||||
Deg_WriteBigNameCtyInsCtrDegCrs ();
|
||||
Hie_WriteBigNameCtyInsCtrDegCrs ();
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
|
||||
/* 2nd. row, 3rd. column */
|
||||
|
@ -879,7 +880,7 @@ static void Lay_WritePageTopHeading (void)
|
|||
static void Lay_WriteBreadcrumb (void)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<div id=\"breadcrumb\">");
|
||||
Deg_WriteHierarchyBreadcrumb ();
|
||||
Hie_WriteHierarchyBreadcrumb ();
|
||||
Crs_WriteSelectorMyCourses ();
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
}
|
||||
|
|
|
@ -34,8 +34,8 @@
|
|||
#include "swad_config.h"
|
||||
#include "swad_connected.h"
|
||||
#include "swad_database.h"
|
||||
#include "swad_degree.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_hierarchy.h"
|
||||
#include "swad_MFU.h"
|
||||
#include "swad_parameter.h"
|
||||
#include "swad_preference.h"
|
||||
|
@ -114,7 +114,7 @@ int main (int argc, char *argv[])
|
|||
{
|
||||
Par_CreateListOfParams ();
|
||||
Par_GetMainParameters ();
|
||||
Deg_InitCurrentCourse ();
|
||||
Hie_InitCurrentCourse ();
|
||||
|
||||
if (!Gbl.WebService.IsWebService)
|
||||
{
|
||||
|
|
21
swad_text.c
21
swad_text.c
|
@ -51047,27 +51047,6 @@ const char *Txt_Write_a_message =
|
|||
"Escrever uma mensagem";
|
||||
#endif
|
||||
|
||||
const char *Txt_Write_a_message_to_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"Escriu un missatge a %s";
|
||||
#elif L==2
|
||||
"Schreiben Sie %s eine Nachricht";
|
||||
#elif L==3
|
||||
"Write a message to %s";
|
||||
#elif L==4
|
||||
"Escribir un mensaje a %s";
|
||||
#elif L==5
|
||||
"Écrire un message à %s";
|
||||
#elif L==6
|
||||
"Escribir un mensaje a %s"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Scrivi un messaggio a %s";
|
||||
#elif L==8
|
||||
"Napisz wiadomość do %s";
|
||||
#elif L==9
|
||||
"Escrever uma mensagem para %s";
|
||||
#endif
|
||||
|
||||
const char *Txt_Wrong_file_type =
|
||||
#if L==1
|
||||
"Tipus d'arxiu incorrecte.";
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include "swad_global.h"
|
||||
#include "swad_group.h"
|
||||
#include "swad_help.h"
|
||||
#include "swad_hierarchy.h"
|
||||
#include "swad_ID.h"
|
||||
#include "swad_MFU.h"
|
||||
#include "swad_nickname.h"
|
||||
|
@ -2572,7 +2573,7 @@ static void Usr_SetUsrRoleAndPrefs (void)
|
|||
Gbl.CurrentCrs.Crs.CrsCod = Gbl.Usrs.Me.UsrLast.LastCrs;
|
||||
|
||||
/* Initialize again current course, degree, centre... */
|
||||
Deg_InitCurrentCourse ();
|
||||
Hie_InitCurrentCourse ();
|
||||
|
||||
/* Get again my role in this course */
|
||||
Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB = Rol_GetRoleInCrs (Gbl.CurrentCrs.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
|
@ -3250,7 +3251,7 @@ static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
|
|||
"</tr>");
|
||||
|
||||
/***** Write degrees which are administrated by this administrator *****/
|
||||
Deg_GetAndWriteInsCtrDegAdminBy (UsrDat->UsrCod,
|
||||
Hie_GetAndWriteInsCtrDegAdminBy (UsrDat->UsrCod,
|
||||
Gbl.Usrs.Listing.WithPhotos ? Usr_NUM_MAIN_FIELDS_DATA_ADM :
|
||||
Usr_NUM_MAIN_FIELDS_DATA_ADM-1);
|
||||
}
|
||||
|
|
|
@ -105,6 +105,7 @@ cp -f /home/acanas/swad/swad/swad /var/www/cgi-bin/
|
|||
#include "swad_database.h"
|
||||
#include "swad_file_browser.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_hierarchy.h"
|
||||
#include "swad_ID.h"
|
||||
#include "swad_notice.h"
|
||||
#include "swad_notification.h"
|
||||
|
@ -1356,7 +1357,7 @@ int swad__getCourseInfo (struct soap *soap,
|
|||
strcpy (getCourseInfo->infoSrc,NamesInWSForInfoSrc[InfoSrc]);
|
||||
|
||||
/***** Set paths *****/
|
||||
Deg_InitCurrentCourse ();
|
||||
Hie_InitCurrentCourse ();
|
||||
|
||||
/***** Get info text *****/
|
||||
getCourseInfo->infoTxt = NULL;
|
||||
|
@ -4605,7 +4606,7 @@ int swad__getFile (struct soap *soap,
|
|||
}
|
||||
|
||||
/***** Set paths *****/
|
||||
Deg_InitCurrentCourse ();
|
||||
Hie_InitCurrentCourse ();
|
||||
Brw_SetFullPathInTree (FileMetadata.PathInTreeUntilFilFolLnk,
|
||||
FileMetadata.FilFolLnkName);
|
||||
Brw_InitializeFileBrowser ();
|
||||
|
|
Loading…
Reference in New Issue