Mercurial Hosting > nabble
view src/nabble/view/naml/dropdown.naml @ 47:72765b66e2c3
remove mailing list code
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 18 Jun 2021 17:44:24 -0600 |
parents | cc5b7d515580 |
children |
line wrap: on
line source
<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>