Commit c820a6b382e6bbe6aae5f1fc09e936071366f321

Authored by Francisco Júnior
1 parent 1a544709

comment_paragraph: minor fixes

plugins/comment_paragraph/public/comment_paragraph_macro.js
1 1 var comment_paragraph_anchor;
2   -var lastParagraph = [];
3 2 var lastSelectedArea = [];
  3 +var original_paragraphs = [];
4 4  
5 5 function setPlusIfZeroComments($){
6 6 $('.comment-count').each(function(){
... ... @@ -15,6 +15,13 @@ jQuery(document).ready(function($) {
15 15 if($('.comment_paragraph').size() < 1)
16 16 return;
17 17  
  18 + all_paragraphs = $('.comment_paragraph');
  19 + all_paragraphs.each( function(paragraph) {
  20 + var paragraph_id = $( all_paragraphs.get(paragraph) ).attr('data-paragraph');
  21 + var paragraph_content = all_paragraphs.get(paragraph).innerHTML;
  22 + original_paragraphs.push( { id: paragraph_id, content: paragraph_content } );
  23 + });
  24 +
18 25 $(document).keyup(function(e) {
19 26 // on press ESC key...
20 27 if (e.which == 27) {
... ... @@ -124,16 +131,17 @@ jQuery(document).ready(function($) {
124 131  
125 132 function setCommentBubblePosition(posX, posY) {
126 133 $("#comment-bubble").css({
127   - top: (posY - 70),
  134 + top: (posY - 80),
128 135 left: (posX - 70),
129 136 position:'absolute'
130 137 });
131 138 }
132 139  
133   -
134 140 //highlight area from the paragraph
135 141 $('.comment_paragraph').mouseup(function(event) {
136 142  
  143 + $('#comment-bubble').hide();
  144 +
137 145 //Don't do anything if there is no selected text
138 146 if (getSelectionText().length == 0) {
139 147 return;
... ... @@ -151,41 +159,15 @@ jQuery(document).ready(function($) {
151 159  
152 160 var rootElement = $(this).get(0);
153 161  
154   - //Stores the HTML content of the lastParagraph
155   - var founded = false;
156   -
157   - for (var i=0; i < lastParagraph.length; i++) {
158   - var paragraph = lastParagraph[i];
159   - if (paragraph.id == paragraphId) {
160   - founded = true
161   - break;
162   - }
163   - }
164   -
165   - if (founded) {
166   - lastParagraph[i].html = rootElement.innerHTML;
167   - }
168   - else {
169   - oLastParagraph = { id: paragraphId, html: rootElement.innerHTML };
170   - lastParagraph.push( oLastParagraph );
171   - }
172   -
173   - deselectAll();
174   -
175 162 //Maybe it is needed to handle exceptions here
176 163 try {
177 164 var selObj = rangy.getSelection();
178   - var selected_area = rangy.serializeSelection(selObj, true,rootElement);
179   - cssApplier.toggleSelection();
  165 + var selected_area = rangy.serializeSelection(selObj, true, rootElement);
180 166 } catch(e) {
181   - //Translate this mesage
182   - rangy.init();
183   - cssApplier = rangy.createCssClassApplier("commented-area", {normalize: false});
184 167 return;
185 168 }
186 169  
187 170 //Register the area the has been selected at input.selected_area
188   - //lastSelectedArea[paragraphId] = selected_area;
189 171 form = $('#page-comment-form-' + paragraphId).find('form');
190 172 if (form.find('input.selected_area').length === 0){
191 173 $('<input>').attr({
... ... @@ -201,10 +183,6 @@ jQuery(document).ready(function($) {
201 183  
202 184 });
203 185  
204   - function deselectAll(){
205   - $(".commented-area").contents().unwrap();
206   - }
207   -
208 186 function processAnchor(){
209 187 var anchor = window.location.hash;
210 188 if(anchor.length==0) return;
... ... @@ -226,38 +204,26 @@ jQuery(document).ready(function($) {
226 204  
227 205 processAnchor();
228 206  
229   - $(document).on('mouseover', 'li.article-comment', function() {
  207 + $(document).on('mouseenter', 'li.article-comment', function() {
230 208 var selected_area = $(this).find('input.paragraph_comment_area').val();
231 209 var paragraph_id = $(this).find('input.paragraph_id').val();
232   - var rootElement = $('#comment_paragraph_'+ paragraph_id).get(0);
  210 + var rootElement = $('#comment_paragraph_' + paragraph_id).get(0);
233 211  
234   - if(lastParagraph[paragraph_id] == null || lastParagraph[paragraph_id] == 'undefined'){
235   - lastParagraph[paragraph_id] = rootElement.innerHTML;
236   - }
237   - else {
238   - rootElement.innerHTML = lastParagraph[paragraph_id] ;
239   - }
240 212 if(selected_area != ""){
241 213 rangy.deserializeSelection(selected_area, rootElement);
242 214 cssApplier.toggleSelection();
243 215 }
244 216 });
245 217  
246   - $(document).on('mouseout', 'li.article-comment', function(){
247   - deselectAll();
  218 + $(document).on('mouseleave', 'li.article-comment', function() {
248 219 var paragraph_id = $(this).find('input.paragraph_id').val();
249 220 var rootElement = $('#comment_paragraph_'+ paragraph_id).get(0);
250 221  
251   - if(lastSelectedArea[paragraph_id] != null && lastSelectedArea[paragraph_id] != 'undefined' ){
252   - rootElement = $('#comment_paragraph_'+ paragraph_id).get(0);
253   - rootElement.innerHTML = lastParagraph[paragraph_id];
254   - rangy.deserializeSelection(lastSelectedArea[paragraph_id], rootElement);
255   - cssApplier.toggleSelection();
256   - } else {
257   - cssApplier.toggleSelection();
258   - var sel = rangy.getSelection();
259   - sel.removeAllRanges();
260   - }
  222 + original_paragraphs.each( function(paragraph) {
  223 + if (paragraph.id == paragraph_id) {
  224 + rootElement.innerHTML = paragraph.content;
  225 + }
  226 + });
261 227 });
262 228  
263 229 function toggleParagraph(paragraph) {
... ...