diff --git a/app/models/legislation/annotation.rb b/app/models/legislation/annotation.rb index f9f612abd..05eaad6f5 100644 --- a/app/models/legislation/annotation.rb +++ b/app/models/legislation/annotation.rb @@ -14,7 +14,7 @@ class Legislation::Annotation < ActiveRecord::Base validates :draft_version, presence: true validates :author, presence: true - before_save :store_range + before_save :store_range, :store_context after_create :create_first_comment def store_range @@ -24,6 +24,26 @@ class Legislation::Annotation < ActiveRecord::Base self.range_end_offset = ranges.first["endOffset"] end + def store_context + begin + html = draft_version.body_html + doc = Nokogiri::HTML(html) + + selector_start = "/html/body/#{range_start}" + el_start = doc.at_xpath(selector_start) + + selector_end = "/html/body/#{range_end}" + el_end = doc.at_xpath(selector_end) + + remainder_el_start = el_start.text[0 .. range_start_offset-1] unless range_start_offset.zero? + remainder_el_end = el_end.text[range_end_offset .. -1] + + self.context = "#{remainder_el_start}#{quote}#{remainder_el_end}" + rescue + "#{quote}" + end + end + def create_first_comment comments.create(body: self.text, user: self.author) end diff --git a/app/views/legislation/annotations/index.html.erb b/app/views/legislation/annotations/index.html.erb index 87efc3614..d7b1ae3fe 100644 --- a/app/views/legislation/annotations/index.html.erb +++ b/app/views/legislation/annotations/index.html.erb @@ -20,7 +20,7 @@ <% end %>