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