src/cm/media/js/client/c_sync.js
author raph
Thu, 10 Dec 2009 16:23:01 +0100
changeset 45 678f8cb31c05
parent 24 c8a95e540b79
child 103 61fd17f9ab78
permissions -rw-r--r--
min client generated
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 ?
17
a4be0b8a905d bug fix : can view own comment on comment add on mod priori
reno
parents: 15
diff changeset
   130
						parent.f_yesNoDialog(gettext("Do you want to subscribe to all replies notifications in discussions you participated in?"), gettext("Follow up"), 
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", 
24
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 17
diff changeset
   134
									data: urlEncode({'fun':'ownNotify', 'key':sv_key, 'version_key':sv_version_key, 'email':ret['email'], 'active':false}) 
17
a4be0b8a905d bug fix : can view own comment on comment add on mod priori
reno
parents: 15
diff changeset
   135
								} ; 
a4be0b8a905d bug fix : can view own comment on comment add on mod priori
reno
parents: 15
diff changeset
   136
								CY.io(sv_client_url, cfg);
a4be0b8a905d bug fix : can view own comment on comment add on mod priori
reno
parents: 15
diff changeset
   137
							}, this, null,
a4be0b8a905d bug fix : can view own comment on comment add on mod priori
reno
parents: 15
diff changeset
   138
							function() { // special case : no waiting for the return, no error check, nothing !
a4be0b8a905d bug fix : can view own comment on comment add on mod priori
reno
parents: 15
diff changeset
   139
									var cfg = {
a4be0b8a905d bug fix : can view own comment on comment add on mod priori
reno
parents: 15
diff changeset
   140
									method: "POST", 
24
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 17
diff changeset
   141
									data: urlEncode({'fun':'ownNotify', 'key':sv_key, 'version_key':sv_version_key, 'email':ret['email'], 'active':true}) 
12
f69ff46d3240 various notification changes
reno
parents: 0
diff changeset
   142
								} ; 
f69ff46d3240 various notification changes
reno
parents: 0
diff changeset
   143
								CY.io(sv_client_url, cfg);
f69ff46d3240 various notification changes
reno
parents: 0
diff changeset
   144
							}, this, null) ;
f69ff46d3240 various notification changes
reno
parents: 0
diff changeset
   145
					}
f69ff46d3240 various notification changes
reno
parents: 0
diff changeset
   146
				}
f69ff46d3240 various notification changes
reno
parents: 0
diff changeset
   147
					
f69ff46d3240 various notification changes
reno
parents: 0
diff changeset
   148
				
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
				if ("comment" in ret) { // won't be when add with a priori moderation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
					var comment = ret['comment'] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
					gDb.upd(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
					var shouldReset = gLayout.isInFrame() && !parent.f_isFrameFilterFieldsInit() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
					if (shouldReset)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
						parent.resetFilter() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
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 !!
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
							// in frame for now data can't be filtered)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
						if (comment.reply_to_id == null) { // not a reply
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
							unpaintCommentScope(comment) ; // for the edit case
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
							paintCommentScope(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
						}
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
					// UPDATE FILTER DATA // TODO move ????
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
					var filterData = ret['filterData'] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
					if (gLayout.isInFrame()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
						parent.f_updateFilterData(filterData) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
						updateResetFilterResultsCount() ;				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
					if (isReply()) { // add reply case
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
						if (!shouldReset) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
							this._insertReply(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
						}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
					else { // edit (reply or comment) or add (comment) case
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
				    	this._showSingleComment(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
				else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
					this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
		else { // TODO ? ALL ret-FUNCTIONS ?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
			this._q.add({id:"expl", fn:function () {CY.log('in example .........') ;}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
			this._q.promote("expl") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
		this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
		this.resume() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
	example : function () {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
		CY.log('in example .........') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
	moderateComment	: function(iComment, state) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
		var comment = gDb.getComment(iComment['commentId']) ;
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, "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
   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
	_saveComment : function(serverFun, formId) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
        this._q.add(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
	            {fn:CY.bind(this.setPreventClickOn, this)},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
	            {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
   211
	            ).run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
	editComment : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
		this._saveComment("editComment", gEdit['ids']['formId']) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
	saveComment : function(formId) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
		this._saveComment("addComment", formId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
	removeComment : function(iComment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
		checkForOpenedDialog(iComment, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
			if (gLayout.isInFrame()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
				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
   226
					var comment = gDb.getComment(iComment.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
			        this._q.add(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
				            {fn:CY.bind(this.setPreventClickOn, this)},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
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"))}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
				            ).run();
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
//			else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
//				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
   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
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
	resume : function(commentDbIds, mouseXY) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
		this._q.run() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
	resetAutoContinue : function(callbackId) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
		this._q.getCallback(callbackId).autoContinue = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
	hideICommentForm : function(funObj) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
//		this._q.add({fn:function() {persistICommentFormValues();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
		this._q.add({autoContinue:false, fn:CY.bind(gICommentForm['animationHide'].run, gICommentForm['animationHide'])}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
//		this._q.add({fn:function() {cleanICommentForm();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
		if (funObj)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
			this._q.add(funObj) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
	/* ANIMATION DRIVEN INTERFACE CHANGES */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
	showCommentForm : function(iComment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
		checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
	        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
			this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
								if (iComment == null) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
									var selection = getSelectionInfo() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
									updateICommentFormSelection(selection) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
								}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
								showICommentForm(iComment);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
							}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
			this._q.add({autoContinue:false, fn:CY.bind(gICommentForm['animationShow'].run, gICommentForm['animationShow'])},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
					{fn:CY.bind(this.setPreventClickOff, this)}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
					).run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
	showEditForm : function(iComment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
		checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
	        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
	        this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
	        				showEditForm(iComment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
	        			}});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
			this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
	        this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
	        this._q.run() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
	showReplyForm : function(iComment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
		checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
	        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
	        this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
	        					instanciateNewReplyForm(iComment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
	        					}});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
			this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
	        this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
	        this._q.run() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
	cancelICommentForm : function() {
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
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
//		this._q.add({fn:function() {cleanICommentForm();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
    	this.hideICommentForm() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
    	
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() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
	cancelEdit : function() {
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
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
    	this._q.add({fn:function() {cancelEditForm();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
    	this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
    	
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() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
	cancelReply : function() {
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
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
    	this._q.add({fn:function() {cancelNewReplyForm();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
    	this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
    	
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() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
	changeScopeFormClick : function() {
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
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
    	this._q.add({fn:function() {changeScopeFormClick();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
    	this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
    	
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() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
	// this is invoked during queue execution
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
	_hideNewReplyForm : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
		this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
					cleanNewReplyForm() ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
					cancelNewReplyForm() ;}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
	// this is invoked during queue execution
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
	_hideEditForm : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
		this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
					cancelEditForm() ;}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
	// this is invoked during queue execution
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
	_insertReply : function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
		this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
					var parentComment = gDb.getComment(comment.reply_to_id) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
					var parentThread = gDb.getThreads([parentComment]) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
					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
   356
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
					var iComment = gIComments.insertAfter(previousComment, comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
					// iComment CAN'T BE NULL ! (TODO check that there is a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
					// check server side that parent exists when adding a reply
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
					// !)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
					var parentPosition = gIComments.getPosition(comment.reply_to_id) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
					iComment.setPosition(parentPosition) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
					// check if activation is necessary (will always be ?)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
					var comment_path = gDb.getPath(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
					var topComment = comment_path[comment_path.length - 1] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
					if (gIComments.isTopActive(topComment.id))
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
						iComment.activate() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
					iComment.show() ;}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
    	this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
	_showSingleComment : function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
		if (comment != null) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
			var path = gDb.getPath(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
			var topAncestorComment = path[path.length - 1] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
			var topY = CY.get(".c-id-"+topAncestorComment.id).getY() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
			this._showComments([topAncestorComment.id], topY, false) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
			// optim when browsing comments with no reply			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
			if (topAncestorComment.replies.length > 0)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
				this._animateTo(topY) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
		}
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
	showSingleComment : function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
		this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
		this._showSingleComment(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
		this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
		this._q.run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
	browse : function(order, whereto) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
		var comment = gIComments.browse(order, whereto) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
		if (comment != null) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
			this.showSingleComment(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
	_showComments : function(commentDbIds, topY, showingAll) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
		this._q.add(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
			{fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
				gShowingAllComments = showingAll ;			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
				gIComments.hide() ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
				var cs = CY.Array.map(commentDbIds, function(id) { return gDb.getComment(id) ; }) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
				var comments = gDb.getThreads(cs) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
				gIComments.fetch(comments) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
				if (commentDbIds.length > 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
					if (!showingAll) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
						gIComments.activate(commentDbIds[0]) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
						var scopeStart = CY.get(".c-id-"+commentDbIds[0]) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
						if (!scopeStart.inViewportRegion())
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
							scopeStart.scrollIntoView(true) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
					else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
						CY.get('document').set('scrollTop', 0) ; 
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
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
				gIComments.setPosition([gConf['iCommentLeftPadding'], topY]) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
				gIComments.show() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
			}}) ;
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
	_animateTo : function(topY) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
		this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
						gIComments.setAnimationToPositions(topY) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
						}},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
					{id:"animationRun", autoContinue:false, fn:CY.bind(gIComments.runAnimations, gIComments)}
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
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
	_animateToTop : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
		var topPos = gIComments.getTopPosition() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
		if (topPos != null)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
			this._animateTo(topPos[1]) ;
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
	animateToTop : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
		this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
		this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
		this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
		this._q.run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
	showAllComments : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
		checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
			gShowingAllComments = true ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
			var allTopComments = CY.Array.map(gDb.comments, function(c){return c.id;}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
			this.showComments(allTopComments, [0,0], true) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
	showComments : function(commentDbIds, mouseXY, showingAll) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
		checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
			this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
			this._showComments(commentDbIds, mouseXY[1], showingAll) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
			this._animateTo(mouseXY[1]) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
			this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
			this._q.run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
	openComment : function(iComment) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
		this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
		var y = gIComments.getTopPosition()[1] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
		this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
			gIComments.open(iComment.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
    		gIComments.refresh(iComment.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
		}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
		this._animateTo(y) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
		this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
		this._q.run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
	closeComment : function(iComment) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
		checkForOpenedDialog(iComment, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
			this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
			var y = gIComments.getTopPosition()[1] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
			this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
				var comment = gDb.getComment(iComment.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
				gIComments.close(iComment.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
		    	if (comment.reply_to_id != null)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
		    		gIComments.refresh(comment.reply_to_id) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
			}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
			this._animateTo(y) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
			this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
			this._q.run() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
	activate : function(iComment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
		gIComments.activate(iComment.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
readyForAction = function () {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
	return !gSync._iPreventClick ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
};