src/cm/media/js/client/c_icomment.js
author rbernard
Sat, 13 Feb 2010 13:38:08 +0100
changeset 184 0d9a2a99ffda
parent 144 e7e1bc64f613
child 206 38aa907c6479
permissions -rw-r--r--
add text anchor support (fixes #44)
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") ;
106
rbernard
parents: 103
diff changeset
    29
	var scopeRemoved = gettext("Comment is detached: it was created on a previous version and text it applied to has been modified or removed.") ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
	// no header, no body yet 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
	this.overlay = new CY.Overlay( {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
		zIndex :3,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
		shim :false, /* until we really need it, no shim */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
		visible :false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
		width : iCommentWidth,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
		xy : [ iCommentLeft, 0 ],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
		headerContent :	'<div class="icomment-header">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
							'<div class="c-iactions">' +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
								'<a class="c-moderate c-action" title="">'+ "vis" +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
								'<a class="c-edit c-action" title="'+ editComment +'" alt="' + editComment + '">' + edit + '</a>' + " " +   
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
								'<a class="c-delete c-action" title="'+ deleteComment +'" alt="' + deleteComment + '">' + del + '</a>' + " " +   
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
							'</div>' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
							'<div class="c-state-actions displaynone">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
								changeTo + '&nbsp;' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
								'<a class="c-state-pending c-action" title="' + changeToPending + '" alt="' + changeToPending + '">'+ pending +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
								'<a class="c-state-approved c-action" title="' + changeToApprove + '" alt="' + changeToApprove + '">'+ approved +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
								'<a class="c-state-unapproved c-action" title="' + changeToUnapprove + '" alt="' + changeToUnapprove + '">'+ unapproved +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
								'<a class="c-state-cancel c-action" title="' + cancelChange + '" alt="' + cancelChange + '">' + cancel +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
							'</div>' + 
103
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
    51
							'<div class="c-no-scope-msg">' +
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
    52
								scopeRemoved +  
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
    53
							'</div>' + 
11
7b8167c4aa6f simplified style management. checked gray and notelike styles self sufficiency.
reno
parents: 8
diff changeset
    54
							'<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
    55
							'<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
    56
						'</div>',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
		bodyContent :	'<div class="icomment-body">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
						'<span class="c-content"></span>' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
						'<span class="c-ireplyactions">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
						'<a class="c-readreplies c-action" title="'+ showReplies +'" alt="' + showReplies + '">' + showReplies +'</a>' + " " +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
						'<a class="c-reply c-action" title="'+ reply +'" alt="' + reply + '">' + reply +'</a>' + "&nbsp;" +  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
						'</span>' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
						'</div>'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
	});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
	this.overlay.get('contentBox').addClass("c-comment") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
	// attach to DOM
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
	this.overlay.render('#leftcolumn');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
	this.animation = new CY.Anim({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
        node: this.overlay.get('boundingBox'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
        duration: gPrefs.get('general','animduration'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
        easing: CY.Easing.easeOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
    });		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
	// CY.on won't work 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
	this.overlay.get('contentBox').query(".c-close").on("click", this.onCloseCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
	this.overlay.get('contentBox').query(".c-moderate").on("click", this.onModerateCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
	this.overlay.get('contentBox').query(".c-state-pending").on("click", this.onPendingCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
	this.overlay.get('contentBox').query(".c-state-approved").on("click", this.onApprovedCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
	this.overlay.get('contentBox').query(".c-state-unapproved").on("click", this.onUnapprovedCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
	this.overlay.get('contentBox').query(".c-state-cancel").on("click", this.onCancelStateChangeClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
	this.overlay.get('contentBox').query(".c-edit").on("click", this.onEditCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
	this.overlay.get('contentBox').query(".c-delete").on("click", this.onDeleteCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
	this.overlay.get('contentBox').query(".c-reply").on("click", this.onReplyCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
	this.overlay.get('contentBox').query(".c-readreplies").on("click", this.onReadRepliesCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
	this.overlay.get('contentBox').query(".icomment-header").on("mouseenter", this.onMouseEnterHeader, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
	this.overlay.get('contentBox').query(".icomment-header").on("mouseleave", this.onMouseLeaveHeader, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
	this.overlay.get('contentBox').on("click", this.onCommentClick, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
IComment.prototype = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
	// 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
    97
	// 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
    98
	// (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
    99
	// 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
   100
	onCloseCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
		if (readyForAction() && this.isVisible()) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
			gSync.closeComment(this) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
	onModerateCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
			this.overlay.get('contentBox').query(".c-iactions").addClass("displaynone") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
			this.overlay.get('contentBox').query(".c-state-actions").removeClass("displaynone") ;
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
	onPendingCommentClick : 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, 'pending') ;
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
	onApprovedCommentClick : 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, 'approved') ;
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
	onUnapprovedCommentClick : 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
			gSync.moderateComment(this, 'unapproved') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
	onCancelStateChangeClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
			this.overlay.get('contentBox').query(".c-iactions").removeClass("displaynone") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
			this.overlay.get('contentBox').query(".c-state-actions").addClass("displaynone") ;
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
	onDeleteCommentClick : 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.removeComment(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
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
	onEditCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
		if (readyForAction() && this.isVisible()) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
			gSync.showEditForm(this) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
	onReplyCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
		e.halt() ; // prevent click triggered on content box
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
		if (readyForAction() && this.isVisible()) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
			gSync.showReplyForm(this) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
	onReadRepliesCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
		e.halt() ; // prevent click triggered on content box
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
			gSync.openComment(this) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
	onCommentClick : function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
			// 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
   161
			if (e.target.get("target") == "_blank") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
				var link = e.target ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
				var showCommentUrl = sv_site_url + sv_text_view_show_comment_url ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
				if (link.get('href').indexOf(showCommentUrl) == 0) { 
144
e7e1bc64f613 lpermalink uses id_key
rbernard
parents: 106
diff changeset
   165
					var res = (new RegExp('comment_id_key=([^&]*)', "g")).exec(link.get('href')) ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
					if (res != null) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
						// open new comment .... we'll suppose it satisfies the filter for now
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
						// TODO : should we reset the filter in this case ? instead of having the link open in a new window
144
e7e1bc64f613 lpermalink uses id_key
rbernard
parents: 106
diff changeset
   169
						var id_key = res[1] ;
e7e1bc64f613 lpermalink uses id_key
rbernard
parents: 106
diff changeset
   170
						var comment = gDb.getCommentByIdKey(id_key) ;
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
						if (comment != null) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
							e.halt() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
							if (!link.hasClass("c-permalink")) {// clicking on the permalink itself should do anything
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
								checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
									gSync.showSingleComment(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
								}) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
							}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
						}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
			else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
				if (gShowingAllComments) {
103
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   184
					// 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 ....
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   185
					// should be handled via a preventDefault in some way
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
					if (!this._isHostingAForm()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
						var comment = gDb.getComment(this.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
						checkForOpenedDialog(null, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
							if (comment != null) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
								gSync.showSingleComment(comment) ;
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
				else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
					gSync.activate(this) ;
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
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
	onMouseEnterHeader : function () {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
			this.overlay.get('contentBox').query(".c-permalink").removeClass('displaynone');
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
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
	onMouseLeaveHeader : function () {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
		if (readyForAction() && this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
			this.overlay.get('contentBox').query(".c-permalink").addClass('displaynone');
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
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
	setWidth : function(width) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
	    this.overlay.get('boundingBox').setStyle("width", width + 'px');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
	activate:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
		// debug !!
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
//		CY.log('activate' + this.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
		this.overlay.get('boundingBox').addClass('c-focus-comment') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
	deactivate:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
		// debug !!
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
//		CY.log('deactivate' + this.commentId) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
		this.overlay.get('boundingBox').removeClass('c-focus-comment') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
	hide:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
		// is IComment the top active one ?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
		if (gIComments.isTopActive(this.commentId)) { // then try to activate next in displayed list
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
			if (!gIComments.activateVisibleNext())
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
				gIComments.deactivate() ;
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
		if (this.isVisible()) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
			this.overlay.hide();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
			this.overlay.blur() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
	hideContent:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
		this.overlay.get('contentBox').query(".icomment-header").addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
		this.overlay.get('contentBox').query(".icomment-body").addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
	showContent:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
		this.overlay.get('contentBox').query(".icomment-header").removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
		this.overlay.get('contentBox').query(".icomment-body").removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
	isVisible:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
		return this.overlay.get('visible') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
	show:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
		this.hideReadRepliesLnk() ; // for now
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
		return this.overlay.show() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
	showReadRepliesLnk:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
		this.overlay.get('contentBox').query(".c-readreplies").removeClass('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
	hideReadRepliesLnk:function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
		this.overlay.get('contentBox').query(".c-readreplies").addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
	changeModeration:function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
		var moderationLnk = this.overlay.get('contentBox').query(".c-moderate") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
		moderationLnk.set("innerHTML", gettext(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
		moderationLnk.removeClass("c-state-approved") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
		moderationLnk.removeClass("c-state-pending") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
		moderationLnk.removeClass("c-state-unapproved") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
		moderationLnk.addClass("c-state-" + comment.state) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
		this.overlay.get('contentBox').query(".c-iactions").removeClass("displaynone") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
		this.overlay.get('contentBox').query(".c-state-actions").addClass("displaynone") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
	isfetched : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
		return (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
	unfetch : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
		this.commentId = null ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
	fetch : function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
		this.commentId = comment.id ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
		
103
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   284
		if (comment['start_wrapper'] != -1){ 
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   285
			boundingBoxNode.addClass('c-has-scope') ;
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   286
			boundingBoxNode.removeClass('c-has-no-scope') ;
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   287
		}
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   288
		else { 
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   289
			boundingBoxNode.addClass('c-has-no-scope') ;
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   290
			boundingBoxNode.removeClass('c-has-scope') ;
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   291
		}
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   292
		
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   293
		if (comment['reply_to_id'] != null){ 
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   294
			boundingBoxNode.addClass('c-is-reply') ;
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   295
		}
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   296
		else { 
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   297
			boundingBoxNode.removeClass('c-is-reply') ;
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   298
		}
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   299
		
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
		// TITLE
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
		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
   302
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
		var modifDateTooltip = (comment.modified == comment.created) ? '' : '<a title="' + titleInfos + '"> * </a>' ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
		var permaTitle = gettext('Permalink to this comment') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
		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
   306
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
		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
   308
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
		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
   310
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
		var newTitleNode = CY.Node.create(newTitleContent) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
		var prevTitleNode = boundingBoxNode.query(".c-header") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
		if (prevTitleNode == null) // first time, no title yet
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
			boundingBoxNode.query('.icomment-header').insertBefore(newTitleNode, boundingBoxNode.one('.c-iactions')) ;
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
			prevTitleNode.get('parentNode').replaceChild(newTitleNode, prevTitleNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
		// TAG
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
		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
   320
		var prevTagNode = boundingBoxNode.query(".c-tags") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
		if (prevTagNode == null) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
			boundingBoxNode.query('.icomment-header').appendChild(newTagNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
		else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
			prevTagNode.get('parentNode').replaceChild(newTagNode, prevTagNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
		// NO TAG ?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
		if (comment.tags == "")
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
			newTagNode.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
		// CONTENT
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
		var newContentNode = CY.Node.create('<span class="c-content">' + comment.content_html + '</span>') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
		var prevContentNode = boundingBoxNode.query(".c-content") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
		if (prevContentNode == null) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
			boundingBoxNode.query('.icomment-body').appendChild(newContentNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
		else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
			prevContentNode.get('parentNode').replaceChild(newContentNode, prevContentNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
		// PERMALINK
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
		boundingBoxNode.query(".c-permalink").set("href",sv_site_url + comment.permalink) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
		// MODERATION
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
		this.changeModeration(comment) ;
103
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   342
/* useless : use implemendted permanentlink instead
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   343
 * 
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
		// 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
   345
		var moderationLnk = this.overlay.get('contentBox').query(".c-moderate") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
		//var cid = (comment.reply_to_id == null) ? this.commentId : "" ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
		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
   348
		
103
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   349
 */		
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
		// open links in new window :
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
		var links = boundingBoxNode.queryAll(".c-content a") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
		if (links != null)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
			links.setAttribute( "target" , "_blank" ) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
		links = boundingBoxNode.queryAll(".c-header-title a") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
		if (links != null)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
			links.setAttribute( "target" , "_blank" ) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
		this.permAdapt(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
	permAdapt : function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
		// this comment permissions 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
		var delLnk = this.overlay.get('contentBox').query(".c-delete") ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
		if (delLnk) {	// there will be a server side check anyway
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
			if (!comment.can_delete)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
				delLnk.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
				delLnk.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
		var editLnk = this.overlay.get('contentBox').query(".c-edit") ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
		if (editLnk) {	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
			if (!comment.can_edit) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
				editLnk.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
			else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
				editLnk.removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
		var replyLnk = this.overlay.get('contentBox').query(".c-reply") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
		if (replyLnk) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
			if (!hasPerm("can_create_comment"))
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
				replyLnk.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
			else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
				replyLnk.removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
		var moderateLnk = this.overlay.get('contentBox').query(".c-moderate") ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
		if (moderateLnk) {	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
			if (!comment.can_moderate)  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
				moderateLnk.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
			else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
				moderateLnk.removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
	setThreadPad : function(pad) { // TODO review ...
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
		this.overlay.get('contentBox').query('.yui-widget-hd').setStyle('paddingLeft', pad + 'px') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
		this.overlay.get('contentBox').query('.yui-widget-bd').setStyle('paddingLeft', pad + 'px') ;
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
	setPosition : function(xy) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
	    boundingBoxNode.setStyle("opacity", 1); // TODO check this is still usefull
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
	   	boundingBoxNode.setXY(xy) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
	getPosition : function(xy) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
	   	return boundingBoxNode.getXY() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
	onAnimationEnd : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
		if (!CY.Lang.isUndefined(this['animation-handle']) && !CY.Lang.isNull(this['animation-handle'])) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
			this['animation-handle'].detach() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
			this['animation-handle'] = null ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
//			CY.log('detached...') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
		gIComments.signalAnimationEnd() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
		if (gIComments.animationsEnded())
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
			gIComments.whenAnimationsEnd() ;		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
	//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
   423
	setAnimationToPosition : function(toXY) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
		// ANIMATION
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
	    // 2 lines of optim that could be removed (0.011)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
		if (gPrefs.get('general','animduration') < 0.011) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
	    	boundingBoxNode.setXY(toXY) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
		this.animation.set('to', { xy: toXY});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
		this.animation.set('duration', gPrefs.get('general','animduration')) ; // shouldn't be here really ...
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
		this['animation-handle'] = this.animation.on('end', this.onAnimationEnd, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
		return this.animation ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
	setWidth : function(width) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
		// POSITION
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
	    boundingBoxNode.setStyle("width", width + 'px');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
	getHeight : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
		return this.overlay.get('boundingBox').get('offsetHeight') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
	scrollIntoView : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
		//this.isVisible() && 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
		if (!this.overlay.get('contentBox').inViewportRegion())
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
			this.overlay.get('contentBox').scrollIntoView(true) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
	_isHostingAForm : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
		return (this.isVisible() && ((gNewReplyHost != null && gNewReplyHost == this) || (gEditICommentHost != null && gEditICommentHost == this)));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
}