Commit 815ab990059907fff601f5f6d60658dcbf66c504

Authored by Evandro Jr
1 parent f031d101

validation to forbbid changes to commented articles

plugins/comment_paragraph/lib/ext/article.rb
@@ -4,15 +4,14 @@ class Article @@ -4,15 +4,14 @@ class Article
4 4
5 has_many :paragraph_comments, :class_name => 'Comment', :foreign_key => 'source_id', :dependent => :destroy, :order => 'created_at asc', :conditions => [ 'paragraph_id IS NOT NULL'] 5 has_many :paragraph_comments, :class_name => 'Comment', :foreign_key => 'source_id', :dependent => :destroy, :order => 'created_at asc', :conditions => [ 'paragraph_id IS NOT NULL']
6 6
7 - validate :not_empty_paragraph_comments_removed 7 + validate :body_change_with_comments
8 8
9 - def not_empty_paragraph_comments_removed  
10 - if body && body_changed?  
11 - paragraphs_with_comments = Comment.find(:all, :select => 'distinct paragraph_id', :conditions => {:source_id => self.id}).map(&:paragraph_id).compact  
12 - paragraphs = Hpricot(body.to_s).search('.macro').collect{|element| element['data-macro-paragraph_id'].to_i}  
13 - errors[:base] << (N_('Not empty paragraph comment cannot be removed')) unless (paragraphs_with_comments-paragraphs).empty? 9 + def body_change_with_comments
  10 + if body && body_changed? && !self.comments.empty?
  11 + paragraphs_with_comments = self.comments.where("'article_id' IS NOT NULL")
  12 + errors[:base] << (N_('You are unable to change the body of the article when paragraphs are commented')) unless (paragraphs_with_comments).empty?
14 end 13 end
15 end 14 end
16 - 15 +
17 end 16 end
18 17
plugins/comment_paragraph/public/comment_paragraph_macro.js
1 var comment_paragraph_anchor; 1 var comment_paragraph_anchor;
2 -  
3 -function _a(x,y,val){  
4 - // return depending on parameters  
5 - switch(arguments.length){  
6 - case 0: return _a.a;  
7 - case 1: return _a.a[x];  
8 - case 2: return _a.a[x][y];  
9 - }  
10 -  
11 - // declare array if wasn't declared yet  
12 - if(typeof _a.a[x] == 'undefined')  
13 - _a.a[x] = [];  
14 -  
15 - _a.a[x][y] = val;  
16 -}  
17 -// declare static empty variable  
18 -_a.a = [];  
19 -  
20 -var ParagraphSelectionCache = {};  
21 var lastParagraph = []; 2 var lastParagraph = [];
22 var lastSelectedArea = []; 3 var lastSelectedArea = [];
23 4
24 -  
25 function getIdCommentParagraph(paragraphId){ 5 function getIdCommentParagraph(paragraphId){
26 var idx = paragraphId.lastIndexOf('_'); 6 var idx = paragraphId.lastIndexOf('_');
27 return paragraphId.substring(idx+1, paragraphId.length) 7 return paragraphId.substring(idx+1, paragraphId.length)
@@ -121,13 +101,16 @@ jQuery(document).ready(function($) { @@ -121,13 +101,16 @@ jQuery(document).ready(function($) {
121 } 101 }
122 102
123 //console.log(rootElement.innerHTML); 103 //console.log(rootElement.innerHTML);
124 - console.log(selected_area);  
125 - rangy.deserializeSelection(selected_area, rootElement);  
126 - cssApplier.toggleSelection(); 104 + console.log("selected_area = '" + selected_area + "'");
  105 + if(selected_area != ""){
  106 + rangy.deserializeSelection(selected_area, rootElement);
  107 + cssApplier.toggleSelection();
  108 + }
127 }); 109 });
128 110
129 $(document).on('mouseout', 'li.article-comment', function(){ 111 $(document).on('mouseout', 'li.article-comment', function(){
130 var paragraph_id = $(this).find('input.paragraph_id').val(); 112 var paragraph_id = $(this).find('input.paragraph_id').val();
  113 + console.log("mouseout paragraph_id = " + paragraph_id);
131 var rootElement = $('#comment_paragraph_'+ paragraph_id).get(0); 114 var rootElement = $('#comment_paragraph_'+ paragraph_id).get(0);
132 console.log(lastParagraph[paragraph_id]); 115 console.log(lastParagraph[paragraph_id]);
133 116