cirandas.net

ref: dockerize

plugins/comment_group/public/comment_group.js


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function getNextGroupId() {
  max = -1;
  groups = jQuery('#article_body_ifr').contents().find('.article_comments');
  groups.each(function(key, value) {
    value = jQuery(value).attr('data-macro-group_id');
    if(value>max) max = parseInt(value);
  });
  return max+1;
}

function makeCommentable() {
  tinyMCE.activeEditor.focus();
  start = jQuery(tinyMCE.activeEditor.selection.getStart()).closest('p');
  end = jQuery(tinyMCE.activeEditor.selection.getEnd()).closest('p');

  //text = start.parent().children();
  text = jQuery('#article_body_ifr').contents().find('*');
  selection = text.slice(text.index(start), text.index(end)+1);

  hasTag = false;
  selection.each(function(key, value) {
    commentTag = jQuery(value).closest('.article_comments');
    if(commentTag.length) {
      commentTag.children().unwrap('<div class=\"article_comments\"/>');
      hasTag = true;
    }
  });

  if(!hasTag) {
    tags = start.siblings().add(start);
    tags = tags.slice(tags.index(start), tags.index(end)>=0?tags.index(end)+1:tags.index(start)+1);
    tags.wrapAll('<div class=\"macro article_comments\" data-macro=\"comment_group_plugin/allow_comment\" data-macro-group_id=\"'+getNextGroupId()+'\"/>');

    contents = jQuery('#article_body_ifr').contents();
    lastP = contents.find('p.article_comments_last_paragraph');
    if(lastP.text().trim().length > 0) {
      lastP.removeClass('article_comments_last_paragraph');
    } else {
      lastP.remove();
    }
    lastDiv = contents.find('div.article_comments').last();
    if(lastDiv.next().length==0) {
      lastDiv.after("<p class='article_comments_last_paragraph'>&nbsp;</p>");
    }
  }
}