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_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_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_edit_name_and_description/>
<n.menu_change_type/>
<n.menu_change_appearance/>
<n.menu_change_domain_name/>
<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/]" 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/]" 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_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_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');
</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/>');
</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/>&_=' + 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>