src/cm/media/js/client/c_sync.js
author reno
Thu, 26 Nov 2009 12:03:53 +0100
changeset 11 7b8167c4aa6f
parent 0 40c8f766c9b8
child 12 f69ff46d3240
permissions -rw-r--r--
simplified style management. checked gray and notelike styles self sufficiency.
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
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
				if ("comment" in ret) { // won't be when add with a priori moderation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
					var comment = ret['comment'] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
					gDb.upd(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
					var shouldReset = gLayout.isInFrame() && !parent.f_isFrameFilterFieldsInit() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
					if (shouldReset)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
						parent.resetFilter() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
					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
   136
							// in frame for now data can't be filtered)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
						if (comment.reply_to_id == null) { // not a reply
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
							unpaintCommentScope(comment) ; // for the edit case
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
							paintCommentScope(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
						}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
					// UPDATE FILTER DATA // TODO move ????
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
					var filterData = ret['filterData'] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
					if (gLayout.isInFrame()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
						parent.f_updateFilterData(filterData) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
						updateResetFilterResultsCount() ;				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
					if (isReply()) { // add reply case
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
						if (!shouldReset) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
							this._insertReply(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
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
					else { // edit (reply or comment) or add (comment) case
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
				    	this._showSingleComment(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
				else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
					this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
			}
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
		else { // TODO ? ALL ret-FUNCTIONS ?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
			this._q.add({id:"expl", fn:function () {CY.log('in example .........') ;}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
			this._q.promote("expl") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
		this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
		this.resume() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
	example : function () {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
		CY.log('in example .........') ;
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
	moderateComment	: function(iComment, state) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
		var comment = gDb.getComment(iComment['commentId']) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
        this._q.add(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
	            {fn:CY.bind(this.setPreventClickOn, this)},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
	            {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
   182
	            ).run();
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
	_saveComment : function(serverFun, formId) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
        this._q.add(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
	            {fn:CY.bind(this.setPreventClickOn, this)},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
	            {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
   189
	            ).run();
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
	editComment : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
		this._saveComment("editComment", gEdit['ids']['formId']) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
	saveComment : function(formId) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
		this._saveComment("addComment", formId) ;
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
	removeComment : function(iComment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
		checkForOpenedDialog(iComment, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
			if (gLayout.isInFrame()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
				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
   204
					var comment = gDb.getComment(iComment.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
			        this._q.add(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
				            {fn:CY.bind(this.setPreventClickOn, this)},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
				            {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
   208
				            ).run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
				}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
		        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
//			else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
//				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
   214
//			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
	resume : function(commentDbIds, mouseXY) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
		this._q.run() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
	resetAutoContinue : function(callbackId) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
		this._q.getCallback(callbackId).autoContinue = true;
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
	hideICommentForm : function(funObj) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
//		this._q.add({fn:function() {persistICommentFormValues();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
		this._q.add({autoContinue:false, fn:CY.bind(gICommentForm['animationHide'].run, gICommentForm['animationHide'])}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
//		this._q.add({fn:function() {cleanICommentForm();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
		if (funObj)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
			this._q.add(funObj) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
	/* ANIMATION DRIVEN INTERFACE CHANGES */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
	showCommentForm : function(iComment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
		checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
	        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
			this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
								if (iComment == null) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
									var selection = getSelectionInfo() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
									updateICommentFormSelection(selection) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
								}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
								showICommentForm(iComment);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
							}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
			this._q.add({autoContinue:false, fn:CY.bind(gICommentForm['animationShow'].run, gICommentForm['animationShow'])},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
					{fn:CY.bind(this.setPreventClickOff, this)}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
					).run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
	showEditForm : function(iComment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
		checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
	        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
	        this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
	        				showEditForm(iComment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
	        			}});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
			this._animateToTop() ;
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({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
	        this._q.run() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
	showReplyForm : function(iComment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
		checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
	        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
	        this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
	        					instanciateNewReplyForm(iComment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
	        					}});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
			this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
	        this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
	        this._q.run() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
	cancelICommentForm : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
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:function() {cleanICommentForm();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
    	this.hideICommentForm() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
    	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
        this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
        this._q.run() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
	cancelEdit : 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() {cancelEditForm();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
    	this._animateToTop() ;
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._q.add({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
        this._q.run() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
	cancelReply : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
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:function() {cancelNewReplyForm();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
    	this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
    	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
        this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
        this._q.run() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
	changeScopeFormClick : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
        this._q.add({fn:CY.bind(this.setPreventClickOn, this)});
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:function() {changeScopeFormClick();}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
    	this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
    	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
        this._q.add({fn:CY.bind(this.setPreventClickOff, this)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
        this._q.run() ;
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 is invoked during queue execution
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
	_hideNewReplyForm : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
		this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
					cleanNewReplyForm() ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
					cancelNewReplyForm() ;}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
	// this is invoked during queue execution
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
	_hideEditForm : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
		this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
					cancelEditForm() ;}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
	// this is invoked during queue execution
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
	_insertReply : function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
		this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
					var parentComment = gDb.getComment(comment.reply_to_id) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
					var parentThread = gDb.getThreads([parentComment]) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
					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
   334
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
					var iComment = gIComments.insertAfter(previousComment, comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
					// iComment CAN'T BE NULL ! (TODO check that there is a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
					// check server side that parent exists when adding a reply
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
					// !)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
					var parentPosition = gIComments.getPosition(comment.reply_to_id) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
					iComment.setPosition(parentPosition) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
					// check if activation is necessary (will always be ?)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
					var comment_path = gDb.getPath(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
					var topComment = comment_path[comment_path.length - 1] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
					if (gIComments.isTopActive(topComment.id))
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
						iComment.activate() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
					iComment.show() ;}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
    	this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
	_showSingleComment : function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
		if (comment != null) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
			var path = gDb.getPath(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
			var topAncestorComment = path[path.length - 1] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
			var topY = CY.get(".c-id-"+topAncestorComment.id).getY() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
			this._showComments([topAncestorComment.id], topY, false) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
			// optim when browsing comments with no reply			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
			if (topAncestorComment.replies.length > 0)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
				this._animateTo(topY) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
	showSingleComment : function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
		this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
		this._showSingleComment(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
		this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
		this._q.run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
	browse : function(order, whereto) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
		var comment = gIComments.browse(order, whereto) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
		if (comment != null) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
			this.showSingleComment(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
	_showComments : function(commentDbIds, topY, showingAll) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
		this._q.add(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
			{fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
				gShowingAllComments = showingAll ;			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
				gIComments.hide() ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
				var cs = CY.Array.map(commentDbIds, function(id) { return gDb.getComment(id) ; }) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
				var comments = gDb.getThreads(cs) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
				gIComments.fetch(comments) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
				if (commentDbIds.length > 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
					if (!showingAll) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
						gIComments.activate(commentDbIds[0]) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
						var scopeStart = CY.get(".c-id-"+commentDbIds[0]) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
						if (!scopeStart.inViewportRegion())
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
							scopeStart.scrollIntoView(true) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
					else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
						CY.get('document').set('scrollTop', 0) ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
				gIComments.setPosition([gConf['iCommentLeftPadding'], topY]) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
				gIComments.show() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
			}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
	_animateTo : function(topY) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
		this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
						gIComments.setAnimationToPositions(topY) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
						}},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
					{id:"animationRun", autoContinue:false, fn:CY.bind(gIComments.runAnimations, gIComments)}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
	            ) ;
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
	_animateToTop : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
		var topPos = gIComments.getTopPosition() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
		if (topPos != null)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
			this._animateTo(topPos[1]) ;
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
	animateToTop : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
		this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
		this._animateToTop() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
		this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
		this._q.run();
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
	showAllComments : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
		checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
			gShowingAllComments = true ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
			var allTopComments = CY.Array.map(gDb.comments, function(c){return c.id;}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
			this.showComments(allTopComments, [0,0], true) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
		}, this, null) ;
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
	showComments : function(commentDbIds, mouseXY, showingAll) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
		checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
			this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
			this._showComments(commentDbIds, mouseXY[1], showingAll) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
			this._animateTo(mouseXY[1]) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
			this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
			this._q.run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
	openComment : function(iComment) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
		this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
		var y = gIComments.getTopPosition()[1] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
		this._q.add({fn:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
			gIComments.open(iComment.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
    		gIComments.refresh(iComment.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
		}}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
		this._animateTo(y) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
		
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
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
	closeComment : function(iComment) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
		checkForOpenedDialog(iComment, function() {
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
				var comment = gDb.getComment(iComment.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
				gIComments.close(iComment.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
		    	if (comment.reply_to_id != null)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
		    		gIComments.refresh(comment.reply_to_id) ;
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._animateTo(y) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
			this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
			this._q.run() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
		}, this, null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
	activate : function(iComment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
		gIComments.activate(iComment.commentId) ;
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
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
readyForAction = function () {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
	return !gSync._iPreventClick ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
};