From 0af5ba19099849fa6fc6e3b8f924b63c40e79cff Mon Sep 17 00:00:00 2001 From: acanas Date: Fri, 19 Jan 2024 10:41:49 +0100 Subject: [PATCH] Version 23.57: Jan 19, 2024 Responsive design and changes in layout in assignment/works file browsers. --- css/{swad23.55.css => swad23.57.css} | 23 +- swad_browser.c | 378 ++++++++++----------------- swad_browser_size.c | 11 +- swad_changelog.h | 6 +- swad_info.c | 16 +- swad_program.c | 2 +- swad_project.c | 6 +- swad_text.c | 84 ++---- swad_timetable.c | 8 +- 9 files changed, 207 insertions(+), 327 deletions(-) rename css/{swad23.55.css => swad23.57.css} (99%) diff --git a/css/swad23.55.css b/css/swad23.57.css similarity index 99% rename from css/swad23.55.css rename to css/swad23.57.css index 76d0cfdd5..6fd0e216d 100644 --- a/css/swad23.55.css +++ b/css/swad23.57.css @@ -2226,7 +2226,7 @@ a:hover img.CENTER_PHOTO_SHOW padding:10px; border-radius:2px; box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 2px 1px -2px rgba(0,0,0,0.2), 0 1px 5px 0 rgba(0,0,0,0.12); - text-align:center; + /* text-align:center; */ overflow:hidden; } .FRAME_WHITE, @@ -2742,14 +2742,17 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;} .FILENAME_BIG_PINK {color:#202020; font-size:18pt; font-weight:bold;} .FILENAME_BIG_DARK {color:#f0f0f0; font-size:18pt; font-weight:bold;} -.BROWSER_TITLE {color:#94745C; font-size:12pt; font-weight:bold;} +.BROWSER_TITLE {color:#94745C; font-size:12pt; font-weight:bold;} .BROWSER_TITLE_LIGHT {color:#D5C6BB; font-size:12pt; font-weight:bold;} -.BROWSER_SUBTITLE {color:#94745C; font-size:12pt;} -.BROWSER_TABLE +.BROWSER_SUBTITLE {color:#94745C; font-size:11pt;} + +.BROWSER_ASG_WRK { - box-sizing:border-box; - width:100%; + display: inline-block; + text-align: left; + vertical-align: top; } + .LST_WHITE, .LST_GREY, .LST_PURPLE, @@ -2818,7 +2821,7 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;} .LST_EDIT_REC_HID_DARK {color:#89be87; border-color:#404040;} .PUBLIC_FILE {max-width:400px;} -.LICENSE {max-width:400px;} +.LICENSE {max-width:400px;} /************** Paragraph (margin on top and bottom of a div) ****************/ .PAR @@ -4403,7 +4406,7 @@ legend {font-size:12pt;} /************************** Owner of assignments and works *******************/ .OWNER_WORKS_PHOTO { - box-sizing:border-box; + display:inline-block; width:64px; text-align:left; vertical-align:top; @@ -4412,7 +4415,7 @@ legend {font-size:12pt;} { display:inline-block; box-sizing:border-box; - width:100px; + width:160px; text-align:left; vertical-align:top; white-space:nowrap; @@ -5258,7 +5261,7 @@ button.PAG_DARK:hover, .PAG_CUR_DARK {background-color:#707070;} display: table; width: 100%; } -.TBL_SCROLL th,.TBL_SCROLL td {padding: 2px;} +.TBL_SCROLL th,.TBL_SCROLL td {padding: 1px;} .Ind_TBL td,.Ind_TBL th { diff --git a/swad_browser.c b/swad_browser.c index badf87c61..9562fea29 100644 --- a/swad_browser.c +++ b/swad_browser.c @@ -2785,9 +2785,9 @@ static void Brw_ShowFileBrowsersAsgWrkCrs (void) Brw_WriteTopBeforeShowingFileBrowser (); /***** Begin box and table *****/ - Box_BoxTableBegin ("100%",Txt_Assignments_and_other_works, - Brw_PutIconShowFigure,NULL, - Hlp_FILES_Homework_for_teachers,Box_NOT_CLOSABLE,0); + Box_BoxBegin (NULL,Txt_Assignments_and_other_works, + Brw_PutIconShowFigure,NULL, + Hlp_FILES_Homework_for_teachers,Box_NOT_CLOSABLE); /***** List the assignments and works of the selected users *****/ Ptr = Gbl.Usrs.Selected.List[Rol_UNK]; @@ -2804,31 +2804,31 @@ static void Brw_ShowFileBrowsersAsgWrkCrs (void) Gbl.Usrs.Other.UsrDat.Accepted = Enr_CheckIfUsrHasAcceptedInCurrentCrs (&Gbl.Usrs.Other.UsrDat); - /***** Show a row with the data of the owner of the works *****/ - HTM_TR_Begin (NULL); + /***** Owner of the works *****/ + Brw_ShowDataOwnerAsgWrk (&Gbl.Usrs.Other.UsrDat); - Brw_ShowDataOwnerAsgWrk (&Gbl.Usrs.Other.UsrDat); + /***** File browsers *****/ + HTM_DIV_Begin ("class=\"BROWSER_ASG_WRK\""); - HTM_TD_Begin ("class=\"LT\""); + /* File browser with the assignments */ + Gbl.FileBrowser.Type = Brw_ADMI_ASG_CRS; + Brw_InitializeFileBrowser (); + Brw_ShowFileBrowser (); - /* Show the tree with the assignments */ - Gbl.FileBrowser.Type = Brw_ADMI_ASG_CRS; - Brw_InitializeFileBrowser (); - Brw_ShowFileBrowser (); + /* File browser with the works */ + Gbl.FileBrowser.Type = Brw_ADMI_WRK_CRS; + Brw_InitializeFileBrowser (); + Brw_ShowFileBrowser (); - /* Show the tree with the works */ - Gbl.FileBrowser.Type = Brw_ADMI_WRK_CRS; - Brw_InitializeFileBrowser (); - Brw_ShowFileBrowser (); + HTM_DIV_End (); - HTM_TD_End (); - - HTM_TR_End (); + HTM_BR (); + HTM_BR (); } } /***** End table and box *****/ - Box_BoxTableEnd (); + Box_BoxEnd (); /***** Put legal notice *****/ Brw_PutLegalNotice (); @@ -2999,52 +2999,48 @@ static void Brw_ShowDataOwnerAsgWrk (struct Usr_Data *UsrDat) }; /***** Show user's photo *****/ - HTM_TD_Begin ("class=\"OWNER_WORKS_PHOTO\""); + HTM_DIV_Begin ("class=\"OWNER_WORKS_PHOTO\""); Pho_ShowUsrPhotoIfAllowed (UsrDat, ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM); - HTM_TD_End (); + HTM_DIV_End (); /***** Begin form to send a message to this user *****/ - HTM_TD_Begin ("class=\"LT\""); + HTM_DIV_Begin ("class=\"OWNER_WORKS_DATA MSG_AUT_%s\"",The_GetSuffix ()); - HTM_DIV_Begin ("class=\"OWNER_WORKS_DATA MSG_AUT_%s\"",The_GetSuffix ()); + if (!NextAction[UsrDat->Roles.InCurrentCrs]) + Err_WrongRoleExit (); + Frm_BeginForm (NextAction[UsrDat->Roles.InCurrentCrs]); + Usr_PutParUsrCodEncrypted (UsrDat->EnUsrCod); - if (!NextAction[UsrDat->Roles.InCurrentCrs]) - Err_WrongRoleExit (); - Frm_BeginForm (NextAction[UsrDat->Roles.InCurrentCrs]); - Usr_PutParUsrCodEncrypted (UsrDat->EnUsrCod); + /***** Show user's ID *****/ + ID_WriteUsrIDs (UsrDat,NULL); - /***** Show user's ID *****/ - ID_WriteUsrIDs (UsrDat,NULL); + /***** Show user's name *****/ + HTM_BR (); - /***** Show user's name *****/ + HTM_BUTTON_Submit_Begin (Txt_View_record_for_this_course, + "class=\"BT_LINK\""); + HTM_Txt (UsrDat->Surname1); + if (UsrDat->Surname2[0]) + HTM_TxtF (" %s",UsrDat->Surname2); + if (UsrDat->FrstName[0]) + HTM_TxtF (", %s",UsrDat->FrstName); + HTM_BUTTON_End (); + + /***** Show user's email *****/ + if (UsrDat->Email[0]) + { HTM_BR (); + HTM_A_Begin ("href=\"mailto:%s\" target=\"_blank\"" + " class=\"MSG_AUT_%s\"", + UsrDat->Email,The_GetSuffix ()); + HTM_Txt (UsrDat->Email); + HTM_A_End (); + } - HTM_BUTTON_Submit_Begin (Txt_View_record_for_this_course, - "class=\"BT_LINK\""); - HTM_Txt (UsrDat->Surname1); - if (UsrDat->Surname2[0]) - HTM_TxtF (" %s",UsrDat->Surname2); - if (UsrDat->FrstName[0]) - HTM_TxtF (", %s",UsrDat->FrstName); - HTM_BUTTON_End (); + Frm_EndForm (); - /***** Show user's email *****/ - if (UsrDat->Email[0]) - { - HTM_BR (); - HTM_A_Begin ("href=\"mailto:%s\" target=\"_blank\"" - " class=\"MSG_AUT_%s\"", - UsrDat->Email,The_GetSuffix ()); - HTM_Txt (UsrDat->Email); - HTM_A_End (); - } - - Frm_EndForm (); - - HTM_DIV_End (); - - HTM_TD_End (); + HTM_DIV_End (); } /*****************************************************************************/ @@ -3108,10 +3104,8 @@ static void Brw_ShowFileBrowser (void) extern const char *Hlp_FILES_Private; extern const char *Hlp_FILES_Shared; extern const char *Hlp_FILES_Homework_for_students; - extern const char *Hlp_FILES_Homework_for_teachers; extern const char *Hlp_FILES_Marks; extern const char *Hlp_FILES_Briefcase; - // extern const char *Hlp_ASSESSMENT_Projects; extern const char *Txt_Documents_area; extern const char *Txt_Documents_management_area; @@ -3122,9 +3116,6 @@ static void Brw_ShowFileBrowser (void) extern const char *Txt_Assignments_area; extern const char *Txt_Works_area; extern const char *Txt_Temporary_private_storage_area; - extern const char *Txt_Project_documents; - extern const char *Txt_Project_assessment; - extern const char *Txt_NULL; extern const char *Txt_Files_of_marks_must_contain_a_table_in_HTML_format_; static const char **Brw_TitleOfFileBrowser[Brw_NUM_TYPES_FILE_BROWSER] = @@ -3136,7 +3127,7 @@ static void Brw_ShowFileBrowser (void) [Brw_ADMI_SHR_CRS] = &Txt_Shared_files_area, [Brw_ADMI_SHR_GRP] = &Txt_Shared_files_area, [Brw_ADMI_WRK_USR] = &Txt_Works_area, - [Brw_ADMI_WRK_CRS] = &Txt_Works_area, + [Brw_ADMI_WRK_CRS] = NULL, [Brw_ADMI_MRK_CRS] = &Txt_Marks_management_area, [Brw_ADMI_BRF_USR] = &Txt_Temporary_private_storage_area, [Brw_SHOW_DOC_GRP] = &Txt_Documents_area, @@ -3144,7 +3135,7 @@ static void Brw_ShowFileBrowser (void) [Brw_SHOW_MRK_GRP] = &Txt_Marks_area, [Brw_ADMI_MRK_GRP] = &Txt_Marks_management_area, [Brw_ADMI_ASG_USR] = &Txt_Assignments_area, - [Brw_ADMI_ASG_CRS] = &Txt_Assignments_area, + [Brw_ADMI_ASG_CRS] = NULL, [Brw_SHOW_DOC_DEG] = &Txt_Documents_area, [Brw_ADMI_DOC_DEG] = &Txt_Documents_management_area, [Brw_SHOW_DOC_CTR] = &Txt_Documents_area, @@ -3156,8 +3147,8 @@ static void Brw_ShowFileBrowser (void) [Brw_ADMI_SHR_INS] = &Txt_Shared_files_area, [Brw_ADMI_TCH_CRS] = &Txt_Teachers_files_area, [Brw_ADMI_TCH_GRP] = &Txt_Teachers_files_area, - [Brw_ADMI_DOC_PRJ] = &Txt_Project_documents, - [Brw_ADMI_ASS_PRJ] = &Txt_Project_assessment, + [Brw_ADMI_DOC_PRJ] = NULL, + [Brw_ADMI_ASS_PRJ] = NULL, }; static const char **Brw_HelpOfFileBrowser[Brw_NUM_TYPES_FILE_BROWSER] = { @@ -3168,7 +3159,7 @@ static void Brw_ShowFileBrowser (void) [Brw_ADMI_SHR_CRS] = &Hlp_FILES_Shared, [Brw_ADMI_SHR_GRP] = &Hlp_FILES_Shared, [Brw_ADMI_WRK_USR] = &Hlp_FILES_Homework_for_students, - [Brw_ADMI_WRK_CRS] = &Hlp_FILES_Homework_for_teachers, + [Brw_ADMI_WRK_CRS] = NULL, [Brw_ADMI_MRK_CRS] = &Hlp_FILES_Marks, [Brw_ADMI_BRF_USR] = &Hlp_FILES_Briefcase, [Brw_SHOW_DOC_GRP] = &Hlp_FILES_Documents, @@ -3176,7 +3167,7 @@ static void Brw_ShowFileBrowser (void) [Brw_SHOW_MRK_GRP] = &Hlp_FILES_Marks, [Brw_ADMI_MRK_GRP] = &Hlp_FILES_Marks, [Brw_ADMI_ASG_USR] = &Hlp_FILES_Homework_for_students, - [Brw_ADMI_ASG_CRS] = &Hlp_FILES_Homework_for_teachers, + [Brw_ADMI_ASG_CRS] = NULL, [Brw_SHOW_DOC_DEG] = &Hlp_FILES_Documents, [Brw_ADMI_DOC_DEG] = &Hlp_FILES_Documents, [Brw_SHOW_DOC_CTR] = &Hlp_FILES_Documents, @@ -3188,8 +3179,8 @@ static void Brw_ShowFileBrowser (void) [Brw_ADMI_SHR_INS] = &Hlp_FILES_Shared, [Brw_ADMI_TCH_CRS] = &Hlp_FILES_Private, [Brw_ADMI_TCH_GRP] = &Hlp_FILES_Private, - [Brw_ADMI_DOC_PRJ] = &Txt_NULL, - [Brw_ADMI_ASS_PRJ] = &Txt_NULL, + [Brw_ADMI_DOC_PRJ] = NULL, + [Brw_ADMI_ASS_PRJ] = NULL, }; struct Brw_NumObjects Removed; char FileBrowserSectionId[32]; @@ -3219,36 +3210,38 @@ static void Brw_ShowFileBrowser (void) "file_browser_%u",Gbl.FileBrowser.Id); HTM_SECTION_Begin (FileBrowserSectionId); - Box_BoxBegin ("100%",*Brw_TitleOfFileBrowser[Gbl.FileBrowser.Type], - Brw_PutIconsFileBrowser,NULL, - *Brw_HelpOfFileBrowser[Gbl.FileBrowser.Type],Box_NOT_CLOSABLE); + if (Brw_TitleOfFileBrowser[Gbl.FileBrowser.Type]) + Box_BoxBegin (NULL,*Brw_TitleOfFileBrowser[Gbl.FileBrowser.Type], + Brw_PutIconsFileBrowser,NULL, + *Brw_HelpOfFileBrowser[Gbl.FileBrowser.Type],Box_NOT_CLOSABLE); - /***** Subtitle *****/ - Brw_WriteSubtitleOfFileBrowser (); + /***** Subtitle *****/ + Brw_WriteSubtitleOfFileBrowser (); - /***** List recursively the directory *****/ - HTM_TABLE_Begin ("BROWSER_TABLE"); - Str_Copy (Gbl.FileBrowser.FilFolLnk.Path, - Brw_RootFolderInternalNames[Gbl.FileBrowser.Type], - sizeof (Gbl.FileBrowser.FilFolLnk.Path) - 1); - Str_Copy (Gbl.FileBrowser.FilFolLnk.Name,".", - sizeof (Gbl.FileBrowser.FilFolLnk.Name) - 1); - Brw_SetFullPathInTree (); - Gbl.FileBrowser.FilFolLnk.Type = Brw_IS_FOLDER; - if (Brw_WriteRowFileBrowser (0,"1", - false, // Tree not contracted - Brw_ICON_TREE_NOTHING)) - Brw_ListDir (1,"1", - false, // Tree not contracted - Gbl.FileBrowser.Path.RootFolder, - Brw_RootFolderInternalNames[Gbl.FileBrowser.Type]); - HTM_TABLE_End (); + /***** List recursively the directory *****/ + HTM_TABLE_Begin ("TBL_SCROLL"); + Str_Copy (Gbl.FileBrowser.FilFolLnk.Path, + Brw_RootFolderInternalNames[Gbl.FileBrowser.Type], + sizeof (Gbl.FileBrowser.FilFolLnk.Path) - 1); + Str_Copy (Gbl.FileBrowser.FilFolLnk.Name,".", + sizeof (Gbl.FileBrowser.FilFolLnk.Name) - 1); + Brw_SetFullPathInTree (); + Gbl.FileBrowser.FilFolLnk.Type = Brw_IS_FOLDER; + if (Brw_WriteRowFileBrowser (0,"1", + false, // Tree not contracted + Brw_ICON_TREE_NOTHING)) + Brw_ListDir (1,"1", + false, // Tree not contracted + Gbl.FileBrowser.Path.RootFolder, + Brw_RootFolderInternalNames[Gbl.FileBrowser.Type]); + HTM_TABLE_End (); - /***** Show and store number of documents found *****/ - BrwSiz_ShowAndStoreSizeOfFileBrowser (Size); + /***** Show and store number of documents found *****/ + BrwSiz_ShowAndStoreSizeOfFileBrowser (Size); /***** End box *****/ - Box_BoxEnd (); + if (Brw_TitleOfFileBrowser[Gbl.FileBrowser.Type]) + Box_BoxEnd (); HTM_SECTION_End (); @@ -3476,27 +3469,57 @@ static void Brw_UpdateLastAccess (void) static void Brw_WriteSubtitleOfFileBrowser (void) { - extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_institution; - extern const char *Txt_accessible_for_reading_and_writing_by_administrators_of_the_institution; - extern const char *Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_institution; - extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_center; extern const char *Txt_accessible_for_reading_and_writing_by_administrators_of_the_center; - extern const char *Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_center; - extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_degree; extern const char *Txt_accessible_for_reading_and_writing_by_administrators_of_the_degree; - extern const char *Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_degree; - extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_course; - extern const char *Txt_accessible_only_for_reading_by_students_of_the_group_and_teachers_of_the_course; - extern const char *Txt_accessible_for_reading_and_writing_by_teachers_of_the_course; - extern const char *Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_course; - extern const char *Txt_accessible_for_reading_and_writing_by_students_of_the_group_and_teachers_of_the_course; - extern const char *Txt_accessible_for_reading_and_writing_by_you_and_the_teachers_of_the_course; - extern const char *Txt_accessible_only_for_reading_by_you_and_the_teachers_of_the_course; - extern const char *Txt_the_marks_of_a_student_chosen_at_random_; + extern const char *Txt_accessible_for_reading_and_writing_by_administrators_of_the_institution; extern const char *Txt_accessible_for_reading_and_writing_by_project_members; extern const char *Txt_accessible_for_reading_and_writing_by_project_tutors_and_evaluators; + extern const char *Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_center; + extern const char *Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_degree; + extern const char *Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_institution; + extern const char *Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_course; + extern const char *Txt_accessible_for_reading_and_writing_by_students_of_the_group_and_teachers_of_the_course; + extern const char *Txt_accessible_for_reading_and_writing_by_teachers_of_the_course; + extern const char *Txt_accessible_for_reading_and_writing_by_you_and_the_course_teachers; + extern const char *Txt_accessible_only_for_reading_by_the_student_and_the_course_teachers; + extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_institution; + extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_center; + extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_degree; + extern const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_course; + extern const char *Txt_accessible_only_for_reading_by_students_of_the_group_and_teachers_of_the_course; extern const char *Txt_nobody_else_can_access_this_content; - char Subtitle[1024 + Usr_MAX_BYTES_FULL_NAME]; + static const char **Brw_SubtitleOfFileBrowser[Brw_NUM_TYPES_FILE_BROWSER] = + { + [Brw_UNKNOWN ] = NULL, + [Brw_SHOW_DOC_CRS] = &Txt_accessible_only_for_reading_by_students_and_teachers_of_the_course, + [Brw_SHOW_MRK_CRS] = &Txt_accessible_only_for_reading_by_the_student_and_the_course_teachers, + [Brw_ADMI_DOC_CRS] = &Txt_accessible_for_reading_and_writing_by_teachers_of_the_course, + [Brw_ADMI_SHR_CRS] = &Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_course, + [Brw_ADMI_SHR_GRP] = &Txt_accessible_for_reading_and_writing_by_students_of_the_group_and_teachers_of_the_course, + [Brw_ADMI_WRK_USR] = &Txt_accessible_for_reading_and_writing_by_you_and_the_course_teachers, + [Brw_ADMI_WRK_CRS] = NULL, + [Brw_ADMI_MRK_CRS] = &Txt_accessible_for_reading_and_writing_by_teachers_of_the_course, + [Brw_ADMI_BRF_USR] = &Txt_nobody_else_can_access_this_content, + [Brw_SHOW_DOC_GRP] = &Txt_accessible_only_for_reading_by_students_of_the_group_and_teachers_of_the_course, + [Brw_ADMI_DOC_GRP] = &Txt_accessible_for_reading_and_writing_by_teachers_of_the_course, + [Brw_SHOW_MRK_GRP] = &Txt_accessible_only_for_reading_by_the_student_and_the_course_teachers, + [Brw_ADMI_MRK_GRP] = &Txt_accessible_for_reading_and_writing_by_teachers_of_the_course, + [Brw_ADMI_ASG_USR] = &Txt_accessible_for_reading_and_writing_by_you_and_the_course_teachers, + [Brw_ADMI_ASG_CRS] = NULL, + [Brw_SHOW_DOC_DEG] = &Txt_accessible_only_for_reading_by_students_and_teachers_of_the_degree, + [Brw_ADMI_DOC_DEG] = &Txt_accessible_for_reading_and_writing_by_administrators_of_the_degree, + [Brw_SHOW_DOC_CTR] = &Txt_accessible_only_for_reading_by_students_and_teachers_of_the_center, + [Brw_ADMI_DOC_CTR] = &Txt_accessible_for_reading_and_writing_by_administrators_of_the_center, + [Brw_SHOW_DOC_INS] = &Txt_accessible_only_for_reading_by_students_and_teachers_of_the_institution, + [Brw_ADMI_DOC_INS] = &Txt_accessible_for_reading_and_writing_by_administrators_of_the_institution, + [Brw_ADMI_SHR_DEG] = &Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_degree, + [Brw_ADMI_SHR_CTR] = &Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_center, + [Brw_ADMI_SHR_INS] = &Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_institution, + [Brw_ADMI_TCH_CRS] = &Txt_accessible_for_reading_and_writing_by_teachers_of_the_course, + [Brw_ADMI_TCH_GRP] = &Txt_accessible_for_reading_and_writing_by_teachers_of_the_course, + [Brw_ADMI_DOC_PRJ] = &Txt_accessible_for_reading_and_writing_by_project_members, + [Brw_ADMI_ASS_PRJ] = &Txt_accessible_for_reading_and_writing_by_project_tutors_and_evaluators, + }; /***** Form to change zone (course and group browsers) *****/ switch (Gbl.FileBrowser.Type) @@ -3520,123 +3543,24 @@ static void Brw_WriteSubtitleOfFileBrowser (void) } /***** Write subtitle *****/ + /* + Subtitle = NULL; switch (Gbl.FileBrowser.Type) { - case Brw_SHOW_DOC_INS: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_only_for_reading_by_students_and_teachers_of_the_institution); - break; - case Brw_ADMI_DOC_INS: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_administrators_of_the_institution); - break; - case Brw_ADMI_SHR_INS: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_institution); - break; - case Brw_SHOW_DOC_CTR: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_only_for_reading_by_students_and_teachers_of_the_center); - break; - case Brw_ADMI_DOC_CTR: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_administrators_of_the_center); - break; - case Brw_ADMI_SHR_CTR: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_center); - break; - case Brw_SHOW_DOC_DEG: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_only_for_reading_by_students_and_teachers_of_the_degree); - break; - case Brw_ADMI_DOC_DEG: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_administrators_of_the_degree); - break; - case Brw_ADMI_SHR_DEG: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_degree); - break; - case Brw_SHOW_DOC_CRS: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_only_for_reading_by_students_and_teachers_of_the_course); - break; - case Brw_SHOW_DOC_GRP: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_only_for_reading_by_students_of_the_group_and_teachers_of_the_course); - break; - case Brw_ADMI_DOC_CRS: - case Brw_ADMI_DOC_GRP: - case Brw_ADMI_TCH_CRS: - case Brw_ADMI_TCH_GRP: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_teachers_of_the_course); - break; - case Brw_ADMI_SHR_CRS: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_course); - break; - case Brw_ADMI_SHR_GRP: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_students_of_the_group_and_teachers_of_the_course); - break; - case Brw_SHOW_MRK_CRS: - case Brw_SHOW_MRK_GRP: - switch (Gbl.Usrs.Me.Role.Logged) - { - case Rol_STD: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_only_for_reading_by_you_and_the_teachers_of_the_course); - break; - case Rol_NET: - case Rol_TCH: - case Rol_SYS_ADM: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_the_marks_of_a_student_chosen_at_random_); - break; - default: - Subtitle[0] = '\0'; - Err_WrongRoleExit (); - break; - } - break; - case Brw_ADMI_MRK_CRS: - case Brw_ADMI_MRK_GRP: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_teachers_of_the_course); - break; - case Brw_ADMI_ASG_USR: - case Brw_ADMI_WRK_USR: - snprintf (Subtitle,sizeof (Subtitle),"%s
(%s)", - Gbl.Usrs.Me.UsrDat.FullName, - Txt_accessible_for_reading_and_writing_by_you_and_the_teachers_of_the_course); - break; - case Brw_ADMI_ASG_CRS: case Brw_ADMI_WRK_CRS: - snprintf (Subtitle,sizeof (Subtitle),"%s", - Gbl.Usrs.Other.UsrDat.FullName); + case Brw_ADMI_ASG_CRS: + Subtitle = Gbl.Usrs.Other.UsrDat.FullName; break; - case Brw_ADMI_DOC_PRJ: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_project_members); - break; - case Brw_ADMI_ASS_PRJ: - snprintf (Subtitle,sizeof (Subtitle),"(%s)", - Txt_accessible_for_reading_and_writing_by_project_tutors_and_evaluators); - break; - case Brw_ADMI_BRF_USR: - snprintf (Subtitle,sizeof (Subtitle),"%s
(%s)", - Gbl.Usrs.Me.UsrDat.FullName, - Txt_nobody_else_can_access_this_content); - break; - case Brw_UNKNOWN: - return; + default: + if (Brw_SubtitleOfFileBrowser[Gbl.FileBrowser.Type]) + Subtitle = *Brw_SubtitleOfFileBrowser[Gbl.FileBrowser.Type]; + break; } - if (Subtitle[0]) + */ + if (Brw_SubtitleOfFileBrowser[Gbl.FileBrowser.Type]) { HTM_DIV_Begin ("class=\"BROWSER_SUBTITLE\""); - HTM_Txt (Subtitle); + HTM_Txt (*Brw_SubtitleOfFileBrowser[Gbl.FileBrowser.Type]); HTM_DIV_End (); } } @@ -9263,20 +9187,8 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row) extern const char *Txt_Link; struct Brw_FileMetadata FileMetadata; struct Hie_Node Hie[Hie_NUM_LEVELS]; - /* - long InsCod; - long CtrCod; - long DegCod; - long CrsCod; - */ long GrpCod; Act_Action_t Action; - /* - const char *InsShortName; - const char *CtrShortName; - const char *DegShortName; - const char *CrsShortName; - */ const char *BgColor; const char *Title; char FileNameToShow[NAME_MAX + 1]; @@ -9443,8 +9355,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row) break; } - HTM_TD_Begin ("class=\"LT DAT_%s %s\"", - The_GetSuffix (),BgColor); + HTM_TD_Begin ("class=\"LT DAT_%s %s\"",The_GetSuffix (),BgColor); HTM_Txt (Title); HTM_TD_End (); @@ -9454,8 +9365,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row) FileNameToShow); /***** Write file name using path (row[1]) *****/ - HTM_TD_Begin ("class=\"LT DAT_STRONG_%s %s\"", - The_GetSuffix (),BgColor); + HTM_TD_Begin ("class=\"LT DAT_STRONG_%s %s\"",The_GetSuffix (),BgColor); /* Begin form */ Action = Brw_ActReqDatFile[Brw_FileBrowserForFoundDocs[FileMetadata.FileBrowser]]; diff --git a/swad_browser_size.c b/swad_browser_size.c index ef76727a8..26e1bf09d 100644 --- a/swad_browser_size.c +++ b/swad_browser_size.c @@ -457,7 +457,7 @@ void BrwSiz_ShowAndStoreSizeOfFileBrowser (const struct BrwSiz_BrowserSize *Size if (Brw_CheckIfFileBrowserIsEditable (Gbl.FileBrowser.Type)) { Fil_WriteFileSizeFull ((double) Size->TotalSiz,FileSizeStr); - HTM_TxtF ("%u %s; %lu %s; %lu %s; %s", + HTM_TxtF ("%u %s; %lu %s; %lu %s", Size->NumLevls, Size->NumLevls == 1 ? Txt_level : Txt_levels , @@ -466,8 +466,9 @@ void BrwSiz_ShowAndStoreSizeOfFileBrowser (const struct BrwSiz_BrowserSize *Size Txt_folders, Size->NumFiles, Size->NumFiles == 1 ? Txt_file : - Txt_files, - FileSizeStr); + Txt_files); + HTM_BR (); + HTM_Txt (FileSizeStr); if (Size->MaxQuota) { @@ -481,8 +482,8 @@ void BrwSiz_ShowAndStoreSizeOfFileBrowser (const struct BrwSiz_BrowserSize *Size Brw_DB_StoreSizeOfFileBrowser (Size); } - else - HTM_NBSP (); // Blank to occupy the same space as the text for the browser size + // else + // HTM_NBSP (); // Blank to occupy the same space as the text for the browser size HTM_DIV_End (); } diff --git a/swad_changelog.h b/swad_changelog.h index c661f8396..593367d96 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -633,10 +633,12 @@ 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.55.1 (2024-01-17)" -#define CSS_FILE "swad23.55.css" +#define Log_PLATFORM_VERSION "SWAD 23.57 (2024-01-19)" +#define CSS_FILE "swad23.57.css" #define JS_FILE "swad23.53.6.js" /* + Version 23.57: Jan 19, 2024 Responsive design and changes in layout in assignment/works file browsers. (335669 lines) + Version 23.56: Jan 18, 2024 Responsive design and changes in layout in file browsers. (335649 lines) Version 23.55.1: Jan 17, 2024 Responsive design in groups. (335787 lines) Version 23.55: Jan 16, 2024 Responsive design in exams. Changes in exam sessions and matches. (335819 lines) Version 23.54: Dec 20, 2023 Responsive design in games and matches. (335906 lines) diff --git a/swad_info.c b/swad_info.c index 02d5bee1e..990f706aa 100644 --- a/swad_info.c +++ b/swad_info.c @@ -299,15 +299,13 @@ void Inf_ShowInfo (void) if (ShowWarningNoInfo) { - if (ICanEdit) - Box_BoxBegin ("100%",Txt_INFO_TITLE[Gbl.Crs.Info.Type], - Inf_PutIconToEditInfo,&Gbl.Crs.Info.Type, - Help[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE); - else - Box_BoxBegin ("100%",Txt_INFO_TITLE[Gbl.Crs.Info.Type], - NULL,NULL, - Help[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE); - Ale_ShowAlert (Ale_INFO,Txt_No_information); + Box_BoxBegin (NULL,Txt_INFO_TITLE[Gbl.Crs.Info.Type], + ICanEdit ? Inf_PutIconToEditInfo : + NULL, + ICanEdit ? &Gbl.Crs.Info.Type : + NULL, + Help[Gbl.Crs.Info.Type],Box_NOT_CLOSABLE); + Ale_ShowAlert (Ale_INFO,Txt_No_information); Box_BoxEnd (); } } diff --git a/swad_program.c b/swad_program.c index 05ee9be81..e0a251104 100644 --- a/swad_program.c +++ b/swad_program.c @@ -292,7 +292,7 @@ void Prg_ShowAllItems (Prg_ListingType_t ListingType, if (asprintf (&Title,Txt_COURSE_program, Gbl.Hierarchy.Node[Hie_CRS].ShrtName) < 0) Err_NotEnoughMemoryExit (); - Box_BoxBegin ("100%",Title, + Box_BoxBegin (NULL,Title, FunctionToDrawContextualIcons[ListingType],NULL, Hlp_COURSE_Program,Box_NOT_CLOSABLE); free (Title); diff --git a/swad_project.c b/swad_project.c index a113e21a8..8e436d066 100644 --- a/swad_project.c +++ b/swad_project.c @@ -1343,15 +1343,15 @@ void Prj_ShowBoxWithOneProject (struct Prj_Projects *Projects) extern const char *Txt_Project; /***** Begin box *****/ - Box_BoxBegin ("100%",Projects->Prj.Title[0] ? Projects->Prj.Title : - Txt_Project, + Box_BoxBegin (NULL,Projects->Prj.Title[0] ? Projects->Prj.Title : + Txt_Project, Prj_PutIconsOnePrj,Projects, Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE); /***** Show project data *****/ HTM_FIELDSET_Begin (NULL); HTM_LEGEND (Txt_Project); - HTM_TABLE_BeginWidePadding (2); + HTM_TABLE_Begin ("TBL_SCROLL"); /***** Table head and project *****/ Projects->View = Prj_VIEW_ONE_PROJECT; diff --git a/swad_text.c b/swad_text.c index 11166d8e3..541e3d078 100644 --- a/swad_text.c +++ b/swad_text.c @@ -113,7 +113,6 @@ const unsigned Txt_Current_CGI_SWAD_Language = ((unsigned) L); -const char *Txt_NULL = NULL; const char *Txt_NEW_LINE = "\r\n"; // End of line in a file. If we put only \n the file does not look good in some Windows text editors // The HTML entity for "ß" is ß It stands for "S-Z ligature", because this symbol comes from the ligature of a Gothic S and a Z. @@ -894,50 +893,50 @@ const char *Txt_accessible_for_reading_and_writing_by_teachers_of_the_course = "accessible for reading and writing by teachers of the course"; // Çeviri lazim! #endif -const char *Txt_accessible_for_reading_and_writing_by_you_and_the_teachers_of_the_course = +const char *Txt_accessible_for_reading_and_writing_by_you_and_the_course_teachers = #if L==1 // ca - "accessible per a lectura per vostè i els professors de l'assignatura"; + "accessible per a lectura i escriptura per vosaltres i els professors de l'assignatura"; #elif L==2 // de - "zum Schreiben zugänglich für Sie und die Lehrkräfte der Kurs"; + "für Sie und die Kursleiter zum Lesen und Schreiben zugänglich"; #elif L==3 // en - "accessible for reading and writing by you and the teachers of the course"; + "accessible for reading and writing by you and the course teachers"; #elif L==4 // es - "accesible para lectura por usted y los profesores de la asignatura"; + "accesible para lectura y escritura por usted y los profesores de la asignatura"; #elif L==5 // fr - "accessible en lecture et en écriture par vous et par les étudiants et les enseignants de la matière"; + "accessible en lecture et en écriture par vous et les professeurs de la matière"; #elif L==6 // gn - "accesible para lectura por usted y los profesores de la asignatura"; // Okoteve traducción + "accesible omoñe'&etilde; ha ohai haguã nde ha umi mbo'ehára asignatura rehegua"; #elif L==7 // it - "accessibile per la lettura e la scrittura per te e i professori del corso"; + "accessibile in lettura e scrittura da te e dai docenti del corso"; #elif L==8 // pl - "dostep do odczytu i zapisu przez Ciebie i nauczycieli zajec"; + "dostępne do czytania i pisania przez Ciebie i nauczycieli kursu"; #elif L==9 // pt - "acessível para leitura e escrita por você e os professores da disciplina"; + "acessível para leitura e escrita por você e pelos professores da disciplina"; #elif L==10 // tr - "accessible for reading and writing by you and the teachers of the course"; // Çeviri lazim! + "siz ve kurs öğretmenleri tarafından okuma ve yazma için erişilebilir"; #endif -const char *Txt_accessible_only_for_reading_by_you_and_the_teachers_of_the_course = +const char *Txt_accessible_only_for_reading_by_the_student_and_the_course_teachers = #if L==1 // ca - "accesible nomè per a lectura per vosté i els professors de l'assignatura"; + "accessible només per a lectura per l'estudiant i els professors de l'assignatura"; #elif L==2 // de - "zum Lesen zugänglich für Sie und die Lehrkräfte der Kurs"; + "nur zur Lektüre durch Studierende und Kursleiter zugänglich"; #elif L==3 // en - "accessible only for reading by you and the teachers of the course"; + "accessible only for reading by the student and the course teachers"; #elif L==4 // es - "accesible solo para lectura por usted y los profesores de la asignatura"; + "accesible solo para lectura por el estudiante y los profesores de la asignatura"; #elif L==5 // fr - "accessible uniquement pour la lecture par vous et par les étudiants et les enseignants de la matière"; + "accessible uniquement à la lecture par l'étudiant et les professeurs de la matière"; #elif L==6 // gn - "accesible solo para lectura por usted y los profesores de la asignatura"; // Okoteve traducción + "ojeikekuaa omoñe'&etilde; haĝuánte temimbo'e ha mbo'ehára asignatura rehegua"; #elif L==7 // it - "accessibile solo per la lettura per te e i professori del corso"; + "accessibile in sola lettura da parte dello studente e dei docenti del corso"; #elif L==8 // pl - "dostępne tylko do czytania przez Ciebie i nauczycieli prowadzacych ten kurs"; + "dostępne wyłącznie do czytania przez ucznia i nauczyciela przedmiotu"; #elif L==9 // pt - "acessível apenas para leitura por você e os professores da disciplina"; + "acessível apenas para leitura pelo aluno e pelos professores da disciplina"; #elif L==10 // tr - "accessible only for reading by you and the teachers of the course"; // Çeviri lazim! + "yalnızca öğrenci ve ders öğretmenlerinin okuyabileceği şekilde erişilebilir"; #endif const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_center = @@ -950,7 +949,7 @@ const char *Txt_accessible_only_for_reading_by_students_and_teachers_of_the_cent #elif L==4 // es "accesible solo para lectura por estudiantes y profesores del centro"; #elif L==5 // fr - "accessible uniquement pour la lecture par les étudiants et les enseignants du center"; + "accessible uniquement à la lecture par les étudiants et les enseignants du center"; #elif L==6 // gn "accesible solo para lectura por estudiantes y profesores del centro"; // Okoteve traducción #elif L==7 // it @@ -25693,7 +25692,7 @@ const char *Txt_nobody_else_can_access_this_content = #elif L==5 // fr "personne d'autre ne peut accéder à ce contenu"; #elif L==6 // gn - "nadie más puede acceder a este contenido"; // Okoteve traducción + "avave ambue ndaikatúi oike ko contenido-pe"; #elif L==7 // it "nessun altro può accedere a questo contenuto"; #elif L==8 // pl @@ -25701,7 +25700,7 @@ const char *Txt_nobody_else_can_access_this_content = #elif L==9 // pt "ninguém mais pode acessar este conteúdo"; #elif L==10 // tr - "nobody else can access this content"; // Çeviri lazim! + "bu içeriğe başka kimse erişemez"; #endif const char *Txt_Non_editing_teachers_can_create_new_projects = @@ -48917,39 +48916,6 @@ const char *Txt_The_lower_limit_of_correct_answers_must_be_less_than_or_equal_to " must be less than or equal to the upper limit."; // Çeviri lazim! #endif -const char *Txt_the_marks_of_a_student_chosen_at_random_ = -#if L==1 // ca - "se mostrarán las calificaciones de un estudiante de la asignatura escogido al azar;
" - " si ve más de un estudiante, significa que los números de filas de cabecera o de pie no son correctos"; // Necessita traducció -#elif L==2 // de - "es wird die Bewertung eines nach dem Zufallsprinzip ausgewäten Studenten angezeigt;
" - " wenn Sie mehr als einen Student bedeutet dies, dass die Anzahl der Kopf oder Fuß von Zeilen ist nicht korrekt"; -#elif L==3 // en - "the marks of a student chosen at random from the course will be shown;
" - " if you see more than one student, it means that the number of header or footer rows is not correct"; -#elif L==4 // es - "se mostrarán las calificaciones de un estudiante de la asignatura escogido al azar;
" - " si ve más de un estudiante, significa que los números de filas de cabecera o de pie no son correctos"; -#elif L==5 // fr - "les notes d'un étudiant choisi au hasard dans la matière seront présentés;
" - " si vous voyez plus d'un étudiant, cela signifie que le nombre de ligned de la tête ou du pied n'est pas correcte"; -#elif L==6 // gn - "se mostrarán las calificaciones de un estudiante de la asignatura escogido al azar;
" - " si ve más de un estudiante, significa que los números de filas de cabecera o de pie no son correctos"; // Okoteve traducción -#elif L==7 // it - "i risultati di uno studente scelto a caso dal corso verranno mostrati;
" - " se si vede piú di uno studente, significa che il numero di righe di intestazione o a piè di pagina non è corretto"; -#elif L==8 // pl - "the marks of a student chosen at random from the course will be shown;
" - " if you see more than one student, it means that the number of header or footer rows is not correct"; // Potrzebujesz tlumaczenie -#elif L==9 // pt - "vai mostrar as notas de um estudante da disciplina escolhido ao acaso;
" - " se você vir mais de um estudante, isso significa que o número de cabeça ou pé linhas não está correto"; -#elif L==10 // tr - "the marks of a student chosen at random from the course will be shown;
" - " if you see more than one student, it means that the number of header or footer rows is not correct"; // Çeviri lazim! -#endif - const char *Txt_The_maximum_number_of_students_in_group_X_has_not_changed = // Warning: it is very important to include %s in the following sentences #if L==1 // ca "El nombre màxim d'estudiants" diff --git a/swad_timetable.c b/swad_timetable.c index 3b8aa0bbb..9f06efc6b 100644 --- a/swad_timetable.c +++ b/swad_timetable.c @@ -361,11 +361,11 @@ void Tmt_ShowClassTimeTable (void) if (Timetable.ContextualIcons.PutIconEditCrsTT || Timetable.ContextualIcons.PutIconEditOfficeHours || Timetable.ContextualIcons.PutIconPrint) - Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Timetable.Type], + Box_BoxBegin (NULL,Txt_TIMETABLE_TYPES[Timetable.Type], Tmt_PutContextualIcons,&Timetable, Help[Timetable.Type],Box_NOT_CLOSABLE); else - Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Timetable.Type], + Box_BoxBegin (NULL,Txt_TIMETABLE_TYPES[Timetable.Type], NULL,NULL, NULL,Box_NOT_CLOSABLE); @@ -464,7 +464,7 @@ void Tmt_EditCrsTimeTable (void) /***** Editable time table *****/ Timetable.Type = Tmt_COURSE_TIMETABLE; - Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Timetable.Type], + Box_BoxBegin (NULL,Txt_TIMETABLE_TYPES[Timetable.Type], Tmt_PutIconToViewCrsTT,NULL, Hlp_COURSE_Timetable,Box_NOT_CLOSABLE); Tmt_ShowTimeTable (&Timetable,Gbl.Usrs.Me.UsrDat.UsrCod); @@ -483,7 +483,7 @@ void Tmt_EditMyTutTimeTable (void) /***** Time table *****/ Timetable.Type = Tmt_TUTORING_TIMETABLE; - Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Timetable.Type], + Box_BoxBegin (NULL,Txt_TIMETABLE_TYPES[Timetable.Type], Tmt_PutIconToViewMyTT,NULL, Hlp_PROFILE_Timetable,Box_NOT_CLOSABLE); Tmt_ShowTimeTable (&Timetable,Gbl.Usrs.Me.UsrDat.UsrCod);