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