people.naml
<macro name="app_people" requires="servlet">
<n.app_people_caching/>
<n.node_page.>
<n.html>
<head>
<n.people_head/>
</head>
<body>
<n.people_header/>
<n.people_tabbed_pane/>
</body>
</n.html>
</n.node_page.>
</macro>
<macro name="app_people_caching">
<n.if.not.is_online_users>
<then.uncache_for.>
<n.new_user/>
<n.user_group_change/>
</then.uncache_for.>
</n.if.not.is_online_users>
</macro>
<macro name="people_head">
<n.people_title/>
<n.if.is_null.people_filter>
<then>
<META NAME="description" CONTENT="[t]People in [t.location.page_node.subject/][/t]"/>
<META NAME="keywords" CONTENT="[n.page_node.subject/], users, posters, members, administrators, community"/>
</then>
</n.if.is_null.people_filter>
</macro>
<macro name="people_title">
<n.title.>
<t>People in <t.location.page_node.subject/></t>
<n.if.not.is_null.people_filter>
<then>(<n.people_filter/>)</then>
</n.if.not.is_null.people_filter>
</n.title.>
</macro>
<macro name="people_header">
<h2 class="weak-color">
<img src="/images/people.png" class="image24" alt="[t]People[/t]"/>
<t>People in <t.location.page_node.subject/></t>
</h2>
</macro>
<macro name="people_tabbed_pane">
<div style="margin:.5em 0">
<n.horizontal_tab_control.>
<n.add_horizontal_tab
url="[n.page_node.people_path/]"
text="[t]Users & Groups[/t]"
selected="[n.not.is_online_users/]"
details="[n.visible_users_table.people_columns/]"
/>
<n.add_horizontal_tab
url="[n.page_node.people_path filter='online-users'/]"
text="[t]Online Users[/t]"
selected="[n.is_online_users/]"
details="[n.online_users_table.people_columns/]"
/>
</n.horizontal_tab_control.>
</div>
</macro>
<macro name="people_columns">
<n.set_visitor_online/>
<n.user_column width="70%"/>
<n.user_state_column/>
<n.user_post_count_column/>
</macro>
<macro name="online_users_table" dot_parameter="columns" requires="node_page">
<n.online_users. include_invisible_users="[n.visitor.is_site_admin/]">
<n.filter_by.current_user.can_view.page_node/>
<n.sort_by_node_count_desc/>
<n.people_table.>
<n.columns/>
</n.people_table.>
</n.online_users.>
<div class="weak-color" style="margin-top:1em">
<n.one_or_many.online_anonymous_users_count>
<one_text><t>anonymous user</t></one_text>
<many_text><t>anonymous users</t></many_text>
</n.one_or_many.online_anonymous_users_count>
<br/>
<n.one_or_many.online_invisible_users_count>
<one_text><t>invisible user</t></one_text>
<many_text><t>invisible users</t></many_text>
</n.one_or_many.online_invisible_users_count>
</div>
</macro>
<macro name="visible_users_list" dot_parameter="do" requires="node_page">
<n.if.is_null.people_filter>
<then>
<n.if.page_node.allows_showing_members_of.anyone_group>
<then>
<n.site_users. start="0" length="99999" filter="[n.registered_filter/]">
<n.filter_by.current_user.not.is_banned/>
<n.do/>
</n.site_users.>
</then>
<else>
<!-- get the first group available -->
<n.available_groups.>
<n.if.next_element>
<then>
<n.users_in_group. group="[n.current_group/]">
<n.filter_by.current_user.both condition1="[n.not.is_deactivated/]" condition2="[n.not.is_banned/]"/>
<n.sort_by_node_count_desc/>
<n.do/>
</n.users_in_group.>
</then>
<else.empty_users_list.do/>
</n.if.next_element>
</n.available_groups.>
</else>
</n.if.page_node.allows_showing_members_of.anyone_group>
</then>
<else>
<!-- get the filtered group -->
<n.if.page_node.allows_showing_members_of.people_filter>
<then>
<n.users_in_group. group="[n.people_filter/]">
<n.filter_by.current_user.both condition1="[n.not.is_deactivated/]" condition2="[n.not.is_banned/]"/>
<n.sort_by_node_count_desc/>
<n.do/>
</n.users_in_group.>
</then>
<else.empty_users_list.do/>
</n.if.page_node.allows_showing_members_of.people_filter>
</else>
</n.if.is_null.people_filter>
</macro>
<macro name="visible_users_table" dot_parameter="columns" requires="node_page">
<n.visible_users_list.>
<n.show_people_filter total_rows="[n.element_count/]"/>
<n.people_pagination total_rows="[n.element_count/]" />
<n.sub_list. start="[n.people_page_index_record/]" length="[n.people_page_length/]">
<n.people_table.>
<n.columns/>
</n.people_table.>
</n.sub_list.>
</n.visible_users_list.>
</macro>
<macro name="show_people_filter" parameters="total_rows" requires="node_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="nowrap float-left" style="margin-bottom:.3em">
<b><t>Filter by group</t></b>
<select id="filter">
<n.if.page_node.allows_showing_members_of.anyone_group>
<then.select_option value="[n.page_node.people_path/]" text="[t]Registered Users[/t]"/>
</n.if.page_node.allows_showing_members_of.anyone_group>
<n.available_groups.loop.>
<n.select_option value="[n.page_node.people_path.current_group/]" selectedValue="[n.page_node.people_path.people_filter/]" text="[n.current_group/]"/>
</n.available_groups.loop.>
</select>
<span class="bold" style="padding-left:1em">
<n.one_or_many.total_rows>
<one_text><t>user</t></one_text>
<many_text><t>users</t></many_text>
</n.one_or_many.total_rows>
</span>
</div>
</macro>
<macro name="available_groups" dot_parameter="do" requires="node_page">
<n.page_node.groups_with_permission. permission="[n.show_group_members_permission/]">
<n.remove.anyone_group/>
<n.sort/>
<n.do/>
</n.page_node.groups_with_permission.>
</macro>
<macro name="people_table" dot_parameter="columns" requires="user_list">
<n.put_in_head.>
<style type="text/css">
table.people {
width:100%;
border-collapse:collapse;
clear:both;
}
table.people td {
padding:.1em .3em;
}
tr.header-row td {
font-weight:bold;
padding: .3em;
}
</style>
</n.put_in_head.>
<n.zebra_table_javascript table_selector="table.people"/>
<table class="people">
<n.table_header.>
<tr class="header-row shaded-bg-color">
<n.columns/>
</tr>
</n.table_header.>
<n.loop.>
<tr class="people-row">
<n.columns/>
</tr>
</n.loop.>
</table>
</macro>
<macro name="user_column" parameters="title,width" requires="user_list">
<n.table_column>
<head>
<td style="[n.width_style.width/]">
<n.default. to="[t]Name[/t]"><n.title/></n.default.>
</td>
</head>
<body>
<td class="weak-color">
<table class="avatar-table">
<tr>
<td style="padding:0;vertical-align:top">
<n.current_user.avatar size="small"/>
</td>
<td class="nowrap" style="width:100%;padding:0 .3em">
<n.current_user.user_link/>
</td>
</tr>
</table>
</td>
</body>
</n.table_column>
</macro>
<macro name="user_state_column" parameters="title,width" requires="user_list">
<n.table_column>
<head>
<td></td>
</head>
<body>
<td class="weak-color">
<n.if.current_user.is_anonymous>
<then><t>Anonymous</t></then>
<else>
<n.if.current_user.is_registered>
<then><t>Registered</t></then>
<else>
<n.if.current_user.is_deactivated>
<then><t>Unregistered / Deactivated</t></then>
<else><t>Unregistered</t></else>
</n.if.current_user.is_deactivated>
</else>
</n.if.current_user.is_registered>
</else>
</n.if.current_user.is_anonymous>
</td>
</body>
</n.table_column>
</macro>
<macro name="user_post_count_column" parameters="title,width" requires="user_list">
<n.table_column>
<head>
<td class="nowrap" style="text-align:center;[n.width_style.width/]">
<n.default. to="[t]Post Count[/t]"><n.title/></n.default.>
</td>
</head>
<body>
<td class="weak-color" style="text-align:center">
<n.current_user.node_count/>
</td>
</body>
</n.table_column>
</macro>
<macro name="people_pagination" parameters="total_rows" requires="node_page">
<n.paging.
total_rows="[n.total_rows/]"
current_row="[n.people_page_index_record/]"
rows_per_page="[n.people_page_length/]"
>
<n.generic_paging>
<margin>.55em .2em</margin>
<url><n.page_node.people_path filter="[n.people_filter/]" index_record="[n.page_row/]"/></url>
</n.generic_paging>
</n.paging.>
</macro>
<macro name="people_path" requires="node" dot_parameter="filter" parameters="index_record">
<n.encode_url.remove_spaces.>
/template/NamlServlet.jtp?macro=app_people&node=<n.id/>
<n.add_to_path name="filter" value="[n.filter/]"/>
<n.add_to_path name="i" value="[n.index_record/]" default_value="0"/>
</n.encode_url.remove_spaces.>
</macro>
<macro name="people_filter" requires="servlet">
<n.get_parameter name="filter"/>
</macro>
<macro name="people_page_index_record">
<n.get_parameter name="i"/>
</macro>
<macro name="people_page_length">
20
</macro>
<macro name="is_online_users">
<n.is_people_filter value='online-users' />
</macro>
<macro name="is_people_filter" parameters="value">
<n.equal value1="[n.people_filter/]" value2="[n.value/]" />
</macro>
<macro name="empty_users_list" dot_parameter="do">
<n.site_users. start="0" length="0">
<n.do/>
</n.site_users.>
</macro>