src/cm/media/js/client/c_icomment.js
author gibus
Mon, 08 Nov 2010 14:00:41 +0100
changeset 330 db7616686c57
parent 329 00df963f91fb
child 337 614669e0e313
permissions -rw-r--r--
oops forgot "else" on last commit
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:") ;
206
38aa907c6479 bug fix #32
rbernard
parents: 144
diff changeset
    22
	var reply = ngettext("reply","replies",1) ; // hack to get django to add 'replies' as the plural in f_text_view_frame !!
0
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 () {
294
c2c262ac1273 do not show permalink if prefix is used in embed params / minified client update
raph
parents: 217
diff changeset
   201
		if (readyForAction() && this.isVisible() && (sv_prefix=="")) {
0
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 () {
294
c2c262ac1273 do not show permalink if prefix is used in embed params / minified client update
raph
parents: 217
diff changeset
   207
		if (readyForAction() && this.isVisible() && (sv_prefix=="")) {
0
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') ;
294
c2c262ac1273 do not show permalink if prefix is used in embed params / minified client update
raph
parents: 217
diff changeset
   305
		var permalink = "";
c2c262ac1273 do not show permalink if prefix is used in embed params / minified client update
raph
parents: 217
diff changeset
   306
		if (sv_prefix=="") {
c2c262ac1273 do not show permalink if prefix is used in embed params / minified client update
raph
parents: 217
diff changeset
   307
			permalink = '<a class="c-permalink displaynone c-action" target="_blank" title="'+ permaTitle +'" href="" >¶&nbsp;</a>' ;
c2c262ac1273 do not show permalink if prefix is used in embed params / minified client update
raph
parents: 217
diff changeset
   308
		}
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
		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
   311
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
		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
   313
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
		var newTitleNode = CY.Node.create(newTitleContent) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
		var prevTitleNode = boundingBoxNode.query(".c-header") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
		if (prevTitleNode == null) // first time, no title yet
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
			boundingBoxNode.query('.icomment-header').insertBefore(newTitleNode, boundingBoxNode.one('.c-iactions')) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
		else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
			prevTitleNode.get('parentNode').replaceChild(newTitleNode, prevTitleNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
		// TAG
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
		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
   323
		var prevTagNode = boundingBoxNode.query(".c-tags") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
		if (prevTagNode == null) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
			boundingBoxNode.query('.icomment-header').appendChild(newTagNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
		else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
			prevTagNode.get('parentNode').replaceChild(newTagNode, prevTagNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
		// NO TAG ?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
		if (comment.tags == "")
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
			newTagNode.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
		// CONTENT
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
		var newContentNode = CY.Node.create('<span class="c-content">' + comment.content_html + '</span>') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
		var prevContentNode = boundingBoxNode.query(".c-content") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
		if (prevContentNode == null) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
			boundingBoxNode.query('.icomment-body').appendChild(newContentNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
		else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
			prevContentNode.get('parentNode').replaceChild(newContentNode, prevContentNode) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
		// PERMALINK
294
c2c262ac1273 do not show permalink if prefix is used in embed params / minified client update
raph
parents: 217
diff changeset
   341
		if (sv_prefix=="") {
c2c262ac1273 do not show permalink if prefix is used in embed params / minified client update
raph
parents: 217
diff changeset
   342
			boundingBoxNode.query(".c-permalink").set("href",sv_site_url + comment.permalink) ;
c2c262ac1273 do not show permalink if prefix is used in embed params / minified client update
raph
parents: 217
diff changeset
   343
		}
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
		// MODERATION
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
		this.changeModeration(comment) ;
103
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   347
/* useless : use implemendted permanentlink instead
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   348
 * 
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
		// 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
   350
		var moderationLnk = this.overlay.get('contentBox').query(".c-moderate") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
		//var cid = (comment.reply_to_id == null) ? this.commentId : "" ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
		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
   353
		
103
61fd17f9ab78 enh: detached comments
rbernard
parents: 11
diff changeset
   354
 */		
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
		// open links in new window :
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
		var links = boundingBoxNode.queryAll(".c-content a") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
		if (links != null)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
			links.setAttribute( "target" , "_blank" ) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
		links = boundingBoxNode.queryAll(".c-header-title a") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
		if (links != null)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
			links.setAttribute( "target" , "_blank" ) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
		this.permAdapt(comment) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
	permAdapt : function(comment) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
		// this comment permissions 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
		var delLnk = this.overlay.get('contentBox').query(".c-delete") ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
		if (delLnk) {	// there will be a server side check anyway
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
			if (!comment.can_delete)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
				delLnk.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
			else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
				delLnk.removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
		var editLnk = this.overlay.get('contentBox').query(".c-edit") ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
		if (editLnk) {	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
			if (!comment.can_edit) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
				editLnk.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
			else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
				editLnk.removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
		var replyLnk = this.overlay.get('contentBox').query(".c-reply") ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
		if (replyLnk) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
			if (!hasPerm("can_create_comment"))
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
				replyLnk.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
			else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
				replyLnk.removeClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
		var moderateLnk = this.overlay.get('contentBox').query(".c-moderate") ; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
		if (moderateLnk) {	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
			if (!comment.can_moderate)  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
				moderateLnk.addClass('displaynone') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
			else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
				moderateLnk.removeClass('displaynone') ;
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
	setThreadPad : function(pad) { // TODO review ...
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
		this.overlay.get('contentBox').query('.yui-widget-hd').setStyle('paddingLeft', pad + 'px') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
		this.overlay.get('contentBox').query('.yui-widget-bd').setStyle('paddingLeft', pad + 'px') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
	setPosition : function(xy) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
	    boundingBoxNode.setStyle("opacity", 1); // TODO check this is still usefull
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
	   	boundingBoxNode.setXY(xy) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
	getPosition : function(xy) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
	   	return boundingBoxNode.getXY() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
	onAnimationEnd : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
		if (!CY.Lang.isUndefined(this['animation-handle']) && !CY.Lang.isNull(this['animation-handle'])) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
			this['animation-handle'].detach() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
			this['animation-handle'] = null ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
//			CY.log('detached...') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
		gIComments.signalAnimationEnd() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
		if (gIComments.animationsEnded())
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
			gIComments.whenAnimationsEnd() ;		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
	},
329
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   426
	onAnimationEndFocus : function() {
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   427
		if (!CY.Lang.isUndefined(this['animation-handle']) && !CY.Lang.isNull(this['animation-handle'])) { 
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   428
			this['animation-handle'].detach() ;
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   429
			this['animation-handle'] = null ;
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   430
//			CY.log('detached...') ;
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   431
		}
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   432
		gIComments.signalAnimationEnd() ;
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   433
		if (gIComments.animationsEnded())
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   434
			gIComments.whenAnimationsEndFocus() ;		
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   435
	},
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
	//aa = new CY.Anim({node:gIComments._c[0].overlay.get('boundingBox'), to:{xy : [0,0]}, duration:2.0})
329
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   438
	setAnimationToPosition : function(toXY, focus) {
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
		var boundingBoxNode = this.overlay.get('boundingBox') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
		// ANIMATION
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
	    // 2 lines of optim that could be removed (0.011)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
		if (gPrefs.get('general','animduration') < 0.011) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
	    	boundingBoxNode.setXY(toXY) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
		this.animation.set('to', { xy: toXY});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
		this.animation.set('duration', gPrefs.get('general','animduration')) ; // shouldn't be here really ...
329
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   448
    if (focus)
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   449
    	this['animation-handle'] = this.animation.on('end', this.onAnimationEndFocus, this);
330
db7616686c57 oops forgot "else" on last commit
gibus
parents: 329
diff changeset
   450
    else
329
00df963f91fb When comment_id_key is passed as URL parameter, focus on this comment, instead of the top comment of the related thread.
gibus
parents: 294
diff changeset
   451
    	this['animation-handle'] = this.animation.on('end', this.onAnimationEnd, this);
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
		return this.animation ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
	getHeight : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
		return this.overlay.get('boundingBox').get('offsetHeight') ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
	scrollIntoView : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
		//this.isVisible() && 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
		if (!this.overlay.get('contentBox').inViewportRegion())
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
			this.overlay.get('contentBox').scrollIntoView(true) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
	_isHostingAForm : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
		return (this.isVisible() && ((gNewReplyHost != null && gNewReplyHost == this) || (gEditICommentHost != null && gEditICommentHost == this)));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
}