diff --git a/swad_changelog.h b/swad_changelog.h index f807bef59..c61d5b2f1 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -131,26 +131,24 @@ // TODO: Do not show e-mails of administrators and teachers in lists openly // TODO: Fix bug in marks reported by Francisco Ocaņa -// TODO: Optimize reading of parameters by doing one unique pass creating a dynamic list of parameters and their values -// This is very important when there is a big file in the middle of the list of parameters - // TODO: In Statistics > Degrees, show only degrees with students // TODO: Ask for confirmation when removing a test question? -// TODO: Put radio button to remove image when editing one test question -// TODO: Put icon to remove image when editing a list of test questions (similar to shuffle icon) +// TODO: Fix bug when clicking on Export test questions /*****************************************************************************/ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 15.175 (2016-04-03)" +#define Log_PLATFORM_VERSION "SWAD 15.175.1 (2016-04-03)" #define CSS_FILE "swad15.173.1.css" #define JS_FILE "swad15.131.3.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 15.175.2: Apr 03, 2016 Check button to remove image when editing one test question. (? lines) + Version 15.175.1: Apr 03, 2016 Code refactoring related to deleting tests of a course. (197763 lines) Version 15.175: Apr 03, 2016 Fixed bug when editing a test question. Lot of code refactoring related to edition of questions. New module swad_image for edition of images. (197754 lines) diff --git a/swad_course.c b/swad_course.c index 68e38ec2e..e16a6be38 100644 --- a/swad_course.c +++ b/swad_course.c @@ -2174,9 +2174,6 @@ static void Crs_EmptyCourseCompletely (long CrsCod) sprintf (Query,"DELETE FROM crs_info_txt WHERE CrsCod='%ld'",CrsCod); DB_QueryDELETE (Query,"can not remove info of a course"); - /***** Remove all test exams made in course *****/ - Tst_RemoveAllExamsMadeInCrs (CrsCod); - /***** Remove exam announcements in the course *****/ /* Mark all exam announcements in the course as deleted */ sprintf (Query,"UPDATE exam_announcements SET Status='%u' WHERE CrsCod='%ld'", @@ -2237,43 +2234,11 @@ static void Crs_EmptyCourseCompletely (long CrsCod) For_FORUM_COURSE_USRS,For_FORUM_COURSE_TCHS,CrsCod); DB_QueryDELETE (Query,"can not remove threads in forums of a course"); - /***** Remove tests in the course *****/ - /* Remove tests status in the course */ - sprintf (Query,"DELETE FROM tst_status WHERE CrsCod='%ld'",CrsCod); - DB_QueryDELETE (Query,"can not remove status of tests of a course"); + /***** Remove all test exams made in the course *****/ + Tst_RemoveCrsExams (CrsCod); - /* Remove test configuration of the course */ - sprintf (Query,"DELETE FROM tst_config WHERE CrsCod='%ld'", - CrsCod); - DB_QueryDELETE (Query,"can not remove configuration of tests of a course"); - - /* Remove associations between test questions and test tags in the course */ - sprintf (Query,"DELETE FROM tst_question_tags USING tst_questions,tst_question_tags" - " WHERE tst_questions.CrsCod='%ld'" - " AND tst_questions.QstCod=tst_question_tags.QstCod", - CrsCod); - DB_QueryDELETE (Query,"can not remove tags associated to questions of tests of a course"); - - /* Remove test tags in the course */ - sprintf (Query,"DELETE FROM tst_tags WHERE CrsCod='%ld'", - CrsCod); - DB_QueryDELETE (Query,"can not remove tags of test of a course"); - - /* Remove test answers in the course */ - sprintf (Query,"DELETE FROM tst_answers USING tst_questions,tst_answers" - " WHERE tst_questions.CrsCod='%ld'" - " AND tst_questions.QstCod=tst_answers.QstCod", - CrsCod); - DB_QueryDELETE (Query,"can not remove answers of tests of a course"); - - /* Remove files with images associated to test questions in the course */ - Tst_RemoveImageFilesFromQstsInCrs (CrsCod, - -1L); // All questions in the course - - /* Remove test questions in the course */ - sprintf (Query,"DELETE FROM tst_questions WHERE CrsCod='%ld'", - CrsCod); - DB_QueryDELETE (Query,"can not remove test questions of a course"); + /***** Remove all tests questions in the course *****/ + Tst_RemoveCrsTests (CrsCod); /***** Remove groups in the course *****/ /* Remove all the users in groups in the course */ diff --git a/swad_test.c b/swad_test.c index 5af292a8e..ee8b464a4 100644 --- a/swad_test.c +++ b/swad_test.c @@ -4296,23 +4296,20 @@ static void Tst_PutFormEditOneQst (char *Stem,char *Feedback) Stem); /***** Image *****/ - if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM) - { - fprintf (Gbl.F.Out,"" - "" - "" - "" - "", - The_ClassForm[Gbl.Prefs.Theme], - Txt_Image); - if (Gbl.Test.Image[0]) - Img_ShowImage (Gbl.Test.Image,"TEST_IMG_EDIT_ONE"); - Tst_PutFormToUploadNewQstImage (); - fprintf (Gbl.F.Out,"" - ""); - } + fprintf (Gbl.F.Out,"" + "" + "" + "" + "", + The_ClassForm[Gbl.Prefs.Theme], + Txt_Image); + if (Gbl.Test.Image[0]) + Img_ShowImage (Gbl.Test.Image,"TEST_IMG_EDIT_ONE"); + Tst_PutFormToUploadNewQstImage (); + fprintf (Gbl.F.Out,"" + ""); /***** Feedback *****/ fprintf (Gbl.F.Out,"" @@ -7224,11 +7221,11 @@ void Tst_RemoveExamsMadeByUsrInCrs (long UsrCod,long CrsCod) /******************* Remove all test exams made in a course ******************/ /*****************************************************************************/ -void Tst_RemoveAllExamsMadeInCrs (long CrsCod) +void Tst_RemoveCrsExams (long CrsCod) { char Query[512]; - /***** Remove exams made by the specified user *****/ + /***** Remove questions of exams made in the course *****/ sprintf (Query,"DELETE FROM tst_exam_questions" " USING tst_exams,tst_exam_questions" " WHERE tst_exams.CrsCod='%ld'" @@ -7236,8 +7233,58 @@ void Tst_RemoveAllExamsMadeInCrs (long CrsCod) CrsCod); DB_QueryDELETE (Query,"can not remove exams made in a course"); + /***** Remove exams made in the course *****/ sprintf (Query,"DELETE FROM tst_exams" " WHERE CrsCod='%ld'", CrsCod); DB_QueryDELETE (Query,"can not remove exams made in a course"); } + +/*****************************************************************************/ +/******************* Remove all test exams made in a course ******************/ +/*****************************************************************************/ + +void Tst_RemoveCrsTests (long CrsCod) + { + char Query[512]; + + /***** Remove tests status in the course *****/ + sprintf (Query,"DELETE FROM tst_status WHERE CrsCod='%ld'",CrsCod); + DB_QueryDELETE (Query,"can not remove status of tests of a course"); + + /***** Remove test configuration of the course *****/ + sprintf (Query,"DELETE FROM tst_config WHERE CrsCod='%ld'", + CrsCod); + DB_QueryDELETE (Query,"can not remove configuration of tests of a course"); + + /***** Remove associations between test questions + and test tags in the course *****/ + sprintf (Query,"DELETE FROM tst_question_tags" + " USING tst_questions,tst_question_tags" + " WHERE tst_questions.CrsCod='%ld'" + " AND tst_questions.QstCod=tst_question_tags.QstCod", + CrsCod); + DB_QueryDELETE (Query,"can not remove tags associated to questions of tests of a course"); + + /***** Remove test tags in the course *****/ + sprintf (Query,"DELETE FROM tst_tags WHERE CrsCod='%ld'", + CrsCod); + DB_QueryDELETE (Query,"can not remove tags of test of a course"); + + /***** Remove test answers in the course *****/ + sprintf (Query,"DELETE FROM tst_answers USING tst_questions,tst_answers" + " WHERE tst_questions.CrsCod='%ld'" + " AND tst_questions.QstCod=tst_answers.QstCod", + CrsCod); + DB_QueryDELETE (Query,"can not remove answers of tests of a course"); + + /***** Remove files with images associated + to test questions in the course *****/ + Tst_RemoveImageFilesFromQstsInCrs (CrsCod, + -1L); // All questions in the course + + /***** Remove test questions in the course *****/ + sprintf (Query,"DELETE FROM tst_questions WHERE CrsCod='%ld'", + CrsCod); + DB_QueryDELETE (Query,"can not remove test questions of a course"); + } diff --git a/swad_test.h b/swad_test.h index 802ed6141..1d2cb1472 100644 --- a/swad_test.h +++ b/swad_test.h @@ -166,6 +166,8 @@ void Tst_ShowMyTestResults (void); void Tst_ShowOneTestExam (void); void Tst_RemoveExamsMadeByUsrInAllCrss (long UsrCod); void Tst_RemoveExamsMadeByUsrInCrs (long UsrCod,long CrsCod); -void Tst_RemoveAllExamsMadeInCrs (long CrsCod); +void Tst_RemoveCrsExams (long CrsCod); + +void Tst_RemoveCrsTests (long CrsCod); #endif