Mercurial Hosting > nabble
diff src/nabble/view/naml/dropdown.naml @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children | cc5b7d515580 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/nabble/view/naml/dropdown.naml Thu Mar 21 19:15:52 2019 -0600 @@ -0,0 +1,885 @@ +<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/]" 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_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/>&_=' + 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>