dropdown.naml

<macro name="app_dropdown" requires="node">
	<n.dropdown.
		id="appdropdown"
		text="[t]Options[/t]"
		title="[t]Click for more options[/t]"
		loadOnClick="/template/NamlServlet.jtp?macro=app_dropdown_later&node=[n.id/]"
	>
		<n.menu_subscription/>
		<n.menu_post_by_email/>

		<n.menu_separator/>

		<n.menu_group. text="[t]Application[/t]">
			<n.menu_edit_name_and_description/>
			<n.menu_change_type/>
			<n.menu_change_appearance/>
			<n.menu_change_domain_name/>
			<n.menu_mailing_list_archive_settings/>
			<n.menu_change_language/>
			<n.menu_change_title_and_meta_tags/>
			<n.menu_extras_and_addons/>
			<n.menu_use_google_analytics/>
		</n.menu_group.>

		<n.menu_group. text="[t]Structure[/t]">
			<n.menu_create_sub_app/>
			<n.menu_manage_pinned_topics/>
			<n.menu_manage_sub_apps/>
			<n.menu_parent_options/>
		</n.menu_group.>

		<n.menu_group. text="[t]Users[/t]">
			<n.menu_change_permissions/>
			<n.menu_manage_users_and_groups/>
			<n.menu_manage_subscribers/>
			<n.menu_manage_banned_users/>
		</n.menu_group.>

		<n.menu_separator/>

		<n.menu_embedding_options/>
		<n.menu_download_backup/>
		<n.menu_delete/>

		<n.other_menu_entries/>

		<n.menu_sysadmin_options/>
	</n.dropdown.>
</macro>

<macro name="app_dropdown_later" requires="servlet">
	<n.javascript_response/>
	<n.get_node_from_parameter.>
		<n.menu_subscription/>
		<n.menu_post_by_email/>

		<n.menu_edit_name_and_description/>
		<n.menu_change_type/>
		<n.menu_change_appearance/>
		<n.menu_change_domain_name/>
		<n.menu_mailing_list_archive_settings/>
		<n.menu_change_language/>
		<n.menu_change_title_and_meta_tags/>
		<n.menu_extras_and_addons/>
		<n.menu_use_google_analytics/>

		<n.menu_create_sub_app/>
		<n.menu_manage_pinned_topics/>
		<n.menu_manage_sub_apps/>
		<n.menu_parent_options/>

		<n.menu_change_permissions/>
		<n.menu_manage_users_and_groups/>
		<n.menu_manage_subscribers/>
		<n.menu_manage_banned_users/>

		<n.menu_embedding_options/>
		<n.menu_download_backup/>
		<n.menu_delete/>

		<n.other_menu_entries/>

		<n.menu_sysadmin_options/>
	</n.get_node_from_parameter.>
</macro>

<macro name="topic_dropdown" requires="node">
	<n.dropdown.
		id="topicdropdown"
		text="[t]Options[/t]"
		title="[t]Click for more options[/t]"
		loadOnClick="/template/NamlServlet.jtp?macro=topic_dropdown_later&node=[n.page_node.id/]"
	>
		<n.menu_topic_subscription/>
		<n.menu_separator/>
		<n.menu_move_topic/>
		<n.menu_pin_topic/>
		<n.menu_unpin_topic/>
		<n.menu_lock_topic/>
		<n.menu_unlock_topic/>
		<n.menu_delete_topic/>
		<n.menu_change_title_and_meta_tags/>
		<n.menu_embed_post/>
		<n.menu_permalink/>
	</n.dropdown.>
</macro>

<macro name="topic_dropdown_later" requires="servlet">
	<n.javascript_response/>
	<n.get_node_from_parameter.>
		<n.menu_topic_subscription/>
		<n.menu_delete_topic/>
		<n.menu_move_topic/>
		<n.menu_pin_topic/>
		<n.menu_unpin_topic/>
		<n.menu_lock_topic/>
		<n.menu_unlock_topic/>
		<n.menu_change_title_and_meta_tags/>
	</n.get_node_from_parameter.>
</macro>

<macro name="post_dropdown" requires="node">
	<n.dropdown.
		id="postdropdown[n.id/]"
		text="[t]More[/t]"
		title="[t]Click for more options[/t]"
		loadOnClick="/template/NamlServlet.jtp?macro=post_dropdown_later&node=[n.id/]"
	>
		<n.menu_reply_to_author/>
		<n.menu_edit_post/>
		<n.menu_move_post/>
		<n.menu_delete_post/>
		<n.menu_change_post_date/>
		<n.menu_print_post/>
		<n.menu_permalink/>
		<n.menu_raw_mail/>
	</n.dropdown.>
</macro>

<macro name="post_dropdown_later" requires="servlet">
	<n.javascript_response/>
	<n.get_node_from_parameter.>
		<n.menu_reply_to_author/>
		<n.menu_edit_post/>
		<n.menu_move_post/>
		<n.menu_delete_post/>
		<n.menu_change_post_date/>
		<n.menu_raw_mail/>
	</n.get_node_from_parameter.>
</macro>

<macro name="root_post_dropdown" requires="node">
	<n.dropdown.
		id="rootdropdown[n.id/]"
		text="[t]Options[/t]"
		title="[t]Click for more options[/t]"
		loadOnClick="/template/NamlServlet.jtp?macro=root_post_dropdown_later&node=[n.id/]"
	>
		<n.menu_topic_subscription/>
		<n.menu_reply_to_author/>
		<n.menu_edit_post/>
		<n.menu_move_post/>
		<n.menu_delete_topic/>
		<n.menu_pin_topic/>
		<n.menu_unpin_topic/>
		<n.menu_lock_topic/>
		<n.menu_unlock_topic/>
		<n.menu_change_post_date/>
		<n.menu_change_title_and_meta_tags/>
		<n.menu_embed_post/>
		<n.menu_print_post/>
		<n.menu_permalink/>
		<n.menu_raw_mail/>
	</n.dropdown.>
</macro>

<macro name="root_post_dropdown_later" requires="servlet">
	<n.javascript_response/>
	<n.get_node_from_parameter.>
		<n.menu_topic_subscription/>
		<n.menu_reply_to_author/>
		<n.menu_edit_post/>
		<n.menu_move_post/>
		<n.menu_delete_topic/>
		<n.menu_pin_topic/>
		<n.menu_unpin_topic/>
		<n.menu_lock_topic/>
		<n.menu_unlock_topic/>
		<n.menu_change_post_date/>
		<n.menu_change_title_and_meta_tags/>
		<n.menu_raw_mail/>
	</n.get_node_from_parameter.>
</macro>

<macro name="menu_subscription" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('subscriptionLink', '<n.javascript_string_encode.subscribe_link/>');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.local_node.visitor_is_subscribed>
				<then>
					var text = '<b><t>Your subscription</t></b>: <n.javascript_string_encode.local_node.subject/> ';
					text += '(<a href="[n.local_node.visitor_subscription.edit_path/]' + Nabble.getClientID() + '" ignore="y"><t>edit</t></a>)';
					NabbleDropdown.replaceContents('subscriptionLink',text);
				</then>
			</n.if.local_node.visitor_is_subscribed>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_topic_subscription" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('topicSubscriptionLink', '<n.javascript_string_encode.subscribe_link/>');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.local_node.visitor_is_subscribed>
				<then>
					var text = '<b>You are subscribed</b> ';
					text += '(<a href="[n.local_node.unsubscribe_path/]' + Nabble.getClientID() + '" ignore="y">unsubscribe</a>)';
					NabbleDropdown.replaceContents('topicSubscriptionLink',text);
				</then>
			</n.if.local_node.visitor_is_subscribed>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_post_by_email" requires="node">
	<n.if.not.is_associated_with_mailing_list_archive>
		<then>
			<n.if.is_in_command name="dropdown">
				<then>
					dropdown.add('postByEmail', '<n.javascript_string_encode.post_by_email_link/>', 'display:none');
				</then>
				<else>
					<n.set_local_node.this_node/>
					<n.if.visitor.can_create_topic_in.local_node>
						<then>
							NabbleDropdown.show('postByEmail');
						</then>
					</n.if.visitor.can_create_topic_in.local_node>
				</else>
			</n.if.is_in_command>
		</then>
	</n.if.not.is_associated_with_mailing_list_archive>
</macro>

<macro name="menu_edit_name_and_description" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('editNameDescription', '<n.javascript_string_encode.edit_subject_and_message_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_edit.local_node>
				<then>
					NabbleDropdown.show('editNameDescription');
				</then>
			</n.if.visitor.can_edit.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_change_appearance" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('changeAppearance', '<n.javascript_string_encode.change_appearance_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.can_edit.local_node/]">
				<then>
					function hasChangeAppearanceToolbar() {
						try {
							if (parent.isChangeAppearance)
								return true
						} catch (err) {}
						return false;
					};
					/* Avoid duplicate toolbars */
					if (!hasChangeAppearanceToolbar())
						NabbleDropdown.show('changeAppearance');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_change_language" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('changeLanguage', '<n.javascript_string_encode.change_language_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.can_edit.local_node/]">
				<then>
					NabbleDropdown.show('changeLanguage');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_extras_and_addons" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('addons', '<n.javascript_string_encode.extras_and_addons_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.can_edit.local_node/]">
				<then>
					NabbleDropdown.show('addons');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_change_title_and_meta_tags" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('changeMetaTags', '<n.javascript_string_encode.change_title_and_meta_tags_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.is_site_admin>
				<then>
					NabbleDropdown.show('changeMetaTags');
				</then>
			</n.if.visitor.is_site_admin>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_change_type" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('changeType', '<n.javascript_string_encode.change_type_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_edit.local_node>
				<then>
					NabbleDropdown.show('changeType');
				</then>
			</n.if.visitor.can_edit.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_change_domain_name" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('changeDomainName', '<n.javascript_string_encode.change_domain_name_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.visitor.can_edit.local_node/]" condition2="[n.local_node.is_root/]">
				<then>
					NabbleDropdown.show('changeDomainName');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_use_google_analytics" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('useGoogleAnalytics', '<n.javascript_string_encode.use_google_analytics_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.visitor.can_edit.local_node/]" condition2="[n.local_node.is_root/]">
				<then>
					NabbleDropdown.show('useGoogleAnalytics');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_create_sub_app" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('createChildForum', '<n.javascript_string_encode.create_sub_app_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_create_sub_apps_under.local_node>
				<then>
					NabbleDropdown.show('createChildForum');
				</then>
			</n.if.visitor.can_create_sub_apps_under.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_manage_pinned_topics" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('managePinnedTopics', '<n.javascript_string_encode.manage_pinned_topics_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if>
				<condition>
					<n.both>
						<condition1.not.regex_matches text="[n.local_node.type/]" pattern="board|category" />
						<condition2.visitor.can_manage_pinned_topics_in.local_node/>
					</n.both>
				</condition>
				<then>
					NabbleDropdown.show('managePinnedTopics');
				</then>
			</n.if>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_manage_sub_apps" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('manageSubApps', '<n.javascript_string_encode.manage_sub_apps_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_edit.local_node>
				<then>
					NabbleDropdown.show('manageSubApps');
				</then>
			</n.if.visitor.can_edit.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_parent_options" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('parentOptions', '<n.javascript_string_encode.parent_options_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_move.local_node>
				<then>
					NabbleDropdown.show('parentOptions');
				</then>
			</n.if.visitor.can_move.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_change_permissions" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('changePermissions', '<n.javascript_string_encode.change_permissions_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_change_permissions_of.local_node>
				<then>
					NabbleDropdown.show('changePermissions');
				</then>
			</n.if.visitor.can_change_permissions_of.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_manage_users_and_groups" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('manageGroups', '<n.javascript_string_encode.manage_users_and_groups_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.can_manage_users_and_groups/]">
				<then>
					NabbleDropdown.show('manageGroups');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_manage_subscribers" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('manageSubscribers', '<n.javascript_string_encode.manage_subscribers_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_manage_subscribers_of.local_node>
				<then>
					NabbleDropdown.show('manageSubscribers');
				</then>
			</n.if.visitor.can_manage_subscribers_of.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_manage_banned_users" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('manageBannedUsers', '<n.javascript_string_encode.manage_banned_users_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.can_manage_banned_users/]">
				<then>
					NabbleDropdown.show('manageBannedUsers');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_mailing_list_archive_settings" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('mailingListSettings', '<n.javascript_string_encode.mailing_list_archive_settings_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if>
				<condition>
					<n.both>
						<condition1>
							<n.visitor.can_edit.local_node/>
						</condition1>
						<condition2>
							<n.either>
								<condition1><n.local_node.is_a_mailing_list_archive/></condition1>
								<condition2><n.not.local_node.has_sub_archive/></condition2>
							</n.either>
						</condition2>
					</n.both>
				</condition>
				<then>
					NabbleDropdown.show('mailingListSettings');
				</then>
			</n.if>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_embedding_options" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('embeddingOptions', '<n.javascript_string_encode.embedding_options_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_edit.local_node>
				<then>
					NabbleDropdown.show('embeddingOptions');
				</then>
			</n.if.visitor.can_edit.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_download_backup" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('downloadBackup', '<n.javascript_string_encode.download_backup_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.is_site_admin/]">
				<then>
					NabbleDropdown.show('downloadBackup');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_delete" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('deleteApp', '<n.javascript_string_encode.delete_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_edit.local_node>
				<then>
					NabbleDropdown.show('deleteApp');
				</then>
			</n.if.visitor.can_edit.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_delete_topic" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('deleteRecursively', '<n.javascript_string_encode.delete_recursively_link text="[t]Delete this topic[/t]"/>', 'display:none');
			dropdown.add('deletePost', '<n.javascript_string_encode.delete_post_link text="[t]Delete this topic[/t]"/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_delete_recursively.local_node>
				<then>
					NabbleDropdown.show('deleteRecursively');
				</then>
				<else.if.visitor.can_delete.local_node>
					<then>
						NabbleDropdown.show('deletePost');
					</then>
				</else.if.visitor.can_delete.local_node>
			</n.if.visitor.can_delete_recursively.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_delete_post" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('deletePost<n.id/>', '<n.javascript_string_encode.delete_post_link/>', 'display:none');
			dropdown.add('deleteRecursively<n.id/>', '<n.javascript_string_encode.delete_recursively_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_delete.local_node>
				<then>
					NabbleDropdown.show('deletePost<n.local_node.id/>');
				</then>
			</n.if.visitor.can_delete.local_node>
			<n.if.visitor.can_delete_recursively.local_node>
				<then>
					NabbleDropdown.show('deleteRecursively<n.local_node.id/>');
				</then>
			</n.if.visitor.can_delete_recursively.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_edit_post" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('editPost<n.id/>', '<n.javascript_string_encode.edit_post_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_edit.local_node>
				<then>
					NabbleDropdown.show('editPost<n.local_node.id/>');
				</then>
			</n.if.visitor.can_edit.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_move_post" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('movePost<n.id/>', '<n.javascript_string_encode.move_post_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_move.local_node>
				<then>
					NabbleDropdown.show('movePost<n.local_node.id/>');
				</then>
			</n.if.visitor.can_move.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_move_topic" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('moveTopic', '<n.javascript_string_encode.move_post_link text="[t]Move topic[/t]"/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_move.local_node>
				<then>
					NabbleDropdown.show('moveTopic');
				</then>
			</n.if.visitor.can_move.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_pin_topic" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('pinTopic', '<n.javascript_string_encode.pin_topic_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.not.local_node.is_pinned/]" condition2="[n.visitor.can_manage_pinned_topics_in.local_node/]">
				<then>
					NabbleDropdown.show('pinTopic');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_unpin_topic" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('unpinTopic', '<n.javascript_string_encode.unpin_topic_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.local_node.is_pinned/]" condition2="[n.visitor.can_manage_pinned_topics_in.local_node/]">
				<then>
					NabbleDropdown.show('unpinTopic');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_lock_topic" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('lockTopic', '<n.javascript_string_encode.lock_topic_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.not.local_node.is_locked_topic/]" condition2="[n.visitor.can_manage_locked_topics_in.local_node/]">
				<then>
					NabbleDropdown.show('lockTopic');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_unlock_topic" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('unlockTopic', '<n.javascript_string_encode.unlock_topic_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.both condition1="[n.local_node.is_locked_topic/]" condition2="[n.visitor.can_manage_locked_topics_in.local_node/]">
				<then>
					NabbleDropdown.show('unlockTopic');
				</then>
			</n.if.both>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_change_post_date" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('changePostDate<n.id/>', '<n.javascript_string_encode.change_post_date_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.can_change_post_date_of.local_node>
				<then>
					NabbleDropdown.show('changePostDate<n.local_node.id/>');
				</then>
			</n.if.visitor.can_change_post_date_of.local_node>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_reply_to_author" requires="node">
	<n.if.owner.is_authenticated>
		<then>
			<n.if.is_in_command name="dropdown">
				<then>
					dropdown.add('replyToAuthor<n.id/>', '<n.javascript_string_encode.reply_to_author_link/>', 'display:none');
				</then>
				<else>
					<n.set_local_node.this_node/>
					<n.if.not.visitor.equals.local_node.owner>
						<then>
							NabbleDropdown.show('replyToAuthor<n.local_node.id/>');
						</then>
					</n.if.not.visitor.equals.local_node.owner>
				</else>
			</n.if.is_in_command>
		</then>
	</n.if.owner.is_authenticated>
</macro>

<macro name="menu_embed_post" requires="node">
	dropdown.add('embedPost<n.id/>', '<n.javascript_string_encode.embed_post_link/>');
</macro>

<macro name="menu_print_post" requires="node">
	dropdown.add('print<n.id/>', '<n.javascript_string_encode.print_post_link/>');
</macro>

<macro name="menu_permalink" requires="node">
	dropdown.add('permalink<n.id/>', '<n.javascript_string_encode.permalink/>');
</macro>

<macro name="menu_raw_mail" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('rawMail<n.id/>', '<n.javascript_string_encode.raw_mail_link/>', 'display:none');
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.local_node.message.is_imported_mail>
				<then.if.either condition1="[n.visitor.can_edit.local_node/]" condition2="[n.visitor.is_sysadmin/]">
					<then>
						NabbleDropdown.show('rawMail<n.local_node.id/>');
					</then>
				</then.if.either>
			</n.if.local_node.message.is_imported_mail>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="menu_sysadmin_options" requires="node">
	<n.if.is_in_command name="dropdown">
		<then>
			dropdown.add('openShell', null, 'display:none');
			<n.if.is_a_mailing_list_archive>
				<then>
					dropdown.add('uploadMbox', null, 'display:none');
					dropdown.add('deleteRecursively', null, 'display:none');
				</then>
			</n.if.is_a_mailing_list_archive>
		</then>
		<else>
			<n.set_local_node.this_node/>
			<n.if.visitor.is_sysadmin>
				<then>
					NabbleDropdown.addContents('openShell','<n.javascript_string_encode.local_node.shell_link/>');
					<n.if.local_node.is_a_mailing_list_archive>
						<then>
							NabbleDropdown.addContents('uploadMbox','<n.javascript_string_encode.local_node.upload_mbox_link/>');
						</then>
					</n.if.local_node.is_a_mailing_list_archive>
				</then>
			</n.if.visitor.is_sysadmin>
		</else>
	</n.if.is_in_command>
</macro>

<macro name="shell_link" requires="node">
	<a href="/tools/Shell.jtp?cmd=node+=+ModelHome.getNode([n.id/])" target="_new"><span class="important">Open in shell</span></a>
</macro>

<macro name="upload_mbox_link" requires="node">
	<a href="/tools/UploadMbox.jtp?forum=[n.id/]"><span class="important">Upload Mbox file</span></a>
</macro>

		------------- Dropdown Implementation -------------

<macro name="dropdown" dot_parameter="options" parameters="id, text, title, element, loadOnClick">
	<span id="dd_[n.id/]"></span>
	<script type="text/javascript">
		var dropdown = new NabbleDropdown("<n.id/>", "<n.javascript_string_encode.hide_null.text/>","<n.javascript_string_encode.hide_null.title/>");
		<n.if.not.is_null.element>
			<then>dropdown.customButton("<n.javascript_string_encode.element/>");</then>
		</n.if.not.is_null.element>
		<n.options/>
		dropdown.build('dd_<n.id/>');
		<n.if.not.is_empty.loadOnClick>
			<then>dropdown.loadOnClick('<n.loadOnClick/>' + Nabble.getClientID() + '&_=' + Math.floor(Math.random()*999999));</then>
		</n.if.not.is_empty.loadOnClick>
	</script>
</macro>

<macro name="menu_group" dot_parameter="options" parameters="text">
	dropdown.startGroup('<n.javascript_string_encode.text/>');
	<n.options/>
	dropdown.endGroup();
</macro>

<macro name="menu_separator">
	dropdown.addSeparator();
</macro>


<macro name="other_menu_entries" requires="node">
</macro>