Generic Comment
Recursively-nestable comments
Site Infrastructure / Generic Comment

[show modes: view edit reply]

[begin preamble]
override_title({Comment by [_owner.name]}, "");
[end preamble]

[begin mode topic][
	var r = _id;
	var seen = list(r);
	while(get_template(r) == _template) {[
		r = get_parent(r);
		if(find(seen, r) >= 0)
			return 0;
		seen = merge(seen, list(r));
	]};
	return r;
][end mode topic]

[begin mode children_count][

q = query("c", 0, "id", "parent", _id);
query_count(q) +
	(reduce(
		split(query_run("children_count", q), chr(10))
	) ?(x, y) (x + y));

][end mode children_count]

[begin mode overview]
[msg_start();]
<span style="float: right; font-size: 80%;">
[
    {[soft_age(_date)] ago};
    if(can_edit()) {   <a href="/?mode=edit&id=[$_id]">edit</a> };
    if(can_direct()) {   <a href="/?mode=delete&id=[$_id]">delete</a> };
    if(can_comment()) {   <a href="?id=[$_id]&mode=reply">reply</a> };
]
</span>
<span style="float: left; margin-right: 5px;">
[
if($_owner.profile_id > 0) {[
	page("icon", $_owner.profile_id);
]} else {
	<b>[$_owner.name]</b>:
};
]
</span>
[_emoticons(_wiki_format($_body));]
<div style="clear: both;"></div>
<i style="font-size: 80%">Attached to: <a href="/?id=[$_parent]">[get_title($_parent);]</a></i>
[msg_end();]
[end mode overview]

[begin mode abbr]
<li><a href="/?id=[$_id]">[$_title]</a> by [page("link", $_owner.profile_id);]</li>
[$e = children("abbr", $_id);
if($e != "") {<ul>[$e]</ul>};
]
[end mode abbr]

[begin mode delete]
[$n = delete_page($_id);
children("delete", $_id);
if($n == "1") {
	<p><b>[$_title]</b> has been removed from <b>[get_title($_parent)]</b>.</p>
} else {
	<p><b>[$_title]</b> could not be removed from <b>[get_title($_parent)]</b>
	by you ([$_viewer.name]). If you feel that should be able to do so, now
	might be a good time to
	<a href="mailto:[$_globals.ADMIN_EMAIL]"> write a letter to the administrator</a>.</p>
}]
<p><a href="/?id=[$_parent]">Return to [get_title($_parent)]</a></p>
[end mode delete]

[begin mode view]
[msg_start();]
<span style="float: right; font-size: 80%;">
[
    {[soft_age(_date)] ago};
    if(can_edit()) {   <a href="/?mode=edit&id=[$_id]">edit</a> };
    if(can_direct()) {   <a href="/?mode=delete&id=[$_id]">delete</a> };
    if(can_comment()) {   <a href="?id=[$_id]&mode=reply">reply</a> };
]
</span>
<span style="float: left; margin-right: 5px;">
[
if($_owner.profile_id > 0) {[
	page("icon", $_owner.profile_id);
]} else {
	<b>[$_owner.name]</b>:
};
]
</span>
[_emoticons(_wiki_format($_body));]
<div style="clear: both;"></div>
[msg_end();]
<div style="padding-left: 25px">
[children("view", $_id);]
</div>
[end mode view]

[begin mode edit]
<form method="post" action="/">

	<input type="hidden" name="id" value="[$_id]">
	<input type="hidden" name="mode" value="submit">
	<textarea class="textbox" name="body" rows="15">
[edit_display($_body)]</textarea>
	<br><span class="buttonbox"><input type="submit" value="Revise"></span>

</form>
[end mode edit]
[begin mode submit]
	[$_body = $_params.body; msg_start();]
	Post made. <a href="/?id=[$_parent]">Return to parent entry.</a>
	[msg_end();
	refresh_to({./?id=[_id]}, 1);]
[end mode submit]
[begin mode reply]
	[_post_comment($_id, "reply_submit")]
[end mode reply]
[begin mode reply_submit]
[
	$title = {Comment on [$_id] at [now()] by [$_viewer.name]};
	$e = new_page($title, $_id);
	if($e) {[
		set_body($e, $_params.body);
		set_template($e, title2id("Generic Comment"));
		set_permissions($e, "cadrec--r-c-dr-c--r-");
		set_group($e, $_group);
		if($_group != 0) {[
			if(not(is_user_in_group($_author, $_group)))
				$n = _post_message($_author, {[page("link", $_viewer.profile_id)] posted a reply to 
				<a href="[bare_url()]?id=[$_id]">[$_title]</a> [if($_group != 0) { (Project: <a href="[bare_url()]?id=[get_group_profile_id($_group)]">
		        	[get_title(get_group_profile_id($_group))]</a>)}]:
				<br>[_emoticons(_wiki_format($_params.body, "no toc"))]
			});
			$m = _post_message_group($_group, {
				[page("link", $_viewer.profile_id)] posted a reply to 
				<a href="[bare_url()]?id=[$_id]">[$_title]</a>[
					if($_group != 0)
						{ (Project: <a href="[bare_url()]?id=[get_group_profile_id($_group)]">
						[get_title(get_group_profile_id($_group))]</a>)}
					]:<br>
				[_emoticons(_wiki_format($_params.body, "no toc"))]
			});
		]} else
			$m = _post_message($_author, {[page("link", $_viewer.profile_id)] posted a reply to 
				<a href="[bare_url()]?id=[$_id]">[$_title]</a>:
				<br>[_emoticons(_wiki_format($_params.body, "no toc"))]
			});
		msg_start();]
			Commented successfully!
			<a href="/?id=[$_id]">Return to the comment.</a>
		[msg_end();
		// refresh_to({./?id=[_id]}, 1);
	]} else {[
		msg_start();]
			Couldn't comment.
			Maybe you don't have permissions?
			Are you logged in?
			<a href="/?id=[$_id]">Return to the comment.</a>
		[msg_end();
	]};
]
[end mode reply_submit]