Commit 4db8bfd85fcca28f0c3ff203910b08c5896e533c
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Merge branch 'AI3205-comment-paragraph' into stable
Showing
1 changed file
with
48 additions
and
29 deletions
Show diff stats
plugins/comment_paragraph/public/comment_paragraph_macro.js
... | ... | @@ -111,18 +111,6 @@ jQuery(document).ready(function($) { |
111 | 111 | } |
112 | 112 | |
113 | 113 | $("#comment-bubble").hide(); |
114 | - //Undo previous highlight from the paragraph | |
115 | - $('.comment_paragraph').mousedown(function(){ | |
116 | - $("#comment-bubble").hide(); | |
117 | - var paragraphId = $(this).data('paragraph'); | |
118 | - $(this).find('.commented-area').replaceWith(function() { | |
119 | - return $(this).html(); | |
120 | - }); | |
121 | - var rootElement = $(this).get(0); | |
122 | - if(lastParagraph[paragraphId]){ | |
123 | - rootElement.innerHTML = lastParagraph[paragraphId]; | |
124 | - } | |
125 | - }); | |
126 | 114 | |
127 | 115 | function getSelectionText() { |
128 | 116 | var text = ""; |
... | ... | @@ -134,40 +122,70 @@ jQuery(document).ready(function($) { |
134 | 122 | return text; |
135 | 123 | } |
136 | 124 | |
137 | - //highlight area from the paragraph | |
138 | - $('.comment_paragraph').mouseup(function(event){ | |
139 | - deselectAll(); | |
125 | + function setCommentBubblePosition(posX, posY) { | |
126 | + $("#comment-bubble").css({ | |
127 | + top: (posY - 70), | |
128 | + left: (posX - 70), | |
129 | + position:'absolute' | |
130 | + }); | |
131 | + } | |
132 | + | |
133 | + | |
134 | + //highlight area from the paragraph | |
135 | + $('.comment_paragraph').mouseup(function(event) { | |
136 | + | |
140 | 137 | //Don't do anything if there is no selected text |
141 | - if(getSelectionText().length == 0) | |
138 | + if (getSelectionText().length == 0) { | |
142 | 139 | return; |
140 | + } | |
141 | + | |
143 | 142 | var paragraphId = $(this).data('paragraph'); |
144 | - var currentMousePos = { x: -1, y: -1 }; | |
145 | - currentMousePos.x = event.pageX; | |
146 | - currentMousePos.y = event.pageY; | |
147 | - $("#comment-bubble").css({top: event.pageY-70, left: event.pageX-70, position:'absolute'}); | |
148 | - //Relates a bubble to the mouse up paragraph | |
149 | - $("#comment-bubble").data("paragraphId", paragraphId) | |
143 | + | |
144 | + setCommentBubblePosition( event.pageX, event.pageY ); | |
145 | + | |
150 | 146 | //Prepare to open the div |
151 | 147 | var url = $('#link_to_ajax_comments_' + paragraphId).data('url'); |
152 | - $("#comment-bubble").data("url", url) | |
148 | + $("#comment-bubble").data("url", url); | |
149 | + $("#comment-bubble").data("paragraphId", paragraphId); | |
153 | 150 | $("#comment-bubble").show(); |
151 | + | |
154 | 152 | var rootElement = $(this).get(0); |
153 | + | |
155 | 154 | //Stores the HTML content of the lastParagraph |
156 | - lastParagraph[paragraphId] = rootElement.innerHTML; | |
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 | + | |
157 | 175 | //Maybe it is needed to handle exceptions here |
158 | - try{ | |
176 | + try { | |
159 | 177 | var selObj = rangy.getSelection(); |
160 | 178 | var selected_area = rangy.serializeSelection(selObj, true,rootElement); |
161 | 179 | cssApplier.toggleSelection(); |
162 | - }catch(e){ | |
180 | + } catch(e) { | |
163 | 181 | //Translate this mesage |
164 | - deselectAll(); | |
165 | 182 | rangy.init(); |
166 | 183 | cssApplier = rangy.createCssClassApplier("commented-area", {normalize: false}); |
167 | 184 | return; |
168 | 185 | } |
186 | + | |
169 | 187 | //Register the area the has been selected at input.selected_area |
170 | - lastSelectedArea[paragraphId] = selected_area; | |
188 | + //lastSelectedArea[paragraphId] = selected_area; | |
171 | 189 | form = $('#page-comment-form-' + paragraphId).find('form'); |
172 | 190 | if (form.find('input.selected_area').length === 0){ |
173 | 191 | $('<input>').attr({ |
... | ... | @@ -180,6 +198,7 @@ jQuery(document).ready(function($) { |
180 | 198 | form.find('input.selected_area').val(selected_area) |
181 | 199 | } |
182 | 200 | rootElement.focus(); |
201 | + | |
183 | 202 | }); |
184 | 203 | |
185 | 204 | function deselectAll(){ |
... | ... | @@ -207,7 +226,7 @@ jQuery(document).ready(function($) { |
207 | 226 | |
208 | 227 | processAnchor(); |
209 | 228 | |
210 | - $(document).on('mouseover', 'li.article-comment', function(){ | |
229 | + $(document).on('mouseover', 'li.article-comment', function() { | |
211 | 230 | var selected_area = $(this).find('input.paragraph_comment_area').val(); |
212 | 231 | var paragraph_id = $(this).find('input.paragraph_id').val(); |
213 | 232 | var rootElement = $('#comment_paragraph_'+ paragraph_id).get(0); | ... | ... |