diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index b9d072f5a..e196c94c3 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -77,7 +77,8 @@ var initialize_modules = function() { App.MarkdownEditor.initialize(); App.LegislationAllegations.initialize(); App.Legislation.initialize(); - App.LegislationAnnotatable.initialize(); + if ( $(".legislation-annotatable").length ) + App.LegislationAnnotatable.initialize(); }; $(function(){ diff --git a/app/assets/javascripts/legislation_allegations.js.coffee b/app/assets/javascripts/legislation_allegations.js.coffee index e01a8b5d4..14d274243 100644 --- a/app/assets/javascripts/legislation_allegations.js.coffee +++ b/app/assets/javascripts/legislation_allegations.js.coffee @@ -3,6 +3,9 @@ App.LegislationAllegations = toggle_comments: -> $('.draft-allegation').toggleClass('comments-on'); + show_comments: -> + $('.draft-allegation').addClass('comments-on'); + initialize: -> $('.js-toggle-allegations .draft-panel').on click: (e) -> diff --git a/app/assets/javascripts/legislation_annotatable.js.coffee b/app/assets/javascripts/legislation_annotatable.js.coffee index fa5df598a..33803ab43 100644 --- a/app/assets/javascripts/legislation_annotatable.js.coffee +++ b/app/assets/javascripts/legislation_annotatable.js.coffee @@ -1,7 +1,35 @@ _t = (key) -> new Gettext().gettext(key) App.LegislationAnnotatable = + + renderAnnotationComments: (event) -> + $('.comment-box').offset(top: event.offset) + $.ajax + method: "GET" + url: event.annotation_url + "/annotations/" + event.annotation_id + "/comments" + dataType: 'script' + + viewerExtension: (viewer) -> + viewer._onHighlightMouseover = (event) -> + App.LegislationAllegations.show_comments() + $.event.trigger + type: "renderLegislationAnnotation" + annotation_id: $(event.target).data("annotation-id") + annotation_url: $(event.target).closest(".legislation-annotatable").data("legislation-annotatable-base-url") + offset: $(event.target).offset()["top"] + + + + scrollToAnchor: -> + annotationsLoaded: (annotations) -> + anchor = $(location).attr('hash') + ann_id = anchor.split("-")[-1..] + el = $("span[data-annotation-id='" + ann_id + "']") + $('html,body').animate({scrollTop: el.offset().top}) + initialize: -> + $(document).on("renderLegislationAnnotation", App.LegislationAnnotatable.renderAnnotationComments) + current_user_id = $('html').data('current-user-id') if current_user_id == "" annotator.ui.editor.Editor.template = [ @@ -27,7 +55,8 @@ App.LegislationAnnotatable = ann["legislation_draft_version_id"] = ann_id ann.permissions = ann.permissions || {} ann.permissions.admin = [] - .include(annotator.ui.main, { element: this }) + .include(annotator.ui.main, { element: this, viewerExtensions: [App.LegislationAnnotatable.viewerExtension] }) + .include(App.LegislationAnnotatable.scrollToAnchor) .include(annotator.storage.http, { prefix: base_url, urls: { search: "/annotations/search" } }) app.start().then -> diff --git a/app/controllers/legislation/annotations_controller.rb b/app/controllers/legislation/annotations_controller.rb index bd6006909..ee63574f5 100644 --- a/app/controllers/legislation/annotations_controller.rb +++ b/app/controllers/legislation/annotations_controller.rb @@ -32,6 +32,10 @@ class Legislation::AnnotationsController < ApplicationController render json: annotations_hash.to_json end + def comments + @annotation = Legislation::Annotation.find(params[:annotation_id]) + end + private def annotation_params diff --git a/app/models/abilities/everyone.rb b/app/models/abilities/everyone.rb index e29880e95..179c67350 100644 --- a/app/models/abilities/everyone.rb +++ b/app/models/abilities/everyone.rb @@ -15,7 +15,7 @@ module Abilities can [:read, :changes, :go_to_version], Legislation::DraftVersion can [:read], Legislation::Question can [:create], Legislation::Answer - can [:search, :read, :create], Legislation::Annotation + can [:search, :comments, :read, :create], Legislation::Annotation end end end diff --git a/app/views/legislation/annotations/_comments_for.html.erb b/app/views/legislation/annotations/_comments_for.html.erb new file mode 100644 index 000000000..caea782af --- /dev/null +++ b/app/views/legislation/annotations/_comments_for.html.erb @@ -0,0 +1,42 @@ +
+ +
<%= t('legislation.annotations.comments.comments_count', count: annotation.comments_count) %>
+ <%= link_to legislation_process_draft_version_annotation_path(annotation.draft_version.process, annotation.draft_version, annotation) do %> + + <% end %> +
+
+ <% annotation.comments.each do |comment| %> +
+
+

<%= comment.body %>

+
+
+
+
+ <%= link_to legislation_process_draft_version_annotation_path(annotation.draft_version.process, annotation.draft_version, annotation) do %> + <%= t('legislation.annotations.comments.see_complete') %> + <% end %> +
+
+ <%= link_to legislation_process_draft_version_annotation_path(annotation.draft_version.process, annotation.draft_version, annotation) do %> + <%= t('legislation.annotations.comments.replies_count', count: comment.children.size) %> + <% end %> +
+
+
+
+ <%= render 'comments/votes', comment: comment %> +
+
+
+
+ <% end %> + +
+ diff --git a/app/views/legislation/annotations/comments.js.erb b/app/views/legislation/annotations/comments.js.erb new file mode 100644 index 000000000..a058b00da --- /dev/null +++ b/app/views/legislation/annotations/comments.js.erb @@ -0,0 +1,2 @@ +$("#comments-box").html("<%= j render('comments_for', annotation: @annotation) %>"); + diff --git a/app/views/legislation/draft_versions/show.html.erb b/app/views/legislation/draft_versions/show.html.erb index 7a0af08a4..6bee874c4 100644 --- a/app/views/legislation/draft_versions/show.html.erb +++ b/app/views/legislation/draft_versions/show.html.erb @@ -64,6 +64,13 @@ <%= t('.text_comments') %> +
+
+ +
<%= t('.loading_comments') %>
+
+
+ diff --git a/config/locales/en.yml b/config/locales/en.yml index 1556c4403..a7fe21a91 100755 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -224,6 +224,15 @@ en: title: How I can comment this document? legislation: annotations: + comments: + see_all: See all + see_complete: See complete + comments_count: + one: "%{count} comment" + other: "%{count} comments" + replies_count: + one: "%{count} reply" + other: "%{count} replies" index: title: Comments comments_about: Comments about @@ -243,6 +252,7 @@ en: seeing_changelog_version: Revision changes summary see_text: See text draft show: + loading_comments: Loading comments seeing_version: You're seeing draft version select_draft_version: Select draft select_version_submit: see diff --git a/config/locales/es.yml b/config/locales/es.yml index bf79276c4..823115d12 100755 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -224,6 +224,15 @@ es: title: "¿Cómo puedo comentar este documento?" legislation: annotations: + comments: + see_all: Ver todos + see_complete: Ver completo + comments_count: + one: "%{count} comentario" + other: "%{count} comentarios" + replies_count: + one: "%{count} respuesta" + other: "%{count} respuestas" index: title: Comentarios see_in_context: Ver en contexto @@ -243,6 +252,7 @@ es: seeing_changelog_version: Resumen de cambios de la revisión see_text: Ver borrador del texto show: + loading_comments: Cargando comentarios seeing_version: Estás viendo la revisión select_draft_version: Seleccionar borrador select_version_submit: ver diff --git a/config/routes.rb b/config/routes.rb index 956b68f32..315ab1d6b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -103,6 +103,7 @@ Rails.application.routes.draw do get :changes resources :annotations do get :search, on: :collection + get :comments end end end