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