diff src/nabble/view/naml/people.naml @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children 18cf4872fd7f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nabble/view/naml/people.naml	Thu Mar 21 19:15:52 2019 -0600
@@ -0,0 +1,337 @@
+<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.registered_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.registered_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.registered_group>
+				<then.select_option value="[n.page_node.people_path/]" text="[t]Registered Users[/t]"/>
+			</n.if.page_node.allows_showing_members_of.registered_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.registered_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>
\ No newline at end of file