user_nodes.naml

<macro name="user_nodes" requires="servlet">
	<n.user_page.>
		<n.html>
			<head>
				<n.user_nodes_meta/>
				<n.title.>
					<t>Profile of <t.author.page_user.name/></t>
					<n.hide_if_equals. value1="[n.user_nodes_page_number/]" value2="1">
						| <t>Page <t.number.user_nodes_page_number/></t>
					</n.hide_if_equals.>
				</n.title.>
				<style type="text/css">
					table.nodes {
						width:100%;
						border-collapse:collapse;
					}
					table.nodes td {
						padding:.3em;
					}
					table.nodes td.header {
						padding: .2em;
						font-weight:bold;
					}
					div.table-title {
						font-weight:bold;
						font-size:120%;
						margin: 1em .1em 1em;
					}
				</style>
			</head>
			<body>
				<n.page_user.profile_header/>

				<n.user_nodes_search_box/>

				<div class="second-font table-title">
					<t>Posts in <t.location.root_node.subject/></t>
				</div>

				<n.user_nodes_table.>
					<n.date_column width="7em"/>
					<n.subject_column/>
					<n.count_column/>
					<n.location_column/>
				</n.user_nodes_table.>
			</body>
		</n.html>
	</n.user_page.>
</macro>

<macro name="user_nodes_search_box" requires="user_page">
	<div class="search-box" style="float:right;white-space:nowrap;margin-top:1em">
		<n.root_node.page_search_box author="[n.page_user.id/]"/>
	</div>
</macro>

<macro name="user_nodes_table" dot_parameter="columns">
	<n.page_user.nodes_list.
		start="[n.user_nodes_index_record/]"
		length="[n.user_nodes_length/]"
		filter="[n.user_nodes_filter_condition/]"
	>
		<div style="position:relative;margin:-.6em 0 .2em">
			<n.user_nodes_pagination/>
			<n.user_nodes_filter_control/>
		</div>
		<table class="nodes">
			<n.table_header.>
				<tr class="header-row shaded-bg-color">
					<n.columns/>
				</tr>
			</n.table_header.>
			<n.loop.>
				<tr class="[n.alternate var='row-class' first_value='main-row' second_value='light-bg-color main-row'/]">
					<n.columns/>
				</tr>
			</n.loop.>
		</table>
		<n.check_omitted_nodes/>
		<n.user_nodes_pagination/>
	</n.page_user.nodes_list.>
</macro>

<macro name="user_nodes_index_record">
	<n.get_parameter name="i"/>
</macro>

<macro name="user_nodes_filter">
	<n.get_parameter name="filter"/>
</macro>

<macro name="user_nodes_length">
	20
</macro>

<macro name="user_nodes_filter_control" requires="user_page">
	<n.put_in_head.>
		<script type="text/javascript">
			$(document).ready(function() {
				function applyFilter() {
					window.location = $('#filter').val();
				};
				$('#filter').change(applyFilter);
			});
		</script>
	</n.put_in_head.>
	<div class="float-left nowrap" style="margin:.3em .2em">
		<b><t>Show</t></b>
		<n.set_var. name='url'>
			<n.page_user.url filter="[n.user_nodes_filter/]"/>
		</n.set_var.>
		<select id="filter">
			<n.select_option value="[n.page_user.url/]" text="[t]All[/t]"/>
			<n.select_option value="[n.page_user.url filter='apps_only'/]" selectedValue="[n.var name='url'/]" text="[t]Apps[/t]"/>
			<n.select_option value="[n.page_user.url filter='topics_only'/]" selectedValue="[n.var name='url'/]" text="[t]Topics[/t]"/>
		</select>
		&nbsp;
		<span class="weak-color" style="font-style: italic">
			<t>Total</t>:
			<n.one_or_many.user_nodes_count>
				<one_text><t>item</t></one_text>
				<many_text><t>items</t></many_text>
			</n.one_or_many.user_nodes_count>
		</span>
	</div>
</macro>

<macro name="user_nodes_filter_condition" requires="user_page">
	<n.if.equal value1="[n.user_nodes_filter/]" value2="apps_only">
		<then.page_user.app_filter/>
		<else.if.equal value1="[n.user_nodes_filter/]" value2="topics_only">
			<then.page_user.topic_filter/>
			<else.null/>
		</else.if.equal>
	</n.if.equal>
</macro>

<macro name="user_nodes_pagination" requires="user_page">
	<n.paging.
		total_rows="[n.user_nodes_count/]"
		current_row="[n.user_nodes_index_record/]"
		rows_per_page="[n.user_nodes_length/]"
	>
		<n.generic_paging>
			<margin>.55em .2em</margin>
			<url><n.page_user.path index_record="[n.page_row/]" filter="[n.user_nodes_filter/]"/></url>
		</n.generic_paging>
	</n.paging.>
</macro>

<macro name="user_nodes_page_number" requires="servlet">
	<n.paging.
		total_rows="0"
		current_row="[n.user_nodes_index_record/]"
		rows_per_page="[n.user_nodes_length/]"
	>
		<n.current_page_number/>
	</n.paging.>
</macro>

<macro name="user_nodes_count" requires="user_page">
	<n.cache. var="user_nodes_count" >
		<n.page_user.node_count filter="[n.user_nodes_filter_condition/]"/>
	</n.cache.>
</macro>

<macro name="path" parameters="index_record,filter" requires="user">
	<n.encode_url.remove_spaces.>
		/template/NamlServlet.jtp?macro=user_nodes&user=<n.id/>
		<n.add_to_path name="i" value="[n.index_record/]" default_value="0"/>
		<n.add_to_path name="filter" value="[n.filter/]"/>
	</n.encode_url.remove_spaces.>
</macro>

<macro name="url" parameters="index_record,filter" requires="user">
	<n.base_url /><n.path index_record="[n.index_record/]" filter="[n.filter/]" />
</macro>

<macro name="date_column" parameters="title,width">
	<n.table_column>
		<head>
			<td class="header" style="[n.width_style.width/]">
				<n.default. to="[t]Date[/t]"><n.title/></n.default.>
			</td>
		</head>
		<body>
			<td class="weak-color">
				<n.current_node.when_created.short_format/>
			</td>
		</body>
	</n.table_column>
</macro>

<macro name="subject_column" parameters="title,width">
	<n.table_column>
		<head>
			<td class="header" colspan="2" style="[n.width_style.width/]">
				<n.default. to="[t]Subject[/t]"><n.title/></n.default.>
			</td>
		</head>
		<body>
			<td style="width:25px;padding:.2em">
				<n.if.current_node.is_app>
					<then><img src="/images/forum_sm.png" class="image16"/></then>
					<else><img src="/images/thread_sm.png" class="image16"/></else>
				</n.if.current_node.is_app>
			</td>
			<td>
				<n.current_node.node_link/>
				<n.if.current_node.is_private>
					<then><span class="weak-color"><t>(private)</t></span></then>
				</n.if.current_node.is_private>
			</td>
		</body>
	</n.table_column>
</macro>

<macro name="count_column" parameters="title,width">
	<n.table_column>
		<head>
			<td class="header" style="[n.width_style.width/]">
				<n.default. to="[t]Count[/t]"><n.title/></n.default.>
			</td>
		</head>
		<body>
			<td class="weak-color nowrap">
				<n.if.current_node.is_app>
					<then>
						<n.one_or_many.current_node.topic_count>
							<one_text><t>topic</t></one_text>
							<many_text><t>topics</t></many_text>
						</n.one_or_many.current_node.topic_count>
					</then>
					<else>
						<n.one_or_many.current_node.replies>
							<one_text><t>reply</t></one_text>
							<many_text><t>replies</t></many_text>
						</n.one_or_many.current_node.replies>
					</else>
				</n.if.current_node.is_app>
			</td>
		</body>
	</n.table_column>
</macro>

<macro name="location_column" parameters="title,width">
	<n.table_column>
		<head>
			<td class="header" style="[n.width_style.width/]">
				<n.default. to="[t]Location[/t]"><n.title/></n.default.>
			</td>
		</head>
		<body>
			<td class="weak-color">
				<n.if.not.current_node.is_app>
					<then><n.current_node.app_or_root.node_link/></then>
				</n.if.not.current_node.is_app>
			</td>
		</body>
	</n.table_column>
</macro>

<macro name="check_omitted_nodes" requires="node_list, user_page">
	<n.comment.>
		Here we check if this page contains the correct number of rows. If this is not the case,
		it is because the visitor doesn't have permission to view them and we must display a message.
		The check is simple: we get the number of rows this page is meant to show (current_page_rows
		command in pagination namespace) and subtract the number of rows displayed (current_index
		of the node_list loop). If the result if greater than zero, then some rows were not displayed and
		we show the message.
	</n.comment.>
	<n.paging.
		total_rows="[n.user_nodes_count/]"
		current_row="[n.user_nodes_index_record/]"
		rows_per_page="[n.user_nodes_length/]"
	>
		<n.int. i="[n.current_page_rows/]">
			<n.no_output.minus i="[n.current_index/]"/>
			<n.if.is_greater_than i="0">
				<then>
					<div class="info-message" style="margin-top:.2em;padding:.7em .5em">
						<t>Some private items have been omitted because you don't have permission to view them.</t>
					</div>
				</then>
			</n.if.is_greater_than>
		</n.int.>
	</n.paging.>
</macro>

<macro name="user_nodes_meta" requires="user_page">
	<n.if.not.equal value1="[n.user_nodes_page_number/]" value2="1">
		<then>
			<meta name="robots" content="noindex,follow"/>
		</then>
	</n.if.not.equal>
</macro>