diff --git a/app/controllers/annotations_controller.rb b/app/controllers/annotations_controller.rb index 67d579757..6e6ea47b7 100644 --- a/app/controllers/annotations_controller.rb +++ b/app/controllers/annotations_controller.rb @@ -91,17 +91,8 @@ def destroy def update_annotations medium = Medium.find_by(id: params[:mediumId]) - # Get the right annotations - annotations = if medium.annotations_visible?(current_user) - Annotation.where(medium: medium, - visible_for_teacher: true).or( - Annotation.where(medium: medium, - user: current_user) - ) - else - Annotation.where(medium: medium, - user: current_user) - end + annotations = Annotation.where(medium: medium, visible_for_teacher: true) + .or(Annotation.where(medium: medium, user: current_user)) # If annotation is associated to a comment, # the field "comment" is empty -> get it from the commontator comment diff --git a/app/views/annotations/_annotation_area.html.erb b/app/views/annotations/_annotation_area.html.erb index 2e0327e89..3bea2edd0 100644 --- a/app/views/annotations/_annotation_area.html.erb +++ b/app/views/annotations/_annotation_area.html.erb @@ -1,4 +1,4 @@ -
+
diff --git a/app/views/lectures/edit/_comments.html.erb b/app/views/lectures/edit/_comments.html.erb index 60af9b03f..ea9e4ecea 100644 --- a/app/views/lectures/edit/_comments.html.erb +++ b/app/views/lectures/edit/_comments.html.erb @@ -36,7 +36,7 @@ -
+
<%= t('admin.lecture.enable_annotation_button') %> <%= helpdesk(t('admin.lecture.enable_annotation_button_helpdesk'), false) %> diff --git a/app/views/lectures/edit/_form.html.erb b/app/views/lectures/edit/_form.html.erb index 99d5c0871..c6d441c18 100644 --- a/app/views/lectures/edit/_form.html.erb +++ b/app/views/lectures/edit/_form.html.erb @@ -120,6 +120,7 @@
<%= render partial: 'lectures/edit/announcements', diff --git a/app/views/media/feedback.html.erb b/app/views/media/feedback.html.erb index eb92333bf..843c83c2c 100644 --- a/app/views/media/feedback.html.erb +++ b/app/views/media/feedback.html.erb @@ -23,7 +23,8 @@ - + { + FactoryBot.create("valid_lesson", { lecture_id: context.lecture.id }).as("lesson"); + }); + + // Medium + cy.then(() => { + FactoryBot.create("lesson_medium", "with_video", "released", + "with_lesson_by_id", { lesson_id: context.lesson.id, description: "Soil medium" }) + .as("medium"); + }); +} + +describe("Annotations visibility", () => { + context("when teacher disables annotation sharing with teachers", () => { + it("annotations published before that are still visible to the teacher", function () { + cy.createUser("generic").as("user"); + cy.createUserAndLogin("teacher").then(teacher => createLectureLessonMedium(this, teacher)); + + cy.then(() => { + // Create new annotation + FactoryBot.create("annotation", "with_text", "shared_with_teacher", + { medium_id: this.medium.id, user_id: this.user.id }).as("annotation"); + + // Disable annotation sharing in lecture settings + cy.visit(`/lectures/${this.lecture.id}/edit#communication`); + cy.getBySelector("annotation-lecture-settings") + .should("be.visible") + .find("input[value=0]").should("have.length", 1).click(); + + // Click on submit button to save changes + cy.intercept("POST", `/lectures/${this.lecture.id}`).as("lectureUpdate"); + cy.getBySelector("lecture-pane-communication") + .find("input[type=submit]").should("have.length", 1).click(); + cy.wait("@lectureUpdate"); + + // Make sure that changes were really saved + cy.reload(); + cy.getBySelector("annotation-lecture-settings") + .should("be.visible").then(($form) => { + cy.wrap($form).find("input[value=0]").should("be.checked"); + cy.wrap($form).find("input[value=1]").should("not.be.checked"); + }); + }); + + cy.then(() => { + cy.visit(`/media/${this.medium.id}/feedback`); + + // Annotation is visible + cy.getBySelector("feedback-markers") + .children().should("have.length", 1) + .click({ force: true }); + + // Annotation can be opened in sidebar + cy.getBySelector("annotation-caption").then(($sideBar) => { + cy.i18n(`admin.annotation.${this.annotation.category}`).then((category) => { + cy.wrap($sideBar).children().first().should("contain", category); + }); + cy.wrap($sideBar).children().eq(1).should("contain", this.annotation.comment); + }); + }); + }); + }); +});