Commit 4db8bfd85fcca28f0c3ff203910b08c5896e533c

Authored by Evandro Jr
2 parents b4c10bc6 1a544709

Merge branch 'AI3205-comment-paragraph' into stable

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);
... ...