src/cm/media/js/client/c_icomment.js
author reno
Mon, 30 Nov 2009 13:55:21 +0100
changeset 13 e1fec7a44d78
parent 11 7b8167c4aa6f
child 103 61fd17f9ab78
permissions -rw-r--r--
various notification changes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
// globals used: gConf, gPrefs, gLayout, gSync
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
// IComment == IHM comment class 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
IComment = function() {
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.commentId = null ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
	var iCommentWidth = gLayout.getTopICommentsWidth() ;	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
	var iCommentLeft = gConf['iCommentLeftPadding'] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
	var changeToPending = gettext("change comment state to pending") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
	var changeToApprove = gettext("change comment state to approved") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
	var changeToUnapprove= gettext("change comment state to unapproved") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
	var cancelChange = gettext("cancel changing the state of this comment") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
	var pending = gettext("pending") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
	var approved = gettext("approved") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
	var unapproved = gettext("unapproved") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
	var cancel = gettext("cancel") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
	var showReplies = gettext("show replies") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
	var changeTo= gettext("change to:") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
	var reply = gettext("reply") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
	var editComment = gettext("edit comment") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
	var deleteComment = gettext("delete comment") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
	var edit = gettext("edit") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
	var del = gettext("delete") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
	var close = gettext("close") ;
8
1a495fcc40f9 client show scope button + do not show all comments on startup
reno
parents: 0
diff changeset
    28
	var showScope = gettext("show scope") ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
	// no header, no body yet 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
	this.overlay = new CY.Overlay( {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
		zIndex :3,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
		shim :false, /* until we really need it, no shim */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
		visible :false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
		width : iCommentWidth,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
		xy : [ iCommentLeft, 0 ],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
		headerContent :	'<div class="icomment-header">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
							'<div class="c-iactions">' +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
								'<a class="c-moderate c-action" title="">'+ "vis" +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
								'<a class="c-edit c-action" title="'+ editComment +'" alt="' + editComment + '">' + edit + '</a>' + " " +   
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
								'<a class="c-delete c-action" title="'+ deleteComment +'" alt="' + deleteComment + '">' + del + '</a>' + " " +   
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
							'</div>' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
							'<div class="c-state-actions displaynone">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
								changeTo + '&nbsp;' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
								'<a class="c-state-pending c-action" title="' + changeToPending + '" alt="' + changeToPending + '">'+ pending +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
								'<a class="c-state-approved c-action" title="' + changeToApprove + '" alt="' + changeToApprove + '">'+ approved +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
								'<a class="c-state-unapproved c-action" title="' + changeToUnapprove + '" alt="' + changeToUnapprove + '">'+ unapproved +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
								'<a class="c-state-cancel c-action" title="' + cancelChange + '" alt="' + cancelChange + '">' + cancel +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
							'</div>' + 
11
7b8167c4aa6f simplified style management. checked gray and notelike styles self sufficiency.
reno
parents: 8
diff changeset
    50
							'<a class="c-show-scope c-action" title="'+ showScope + '" alt="' + showScope + '"><em>-</em></a>' +
7b8167c4aa6f simplified style management. checked gray and notelike styles self sufficiency.
reno
parents: 8
diff changeset
    51
							'<a class="c-close c-action" title="'+ close + '" alt="' + close + '"><em>X</em></a>' +
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
						'</div>',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
		bodyContent :	'<div class="icomment-body">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
						'<span class="c-content"></span>' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
						'<span class="c-ireplyactions">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
						'<a class="c-readreplies c-action" title="'+ showReplies +'" alt="' + showReplies + '">' + showReplies +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
						'<a class="c-reply c-action" title="'+ reply +'" alt="' + reply + '">' + reply +'</a>' + "&nbsp;" +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
						'</span>' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
						'</div>'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
	});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
	this.overlay.get('contentBox').addClass("c-comment") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
	// attach to DOM
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
	this.overlay.render('#leftcolumn');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
	this.animation = new CY.Anim({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
        node: this.overlay.get('boundingBox'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
        duration: gPrefs.get('general','animduration'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
        easing: CY.Easing.easeOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
    });		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
	// CY.on won't work 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
	this.overlay.get('contentBox').query(".c-close").on("click", this.onCloseCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
	this.overlay.get('contentBox').query(".c-moderate").on("click", this.onModerateCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
	this.overlay.get('contentBox').query(".c-state-pending").on("click", this.onPendingCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
	this.overlay.get('contentBox').query(".c-state-approved").on("click", this.onApprovedCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
	this.overlay.get('contentBox').query(".c-state-unapproved").on("click", this.onUnapprovedCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
	this.overlay.get('contentBox').query(".c-state-cancel").on("click", this.onCancelStateChangeClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
	this.overlay.get('contentBox').query(".c-edit").on("click", this.onEditCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
	this.overlay.get('contentBox').query(".c-delete").on("click", this.onDeleteCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
	this.overlay.get('contentBox').query(".c-reply").on("click", this.onReplyCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
	this.overlay.get('contentBox').query(".c-readreplies").on("click", this.onReadRepliesCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
	this.overlay.get('contentBox').query(".icomment-header").on("mouseenter", this.onMouseEnterHeader, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
	this.overlay.get('contentBox').query(".icomment-header").on("mouseleave", this.onMouseLeaveHeader, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
	this.overlay.get('contentBox').on("click", this.onCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
IComment.prototype = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
	// checking readyForAction is not enough because handler could be called after animation end in the case : 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
	// close btn is clicked before animation end (so before overlay gets hidden) but handler is called after so preventClickOn is false and close is called on an invisible overlay.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
	// (whan clicking very fast on the close button while close animation is taking place).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
	// SO : SHOULD ALWAYS CHECK FOR VISIBLE OVERLAY IN HANDLERS THAT COULD BE CALLED FROM AN ANIMATED OVERLAY
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
	onCloseCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
		if (readyForAction() && this.isVisible()) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
			gSync.closeComment(this) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
	onModerateCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
			this.overlay.get('contentBox').query(".c-iactions").addClass("displaynone") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
			this.overlay.get('contentBox').query(".c-state-actions").removeClass("displaynone") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
	onPendingCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
			gSync.moderateComment(this, 'pending') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
	onApprovedCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
			gSync.moderateComment(this, 'approved') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
	onUnapprovedCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
			gSync.moderateComment(this, 'unapproved') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
	onCancelStateChangeClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
			this.overlay.get('contentBox').query(".c-iactions").removeClass("displaynone") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
			this.overlay.get('contentBox').query(".c-state-actions").addClass("displaynone") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
	onDeleteCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
			gSync.removeComment(this) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
	onEditCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
		if (readyForAction() && this.isVisible()) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
			gSync.showEditForm(this) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
	onReplyCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
		if (readyForAction() && this.isVisible()) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
			gSync.showReplyForm(this) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
	onReadRepliesCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
		if (readyForAction() && this.isVisible()) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
			gSync.openComment(this) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
	onCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
			// first condition here is checking it's not clicked via a 'show comments' 	link
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
			if (e.target.get("target") == "_blank") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
				var link = e.target ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
				var showCommentUrl = sv_site_url + sv_text_view_show_comment_url ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
				if (link.get('href').indexOf(showCommentUrl) == 0) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
					var res = (new RegExp('comment_key=([^&]*)', "g")).exec(link.get('href')) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
					if (res != null) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
						// open new comment .... we'll suppose it satisfies the filter for now
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
						// TODO : should we reset the filter in this case ? instead of having the link open in a new window
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
						var key = res[1] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
						var comment = gDb.getCommentByKey(key) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
						if (comment != null) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
							e.halt() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
							if (!link.hasClass("c-permalink")) {// clicking on the permalink itself should do anything
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
								checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
									gSync.showSingleComment(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
								}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
							}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
						}
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
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
			else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
				if (gShowingAllComments) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
					// next special dirty case test explained : when editing/replying to a comment with gShowingAllComments a click in the edit/reply form also is a click on the iComment, in this case we don't want to showSingleComment .... 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
					if (!this._isHostingAForm()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
						var comment = gDb.getComment(this.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
						checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
							if (comment != null) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
								gSync.showSingleComment(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
						})
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
				else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
					gSync.activate(this) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
		}
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
	onMouseEnterHeader : function () {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
			this.overlay.get('contentBox').query(".c-permalink").removeClass('displaynone');
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
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
	onMouseLeaveHeader : function () {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
			this.overlay.get('contentBox').query(".c-permalink").addClass('displaynone');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
		}
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
	setWidth : function(width) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
	    this.overlay.get('boundingBox').setStyle("width", width + 'px');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
	activate:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
		// debug !!
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
//		CY.log('activate' + this.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
		this.overlay.get('boundingBox').addClass('c-focus-comment') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
		
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
	deactivate:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
		// debug !!
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
//		CY.log('deactivate' + this.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
		this.overlay.get('boundingBox').removeClass('c-focus-comment') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
	hide:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
		// is IComment the top active one ?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
		if (gIComments.isTopActive(this.commentId)) { // then try to activate next in displayed list
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
			if (!gIComments.activateVisibleNext())
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
				gIComments.deactivate() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
		if (this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
			this.overlay.hide();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
			this.overlay.blur() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
	hideContent:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
		this.overlay.get('contentBox').query(".icomment-header").addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
		this.overlay.get('contentBox').query(".icomment-body").addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
	showContent:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
		this.overlay.get('contentBox').query(".icomment-header").removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
		this.overlay.get('contentBox').query(".icomment-body").removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
	isVisible:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
		return this.overlay.get('visible') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
	show:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
		this.hideReadRepliesLnk() ; // for now
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
		return this.overlay.show() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
	showReadRepliesLnk:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
		this.overlay.get('contentBox').query(".c-readreplies").removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
	hideReadRepliesLnk:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
		this.overlay.get('contentBox').query(".c-readreplies").addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
	changeModeration:function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
		var moderationLnk = this.overlay.get('contentBox').query(".c-moderate") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
		moderationLnk.set("innerHTML", gettext(comment.state)) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
		moderationLnk.removeClass("c-state-approved") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
		moderationLnk.removeClass("c-state-pending") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
		moderationLnk.removeClass("c-state-unapproved") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
		moderationLnk.addClass("c-state-" + comment.state) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
		this.overlay.get('contentBox').query(".c-iactions").removeClass("displaynone") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
		this.overlay.get('contentBox').query(".c-state-actions").addClass("displaynone") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
	isfetched : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
		return (this.commentId != null) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
	unfetch : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
		this.commentId = null ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
	fetch : function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
		this.commentId = comment.id ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
		// TITLE
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
		var titleInfos = interpolate(gettext('last modified on %(date)s'),{'date':comment.modified_user_str}, true) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
		var modifDateTooltip = (comment.modified == comment.created) ? '' : '<a title="' + titleInfos + '"> * </a>' ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
		var permaTitle = gettext('Permalink to this comment') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
		var permalink = '<a class="c-permalink displaynone c-action" target="_blank" title="'+ permaTitle +'" href="" >¶&nbsp;</a>' ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
		var infos = interpolate(gettext('by %(name)s, created on %(date)s'),{'name':comment.name, 'date':comment.created_user_str}, true) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
		var newTitleContent = '<span class="c-header"><div class="c-header-title">' + comment.title + permalink + '</div><div class="c-infos">' + infos + '</div></span>' ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
		var newTitleNode = CY.Node.create(newTitleContent) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
		var prevTitleNode = boundingBoxNode.query(".c-header") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
		if (prevTitleNode == null) // first time, no title yet
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
			boundingBoxNode.query('.icomment-header').insertBefore(newTitleNode, boundingBoxNode.one('.c-iactions')) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
		else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
			prevTitleNode.get('parentNode').replaceChild(newTitleNode, prevTitleNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
		// TAG
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
		var newTagNode = CY.Node.create('<div class="c-tags"><span class="c-tags-infos">' + 'tags:' + '</span>' + comment.tags + '</div>') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
		var prevTagNode = boundingBoxNode.query(".c-tags") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
		if (prevTagNode == null) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
			boundingBoxNode.query('.icomment-header').appendChild(newTagNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
		else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
			prevTagNode.get('parentNode').replaceChild(newTagNode, prevTagNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
		// NO TAG ?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
		if (comment.tags == "")
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
			newTagNode.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
		// CONTENT
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
		var newContentNode = CY.Node.create('<span class="c-content">' + comment.content_html + '</span>') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
		var prevContentNode = boundingBoxNode.query(".c-content") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
		if (prevContentNode == null) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
			boundingBoxNode.query('.icomment-body').appendChild(newContentNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
		else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
			prevContentNode.get('parentNode').replaceChild(newContentNode, prevContentNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
		// PERMALINK
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
		boundingBoxNode.query(".c-permalink").set("href",sv_site_url + comment.permalink) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
		// MODERATION
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
		this.changeModeration(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
		// also change link title to give users the possibility to know comment id (to be able to reference this exact comment in GET arguments) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
		var moderationLnk = this.overlay.get('contentBox').query(".c-moderate") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
		//var cid = (comment.reply_to_id == null) ? this.commentId : "" ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
		moderationLnk.set("title", "click to change comment ID visibility".replace(/ID/, this.commentId).replace(/  /, " ")) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
		// open links in new window :
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
		var links = boundingBoxNode.queryAll(".c-content a") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
		if (links != null)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
			links.setAttribute( "target" , "_blank" ) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
		links = boundingBoxNode.queryAll(".c-header-title a") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
		if (links != null)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
			links.setAttribute( "target" , "_blank" ) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
		this.permAdapt(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
	permAdapt : function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
		// this comment permissions 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
		var delLnk = this.overlay.get('contentBox').query(".c-delete") ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
		if (delLnk) {	// there will be a server side check anyway
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
			if (!comment.can_delete)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
				delLnk.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
			else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
				delLnk.removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
		var editLnk = this.overlay.get('contentBox').query(".c-edit") ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
		if (editLnk) {	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
			if (!comment.can_edit) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
				editLnk.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
			else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
				editLnk.removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
		var replyLnk = this.overlay.get('contentBox').query(".c-reply") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
		if (replyLnk) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
			if (!hasPerm("can_create_comment"))
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
				replyLnk.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
			else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
				replyLnk.removeClass('displaynone') ;
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
		var moderateLnk = this.overlay.get('contentBox').query(".c-moderate") ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
		if (moderateLnk) {	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
			if (!comment.can_moderate)  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
				moderateLnk.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
			else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
				moderateLnk.removeClass('displaynone') ;
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
	setThreadPad : function(pad) { // TODO review ...
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
		this.overlay.get('contentBox').query('.yui-widget-hd').setStyle('paddingLeft', pad + 'px') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
		this.overlay.get('contentBox').query('.yui-widget-bd').setStyle('paddingLeft', pad + 'px') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
	setPosition : function(xy) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
	    boundingBoxNode.setStyle("opacity", 1); // TODO check this is still usefull
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
	   	boundingBoxNode.setXY(xy) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
	getPosition : function(xy) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
	   	return boundingBoxNode.getXY() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
	onAnimationEnd : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
		if (!CY.Lang.isUndefined(this['animation-handle']) && !CY.Lang.isNull(this['animation-handle'])) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
			this['animation-handle'].detach() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
			this['animation-handle'] = null ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
//			CY.log('detached...') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
		gIComments.signalAnimationEnd() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
		if (gIComments.animationsEnded())
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
			gIComments.whenAnimationsEnd() ;		
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
	//aa = new CY.Anim({node:gIComments._c[0].overlay.get('boundingBox'), to:{xy : [0,0]}, duration:2.0})
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
	setAnimationToPosition : function(toXY) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
		// ANIMATION
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
	    // 2 lines of optim that could be removed (0.011)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
		if (gPrefs.get('general','animduration') < 0.011) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
	    	boundingBoxNode.setXY(toXY) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
		this.animation.set('to', { xy: toXY});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
		this.animation.set('duration', gPrefs.get('general','animduration')) ; // shouldn't be here really ...
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
		this['animation-handle'] = this.animation.on('end', this.onAnimationEnd, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
		return this.animation ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
	setWidth : function(width) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
		// POSITION
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
	    boundingBoxNode.setStyle("width", width + 'px');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
	getHeight : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
		return this.overlay.get('boundingBox').get('offsetHeight') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
	scrollIntoView : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
		//this.isVisible() && 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
		if (!this.overlay.get('contentBox').inViewportRegion())
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
			this.overlay.get('contentBox').scrollIntoView(true) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
	_isHostingAForm : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
		return (this.isVisible() && ((gNewReplyHost != null && gNewReplyHost == this) || (gEditICommentHost != null && gEditICommentHost == this)));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
}