src/cm/media/js/client/c_sync.js
author gibus
Fri, 11 May 2012 12:00:40 +0200
changeset 421 3ddbfa64f596
parent 375 d6439b3eb2de
child 432 aad07a378d44
permissions -rw-r--r--
Adds a table of content.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
gShowingAllComments = false ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
// YUI : queue, overlay
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
Sync = function() {
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
     4
  // this queue handles both animations and io requests
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
     5
  this._q = null ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
     6
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
     7
  this._iPreventClick = false ; // oh really ?
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
Sync.prototype = {
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    11
  init : function (iComment) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    12
  this._q = new CY.AsyncQueue() ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
// pr2 this._q = new CY.Queue() ;
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    14
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    15
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    16
  setPreventClickOn : function () {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    17
    CY.log("setPreventClickOn !") ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    18
    if (gLayout.isInFrame())
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    19
      parent.f_interfaceFreeze()    
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    20
    this._iPreventClick = true ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    21
  },
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    23
  setPreventClickOff : function () {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    24
    CY.log("setPreventClickOff !") ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    25
    if (gLayout.isInFrame())
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    26
      parent.f_interfaceUnfreeze()    
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    27
    this._iPreventClick = false ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    28
  },
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    30
  removeCommentRet : function(args) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    31
    var successfull = args['successfull'] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    32
    
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    33
    var iComment = (successfull) ? args['failure']['iComment'] : args['success']['iComment'] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    34
    
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    35
    if (successfull) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    36
      var filterData = args['returned']['filterData'] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    37
      if (gLayout.isInFrame()) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    38
        parent.f_updateFilterData(filterData) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    39
      }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    40
      
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    41
      var y = gIComments.getTopPosition()[1] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    42
      
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    43
      var comment = gDb.getComment(iComment.commentId) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    44
      this._q.add(
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    45
                function(){
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    46
                  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    47
                unpaintCommentScope(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    48
                gIComments.close(comment.id) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    49
                gIComments.remove(comment.id) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    50
                if (comment.reply_to_id != null)
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    51
                  gIComments.refresh(comment.reply_to_id) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    52
                
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    53
                gDb.del(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    54
                
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    55
                if (gLayout.isInFrame()) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    56
                  if (gDb.comments.length == 0 && gDb.allComments.length != 0) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    57
                    parent.f_enqueueMsg(gettext("no filtered comments left")) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    58
                  parent.resetFilter() ;  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    59
                  }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    60
                  else {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    61
                  // just counting here ...
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    62
                  var filterRes = gDb.computeFilterResults() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    63
                  updateFilterResultsCount(filterRes['nbDiscussions'], filterRes['nbComments'], filterRes['nbReplies']) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    64
                  }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    65
                }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    66
                }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    67
      );
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    68
      
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    69
      this._animateTo(y) ;    
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    70
    }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    71
    this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    72
    this.resume() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    73
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    74
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    75
  moderateCommentRet : function(args) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    76
    var successfull = args['successfull'] ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    78
    var iComment = (successfull) ? args['failure']['iComment'] : args['success']['iComment'] ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    80
    if (successfull) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    81
      var ret = args['returned'] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    82
      var comment = ret['comment'] ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    84
      gDb.upd(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    85
      
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    86
      var shouldReset = gLayout.isInFrame() && !parent.f_isFrameFilterFieldsInit() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    87
      if (shouldReset){
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    88
        parent.resetFilter() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    89
        this._showSingleComment(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    90
      }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    91
      else 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    92
        iComment.changeModeration(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    93
    }
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    95
    this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    96
    this.resume() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    97
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    98
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
    99
  saveCommentRet : function(args) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   100
    var successfull = args['successfull'] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   101
    if (successfull) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   102
      var formId = args['success']['formId'] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   103
      var ret = args['returned'] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   104
    
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   105
      removeFormErrMsg(formId) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   106
    
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   107
      if ('errors' in ret) { // validation error
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   108
        var errors = ret['errors'] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   109
        for (var eltName in errors) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   110
          addFormErrMsg(formId, eltName, errors[eltName]) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   111
        }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   112
        this._animateToTop() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   113
      }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   114
      else {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   115
        var isReply = function() {return (gNewReply != null) && (formId == gNewReply['ids']['formId']) ;} ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   116
        var isNewComment = function() {return (gICommentForm != null) && (formId == gICommentForm['formId']) ;} ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   117
        var isEdit = function() {return (gEdit != null) && (formId == gEdit['ids']['formId']) ;} ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   118
        
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   119
        // doing this here for the a priori moderation case
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   120
        if (isNewComment())
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   121
          this.hideICommentForm(cleanICommentForm()) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   122
        else if (isEdit())
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   123
          this._hideEditForm() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   124
        else if (isReply())
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   125
          this._hideNewReplyForm() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   126
        
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   127
        if ("ask_for_notification" in ret) {  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   128
          if (ret['ask_for_notification']) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   129
            // TODO ask for notification ...or use AUTO_CONTRIB ?
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   130
            parent.f_yesNoDialog(gettext("Do you want to be notified of all replies in all discussions you participated in?"), gettext("Reply notification"), 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   131
              function() { // special case : no waiting for the return, no error check, nothing !
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   132
                  var cfg = {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   133
                  method: "POST", 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   134
                  data: urlEncode({'fun':'ownNotify', 'key':sv_key, 'version_key':sv_version_key, 'email':ret['email'], 'active':false}) 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   135
                } ; 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   136
                CY.io(sv_client_url, cfg);
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   137
              }, this, null,
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   138
              function() { // special case : no waiting for the return, no error check, nothing !
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   139
                  var cfg = {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   140
                  method: "POST", 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   141
                  data: urlEncode({'fun':'ownNotify', 'key':sv_key, 'version_key':sv_version_key, 'email':ret['email'], 'active':true}) 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   142
                } ; 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   143
                CY.io(sv_client_url, cfg);
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   144
              }, this, null) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   145
          }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   146
        }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   147
          
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   148
        
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   149
        if ("comment" in ret) { // won't be when add with a priori moderation
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   150
          var comment = ret['comment'] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   151
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   152
          gDb.upd(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   153
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   154
          var shouldReset = gLayout.isInFrame() && !parent.f_isFrameFilterFieldsInit() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   155
          if (shouldReset)
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   156
            parent.resetFilter() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   157
          else { // ASSUMING filter is in init state ! (because when not // TODO $$$$$$$$$$$ this isn't true anymore .... when passing filter arguments in url !!
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   158
              // in frame for now data can't be filtered)
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   159
            if (comment.reply_to_id == null) { // not a reply
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   160
              unpaintCommentScope(comment) ; // for the edit case
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   161
              paintCommentScope(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   162
            }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   163
          }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   164
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   165
          // UPDATE FILTER DATA // TODO move ????
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   166
          var filterData = ret['filterData'] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   167
          if (gLayout.isInFrame()) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   168
            parent.f_updateFilterData(filterData) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   169
            updateResetFilterResultsCount() ;       
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   170
          }
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   172
          if (isReply()) { // add reply case
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   173
            if (!shouldReset) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   174
              this._insertReply(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   175
            }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   176
          }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   177
          else { // edit (reply or comment) or add (comment) case
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   178
              this._showSingleComment(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   179
          }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   180
        }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   181
        else 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   182
          this._animateToTop() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   183
      }
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   185
    }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   186
    else { // TODO ? ALL ret-FUNCTIONS ?
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   187
      this._q.add({id:"expl", fn:function () {CY.log('in example .........') ;}}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   188
      this._q.promote("expl") ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   189
    }
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   191
    this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   192
    this.resume() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   193
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   194
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   195
  example : function () {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   196
    CY.log('in example .........') ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   197
  },
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   199
  moderateComment : function(iComment, state) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   200
    var comment = gDb.getComment(iComment['commentId']) ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
        this._q.add(
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   202
              {fn:CY.bind(this.setPreventClickOn, this)},
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   203
              {autoContinue:false, fn:CY.bind(doExchange, null, "editComment", {'comment_key':comment.key, 'state':state}, null, this.moderateCommentRet, this, {'iComment':iComment}, gettext("could not save comment"))}
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   204
              ).run();
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   205
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   206
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   207
  _saveComment : function(serverFun, formId) {
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
        this._q.add(
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   209
              {fn:CY.bind(this.setPreventClickOn, this)},
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   210
              {autoContinue:false, fn:CY.bind(doExchange, null, serverFun, {}, formId, this.saveCommentRet, this, {'formId':formId}, gettext("could not save comment"))}
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   211
              ).run();
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   212
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   213
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   214
  editComment : function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   215
    this._saveComment("editComment", gEdit['ids']['formId']) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   216
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   217
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   218
  saveComment : function(formId) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   219
    this._saveComment("addComment", formId) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   220
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   221
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   222
  removeComment : function(iComment) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   223
    checkForOpenedDialog(iComment, function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   224
      if (gLayout.isInFrame()) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   225
        parent.f_yesNoDialog(gettext("Are you sure you want to delete this comment?"), gettext("Warning"), function() { this.animateToTop() ;}, this, null, function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   226
          var comment = gDb.getComment(iComment.commentId) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   227
              this._q.add(
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   228
                    {fn:CY.bind(this.setPreventClickOn, this)},
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   229
                    {autoContinue:false, fn:CY.bind(doExchange, null, "removeComment", {'comment_key':comment.key}, null, this.removeCommentRet, this, {'iComment':iComment}, gettext("could not remove comment"))}
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   230
                    ).run();
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   231
        }, this, null) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   232
            
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   233
      }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   234
//      else {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   235
//        alert("TODO : can't yet delete comments when not embed in text_view_frame because can't 'dialog' confirmation") ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   236
//      }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   237
    
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   238
    }, this, null) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   239
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   240
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   241
  resume : function(commentDbIds, mouseXY) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   242
    this._q.run() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   243
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   244
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   245
  resetAutoContinue : function(callbackId) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   246
    this._q.getCallback(callbackId).autoContinue = true;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   247
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   248
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   249
  hideICommentForm : function(funObj) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   250
//    this._q.add({fn:function() {persistICommentFormValues();}}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   251
    this._q.add({autoContinue:false, fn:CY.bind(gICommentForm['animationHide'].run, gICommentForm['animationHide'])}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   252
//    this._q.add({fn:function() {cleanICommentForm();}}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   253
    if (funObj)
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   254
      this._q.add(funObj) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   255
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   256
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   257
  /* ANIMATION DRIVEN INTERFACE CHANGES */
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   258
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   259
  showCommentForm : function(iComment) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   260
    checkForOpenedDialog(null, function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   261
          this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   262
      this._q.add({fn:function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   263
                if (iComment == null) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   264
                  var selection = getSelectionInfo() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   265
                  updateICommentFormSelection(selection) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   266
                }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   267
                showICommentForm(iComment);
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   268
              }}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   269
      this._q.add({autoContinue:false, fn:CY.bind(gICommentForm['animationShow'].run, gICommentForm['animationShow'])},
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   270
          {fn:CY.bind(this.setPreventClickOff, this)}
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   271
          ).run();
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   272
    }, this, null) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   273
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   274
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   275
  showEditForm : function(iComment) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   276
    checkForOpenedDialog(null, function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   277
          this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   279
          this._q.add({fn:function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   280
                  showEditForm(iComment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   281
                }});
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   282
      this._animateToTop() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   283
      
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   284
          this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   285
          this._q.run() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   286
    }, this, null) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   287
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   288
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   289
  showReplyForm : function(iComment) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   290
    checkForOpenedDialog(null, function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   291
          this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   293
          this._q.add({fn:function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   294
                    instanciateNewReplyForm(iComment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   295
                    }});
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   296
      this._animateToTop() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   297
      
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   298
          this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   299
          this._q.run() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   300
    }, this, null) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   301
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   302
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   303
  cancelICommentForm : function() {
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
        
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   306
//    this._q.add({fn:function() {cleanICommentForm();}}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   307
      this.hideICommentForm() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   308
      
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
        this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
        this._q.run() ;
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   311
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   312
  cancelEdit : function() {
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
        
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   315
      this._q.add({fn:function() {cancelEditForm();}}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   316
      this._animateToTop() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   317
      
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
        this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
        this._q.run() ;
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   320
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   321
  cancelReply : function() {
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
        
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   324
      this._q.add({fn:function() {cancelNewReplyForm();}}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   325
      this._animateToTop() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   326
      
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
        this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
        this._q.run() ;
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   329
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   330
  changeScopeFormClick : function() {
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
        
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   333
      this._q.add({fn:function() {changeScopeFormClick();}}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   334
      this._animateToTop() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   335
      
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
        this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
        this._q.run() ;
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   338
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   339
  // this is invoked during queue execution
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   340
  _hideNewReplyForm : function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   341
    this._q.add({fn:function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   342
          cleanNewReplyForm() ; 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   343
          cancelNewReplyForm() ;}}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   344
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   345
  // this is invoked during queue execution
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   346
  _hideEditForm : function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   347
    this._q.add({fn:function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   348
          cancelEditForm() ;}}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   349
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   350
  // this is invoked during queue execution
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   351
  _insertReply : function(comment) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   352
    this._q.add({fn:function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   353
          var parentComment = gDb.getComment(comment.reply_to_id) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   354
          var parentThread = gDb.getThreads([parentComment]) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   355
          var previousComment = parentThread[parentThread.length - 2] ; // - 2 because now that comment has been added comment is parentThread[parentThread.length - 1]
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   357
          var iComment = gIComments.insertAfter(previousComment, comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   358
          // iComment CAN'T BE NULL ! (TODO check that there is a
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   359
          // check server side that parent exists when adding a reply
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   360
          // !)
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   361
          
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   362
          var parentPosition = gIComments.getPosition(comment.reply_to_id) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   363
          iComment.setPosition(parentPosition) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   364
          
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   365
          // check if activation is necessary (will always be ?)
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   366
          var comment_path = gDb.getPath(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   367
          var topComment = comment_path[comment_path.length - 1] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   368
          if (gIComments.isTopActive(topComment.id))
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   369
            iComment.activate() ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   371
          iComment.show() ;}}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   372
      this._animateToTop() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   373
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   374
  _showSingleComment : function(comment) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   375
    if (comment != null) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   376
      var path = gDb.getPath(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   377
      var topAncestorComment = path[path.length - 1] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   378
      var topY = 0 ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   379
      if (comment['start_wrapper'] != -1) 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   380
        topY = CY.get(".c-id-"+topAncestorComment.id).getY() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   381
      else 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   382
        topY = CY.get('document').get('scrollTop') ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   383
      
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   384
      this._showComments([topAncestorComment.id], topY, false) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   385
      // optim when browsing comments with no reply     
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   386
      if (topAncestorComment.replies.length > 0)
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   387
        this._animateTo(topY) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   388
    }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   389
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   390
  _showFocusSingleComment : function(topComment, focusComment, reply) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   391
    if (topComment != null) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   392
      var topY = 0 ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   393
      if (topComment['start_wrapper'] != -1) 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   394
        topY = CY.get(".c-id-"+topComment.id).getY() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   395
      else 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   396
        topY = CY.get('document').get('scrollTop') ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   397
      
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   398
      this._showComments([topComment.id], topY, false) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   399
      // optim when browsing comments with no reply     
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   400
      if (topComment.replies.length > 0 || reply)
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   401
        this._animateToAndFocus(topY, focusComment.id, reply) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   402
    }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   403
  },
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   405
  showSingleComment : function(comment) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   406
    this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   407
    this._showSingleComment(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   408
    this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   409
    this._q.run();
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   410
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   411
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   412
  showFocusSingleComment : function(topComment, focusComment, reply) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   413
    this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   414
    this._showFocusSingleComment(topComment, focusComment, reply) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   415
    this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   416
    this._q.run();
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   417
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   418
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   419
  browse : function(order, whereto) { 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   420
    var comment = gIComments.browse(order, whereto) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   421
    if (comment != null) 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   422
      this.showSingleComment(comment) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   423
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   424
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   425
  _showComments : function(commentDbIds, topY, atDocumentTop) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   426
    this._q.add(
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   427
      {fn:function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   428
        gShowingAllComments = atDocumentTop ;     
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   429
        gIComments.hide() ; 
421
3ddbfa64f596 Adds a table of content.
gibus
parents: 375
diff changeset
   430
        hideToc();
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   431
        var cs = CY.Array.map(commentDbIds, function(id) { return gDb.getComment(id) ; }) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   432
        var comments = gDb.getThreads(cs) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   433
        gIComments.fetch(comments) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   434
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   435
        if (commentDbIds.length > 0) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   436
          if (atDocumentTop) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   437
            CY.get('document').set('scrollTop', 0) ; 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   438
          }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   439
          else {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   440
            gIComments.activate(commentDbIds[0]) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   441
            var scopeStart = CY.get(".c-id-"+commentDbIds[0]) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   442
            if (scopeStart && !scopeStart.inViewportRegion()) // scopeStart could be null when comment has no scope
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   443
              scopeStart.scrollIntoView(true) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   444
          }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   445
        }
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   446
        
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   447
        gIComments.setPosition([gConf['iCommentLeftPadding'], topY]) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   448
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   449
        gIComments.show() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   450
      }}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   451
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   452
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   453
  _animateTo : function(topY) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   454
    this._q.add({fn:function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   455
            gIComments.setAnimationToPositions(topY) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   456
            }},
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   457
          {id:"animationRun", autoContinue:false, fn:CY.bind(gIComments.runAnimations, gIComments)}
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   458
              ) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   459
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   460
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   461
  _animateToAndFocus : function(topY, focusCommentId, reply) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   462
    this._q.add({fn:function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   463
            gIComments.setAnimationToPositionsAndFocus(topY, focusCommentId, reply) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   464
            }},
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   465
          {id:"animationRun", autoContinue:false, fn:CY.bind(gIComments.runAnimations, gIComments)}
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   466
              ) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   467
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   468
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   469
  _animateToTop : function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   470
    var topPos = gIComments.getTopPosition() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   471
    if (topPos != null)
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   472
      this._animateTo(topPos[1]) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   473
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   474
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   475
  animateToTop : function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   476
    this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   477
    this._animateToTop() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   478
    this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   479
    this._q.run();
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   480
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   481
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   482
  showAllComments : function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   483
    checkForOpenedDialog(null, function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   484
      gShowingAllComments = true ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   485
      var allTopComments = CY.Array.map(gDb.comments, function(c){return c.id;}) ;
375
d6439b3eb2de replace 'add comment' button
gibus
parents: 341
diff changeset
   486
      // GIB: go down the 'add comment' icon
d6439b3eb2de replace 'add comment' button
gibus
parents: 341
diff changeset
   487
      this.showComments(allTopComments, [0,30], true) ;
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   488
    }, this, null) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   489
  },
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   491
  showScopeRemovedComments : function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   492
    checkForOpenedDialog(null, function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   493
      gShowingAllComments = true ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   494
      var scopeRemovedComments = CY.Array.filter(gDb.comments, function(comment) { return (comment.start_wrapper == -1) ; }) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   495
      var scopeRemovedCommentIds = CY.Array.map(scopeRemovedComments, function(c){return c.id;}) ;
375
d6439b3eb2de replace 'add comment' button
gibus
parents: 341
diff changeset
   496
      // GIB: go down the 'add comment' icon
d6439b3eb2de replace 'add comment' button
gibus
parents: 341
diff changeset
   497
      this.showComments(scopeRemovedCommentIds, [0,30], true) ;
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   498
      
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   499
    }, this, null) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   500
  },
103
61fd17f9ab78 enh: detached comments
rbernard
parents: 24
diff changeset
   501
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   502
  showComments : function(commentDbIds, mouseXY, atDocumentTop) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   503
    checkForOpenedDialog(null, function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   504
      this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   505
      this._showComments(commentDbIds, mouseXY[1], atDocumentTop) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   506
      this._animateTo(mouseXY[1]) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   507
      this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   508
      this._q.run();
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   509
    }, this, null) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   510
  },
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   512
  openComment : function(iComment) { 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   513
    this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   515
    var y = gIComments.getTopPosition()[1] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   516
    this._q.add({fn:function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   517
      gIComments.open(iComment.commentId) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   518
        gIComments.refresh(iComment.commentId) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   519
    }}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   520
    this._animateTo(y) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   521
    
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   522
    this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   523
    this._q.run();
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   524
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   525
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   526
  closeComment : function(iComment) { 
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   527
    checkForOpenedDialog(iComment, function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   528
      this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   529
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   530
      var y = gIComments.getTopPosition()[1] ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   531
      this._q.add({fn:function() {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   532
        var comment = gDb.getComment(iComment.commentId) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   533
        gIComments.close(iComment.commentId) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   534
          if (comment.reply_to_id != null)
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   535
            gIComments.refresh(comment.reply_to_id) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   536
      }}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   537
      this._animateTo(y) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   538
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   539
      this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   540
      this._q.run() ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   541
    }, this, null) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   542
  },
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   543
  
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   544
  activate : function(iComment) {
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   545
    gIComments.activate(iComment.commentId) ;
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   546
  }
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
}
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   548
      
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
readyForAction = function () {
341
053551f213fb Coding style for js: expand tabs
gibus
parents: 339
diff changeset
   550
  return !gSync._iPreventClick ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
};