Commit 134036ebcb6bad31ffce9436afa4ba8d81c0797b
1 parent
1f5c99ee
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
saving selected content
Showing
5 changed files
with
44 additions
and
8 deletions
Show diff stats
plugins/comment_paragraph/lib/comment_paragraph_plugin.rb
| @@ -19,7 +19,8 @@ class CommentParagraphPlugin < Noosfero::Plugin | @@ -19,7 +19,8 @@ class CommentParagraphPlugin < Noosfero::Plugin | ||
| 19 | arr = [] | 19 | arr = [] |
| 20 | arr << hidden_field_tag('comment[id]', comment.id) | 20 | arr << hidden_field_tag('comment[id]', comment.id) |
| 21 | arr << hidden_field_tag('comment[paragraph_id]', paragraph_id) if paragraph_id | 21 | arr << hidden_field_tag('comment[paragraph_id]', paragraph_id) if paragraph_id |
| 22 | - arr << hidden_field_tag('comment[comment_paragraph_selected_area]', comment.comment_paragraph_selected_area) if comment.comment_paragraph_selected_area | 22 | + arr << hidden_field_tag('comment[comment_paragraph_selected_area]', comment.comment_paragraph_selected_area) unless comment.comment_paragraph_selected_area.blank? |
| 23 | + arr << hidden_field_tag('comment[comment_paragraph_selected_content]', comment.comment_paragraph_selected_content) unless comment.comment_paragraph_selected_content.blank? | ||
| 23 | arr | 24 | arr |
| 24 | } | 25 | } |
| 25 | end | 26 | end |
plugins/comment_paragraph/lib/ext/comment.rb
| @@ -3,14 +3,20 @@ require_dependency 'comment' | @@ -3,14 +3,20 @@ require_dependency 'comment' | ||
| 3 | class Comment | 3 | class Comment |
| 4 | 4 | ||
| 5 | scope :without_paragraph, :conditions => {:paragraph_id => nil } | 5 | scope :without_paragraph, :conditions => {:paragraph_id => nil } |
| 6 | - | 6 | + |
| 7 | settings_items :comment_paragraph_selected_area, :type => :string | 7 | settings_items :comment_paragraph_selected_area, :type => :string |
| 8 | - | 8 | + settings_items :comment_paragraph_selected_content, :type => :string |
| 9 | + | ||
| 9 | scope :in_paragraph, proc { |paragraph_id| { | 10 | scope :in_paragraph, proc { |paragraph_id| { |
| 10 | :conditions => ['paragraph_id = ?', paragraph_id] | 11 | :conditions => ['paragraph_id = ?', paragraph_id] |
| 11 | } | 12 | } |
| 12 | } | 13 | } |
| 13 | 14 | ||
| 14 | - attr_accessible :paragraph_id, :comment_paragraph_selected_area, :id | 15 | + attr_accessible :paragraph_id, :comment_paragraph_selected_area, :id, :comment_paragraph_selected_content |
| 16 | + | ||
| 17 | + before_validation do |comment| | ||
| 18 | + comment.comment_paragraph_selected_area = nil if comment.comment_paragraph_selected_area.blank? | ||
| 19 | + comment.comment_paragraph_selected_content = nil if comment_paragraph_selected_content.blank? | ||
| 20 | + end | ||
| 15 | 21 | ||
| 16 | end | 22 | end |
plugins/comment_paragraph/public/comment_paragraph_macro.js
| @@ -40,6 +40,12 @@ jQuery(document).ready(function($) { | @@ -40,6 +40,12 @@ jQuery(document).ready(function($) { | ||
| 40 | return false; | 40 | return false; |
| 41 | }); | 41 | }); |
| 42 | 42 | ||
| 43 | + //Clears all old selected_area and selected_content after submit comment | ||
| 44 | + $('[name|=commit]').click(function(){ | ||
| 45 | + $('.selected_area').val(""); | ||
| 46 | + $('.selected_content').val(""); | ||
| 47 | + }); | ||
| 48 | + | ||
| 43 | $('#cancel-comment').die(); | 49 | $('#cancel-comment').die(); |
| 44 | $(document.body).on("click", '#cancel-comment', function(){ | 50 | $(document.body).on("click", '#cancel-comment', function(){ |
| 45 | $("div.side-comment").hide(); | 51 | $("div.side-comment").hide(); |
| @@ -51,7 +57,7 @@ jQuery(document).ready(function($) { | @@ -51,7 +57,7 @@ jQuery(document).ready(function($) { | ||
| 51 | div.addClass('opened'); | 57 | div.addClass('opened'); |
| 52 | } | 58 | } |
| 53 | } | 59 | } |
| 54 | - | 60 | + |
| 55 | rangy.init(); | 61 | rangy.init(); |
| 56 | cssApplier = rangy.createCssClassApplier("commented-area", {normalize: false}); | 62 | cssApplier = rangy.createCssClassApplier("commented-area", {normalize: false}); |
| 57 | //Add marked text bubble | 63 | //Add marked text bubble |
| @@ -164,9 +170,9 @@ jQuery(document).ready(function($) { | @@ -164,9 +170,9 @@ jQuery(document).ready(function($) { | ||
| 164 | } catch(e) { | 170 | } catch(e) { |
| 165 | return; | 171 | return; |
| 166 | } | 172 | } |
| 173 | + form = $('#page-comment-form-' + paragraphId).find('form'); | ||
| 167 | 174 | ||
| 168 | //Register the area the has been selected at input.selected_area | 175 | //Register the area the has been selected at input.selected_area |
| 169 | - form = $('#page-comment-form-' + paragraphId).find('form'); | ||
| 170 | if (form.find('input.selected_area').length === 0){ | 176 | if (form.find('input.selected_area').length === 0){ |
| 171 | $('<input>').attr({ | 177 | $('<input>').attr({ |
| 172 | class: 'selected_area', | 178 | class: 'selected_area', |
| @@ -177,8 +183,20 @@ jQuery(document).ready(function($) { | @@ -177,8 +183,20 @@ jQuery(document).ready(function($) { | ||
| 177 | }else{ | 183 | }else{ |
| 178 | form.find('input.selected_area').val(selected_area) | 184 | form.find('input.selected_area').val(selected_area) |
| 179 | } | 185 | } |
| 186 | + //Register the content being selected at input.comment_paragraph_selected_content | ||
| 187 | + var selected_content = getSelectionText(); | ||
| 188 | + if(selected_content.length > 0) | ||
| 189 | + if (form.find('input.selected_content').length === 0){ | ||
| 190 | + $('<input>').attr({ | ||
| 191 | + class: 'selected_content', | ||
| 192 | + type: 'hidden', | ||
| 193 | + name: 'comment[comment_paragraph_selected_content]', | ||
| 194 | + value: selected_content | ||
| 195 | + }).appendTo(form) | ||
| 196 | + }else{ | ||
| 197 | + form.find('input.selected_content').val(selected_content) | ||
| 198 | + } | ||
| 180 | rootElement.focus(); | 199 | rootElement.focus(); |
| 181 | - | ||
| 182 | }); | 200 | }); |
| 183 | 201 | ||
| 184 | function processAnchor(){ | 202 | function processAnchor(){ |
plugins/comment_paragraph/test/unit/comment_paragraph_plugin_test.rb
| 1 | require File.dirname(__FILE__) + '/../test_helper' | 1 | require File.dirname(__FILE__) + '/../test_helper' |
| 2 | +include ActionView::Helpers::FormTagHelper | ||
| 2 | 3 | ||
| 3 | class CommentParagraphPluginTest < ActiveSupport::TestCase | 4 | class CommentParagraphPluginTest < ActiveSupport::TestCase |
| 4 | 5 | ||
| @@ -25,4 +26,13 @@ class CommentParagraphPluginTest < ActiveSupport::TestCase | @@ -25,4 +26,13 @@ class CommentParagraphPluginTest < ActiveSupport::TestCase | ||
| 25 | assert plugin.stylesheet? | 26 | assert plugin.stylesheet? |
| 26 | end | 27 | end |
| 27 | 28 | ||
| 29 | + should 'not add comment_paragraph_selected_area if comment_paragraph_selected_area is blank' do | ||
| 30 | + comment = Comment.new | ||
| 31 | + comment.comment_paragraph_selected_area = "" | ||
| 32 | + comment.paragraph_id = 2 | ||
| 33 | + cpp = CommentParagraphPlugin.new | ||
| 34 | + prok = cpp.comment_form_extra_contents({:comment=>comment, :paragraph_id=>4}) | ||
| 35 | + assert_nil /comment_paragraph_selected_area/.match(prok.call.inspect) | ||
| 36 | + end | ||
| 37 | + | ||
| 28 | end | 38 | end |
plugins/comment_paragraph/views/comment/comment_extra.html.erb
| 1 | <input type="hidden" value="<%= comment.comment_paragraph_selected_area%>" class="paragraph_comment_area" /> | 1 | <input type="hidden" value="<%= comment.comment_paragraph_selected_area%>" class="paragraph_comment_area" /> |
| 2 | -<input type="hidden" value="<%= comment.paragraph_id%>" class="paragraph_id" /> | 2 | +<input type="hidden" value="<%= comment.paragraph_id%>" class="paragraph_id" /><input type="hidden" value="<%= comment.comment_paragraph_selected_content%>" class="paragraph_selected_content" /> |
| 3 | +<input type="hidden" value="<%= comment.comment_paragraph_selected_content%>" class="paragraph_selected_content" /> |