comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:7ecd1a4ef557
1 <macro name="app_dropdown" requires="node">
2 <n.dropdown.
3 id="appdropdown"
4 text="[t]Options[/t]"
5 title="[t]Click for more options[/t]"
6 loadOnClick="/template/NamlServlet.jtp?macro=app_dropdown_later&node=[n.id/]"
7 >
8 <n.menu_subscription/>
9 <n.menu_post_by_email/>
10
11 <n.menu_separator/>
12
13 <n.menu_group. text="[t]Application[/t]">
14 <n.menu_edit_name_and_description/>
15 <n.menu_change_type/>
16 <n.menu_change_appearance/>
17 <n.menu_change_domain_name/>
18 <n.menu_mailing_list_archive_settings/>
19 <n.menu_change_language/>
20 <n.menu_change_title_and_meta_tags/>
21 <n.menu_extras_and_addons/>
22 <n.menu_use_google_analytics/>
23 </n.menu_group.>
24
25 <n.menu_group. text="[t]Structure[/t]">
26 <n.menu_create_sub_app/>
27 <n.menu_manage_pinned_topics/>
28 <n.menu_manage_sub_apps/>
29 <n.menu_parent_options/>
30 </n.menu_group.>
31
32 <n.menu_group. text="[t]Users[/t]">
33 <n.menu_change_permissions/>
34 <n.menu_manage_users_and_groups/>
35 <n.menu_manage_subscribers/>
36 <n.menu_manage_banned_users/>
37 </n.menu_group.>
38
39 <n.menu_separator/>
40
41 <n.menu_embedding_options/>
42 <n.menu_download_backup/>
43 <n.menu_delete/>
44
45 <n.other_menu_entries/>
46
47 <n.menu_sysadmin_options/>
48 </n.dropdown.>
49 </macro>
50
51 <macro name="app_dropdown_later" requires="servlet">
52 <n.javascript_response/>
53 <n.get_node_from_parameter.>
54 <n.menu_subscription/>
55 <n.menu_post_by_email/>
56
57 <n.menu_edit_name_and_description/>
58 <n.menu_change_type/>
59 <n.menu_change_appearance/>
60 <n.menu_change_domain_name/>
61 <n.menu_mailing_list_archive_settings/>
62 <n.menu_change_language/>
63 <n.menu_change_title_and_meta_tags/>
64 <n.menu_extras_and_addons/>
65 <n.menu_use_google_analytics/>
66
67 <n.menu_create_sub_app/>
68 <n.menu_manage_pinned_topics/>
69 <n.menu_manage_sub_apps/>
70 <n.menu_parent_options/>
71
72 <n.menu_change_permissions/>
73 <n.menu_manage_users_and_groups/>
74 <n.menu_manage_subscribers/>
75 <n.menu_manage_banned_users/>
76
77 <n.menu_embedding_options/>
78 <n.menu_download_backup/>
79 <n.menu_delete/>
80
81 <n.other_menu_entries/>
82
83 <n.menu_sysadmin_options/>
84 </n.get_node_from_parameter.>
85 </macro>
86
87 <macro name="topic_dropdown" requires="node">
88 <n.dropdown.
89 id="topicdropdown"
90 text="[t]Options[/t]"
91 title="[t]Click for more options[/t]"
92 loadOnClick="/template/NamlServlet.jtp?macro=topic_dropdown_later&node=[n.page_node.id/]"
93 >
94 <n.menu_topic_subscription/>
95 <n.menu_separator/>
96 <n.menu_move_topic/>
97 <n.menu_pin_topic/>
98 <n.menu_unpin_topic/>
99 <n.menu_lock_topic/>
100 <n.menu_unlock_topic/>
101 <n.menu_delete_topic/>
102 <n.menu_change_title_and_meta_tags/>
103 <n.menu_embed_post/>
104 <n.menu_permalink/>
105 </n.dropdown.>
106 </macro>
107
108 <macro name="topic_dropdown_later" requires="servlet">
109 <n.javascript_response/>
110 <n.get_node_from_parameter.>
111 <n.menu_topic_subscription/>
112 <n.menu_delete_topic/>
113 <n.menu_move_topic/>
114 <n.menu_pin_topic/>
115 <n.menu_unpin_topic/>
116 <n.menu_lock_topic/>
117 <n.menu_unlock_topic/>
118 <n.menu_change_title_and_meta_tags/>
119 </n.get_node_from_parameter.>
120 </macro>
121
122 <macro name="post_dropdown" requires="node">
123 <n.dropdown.
124 id="postdropdown[n.id/]"
125 text="[t]More[/t]"
126 title="[t]Click for more options[/t]"
127 loadOnClick="/template/NamlServlet.jtp?macro=post_dropdown_later&node=[n.id/]"
128 >
129 <n.menu_reply_to_author/>
130 <n.menu_edit_post/>
131 <n.menu_move_post/>
132 <n.menu_delete_post/>
133 <n.menu_change_post_date/>
134 <n.menu_print_post/>
135 <n.menu_permalink/>
136 <n.menu_raw_mail/>
137 </n.dropdown.>
138 </macro>
139
140 <macro name="post_dropdown_later" requires="servlet">
141 <n.javascript_response/>
142 <n.get_node_from_parameter.>
143 <n.menu_reply_to_author/>
144 <n.menu_edit_post/>
145 <n.menu_move_post/>
146 <n.menu_delete_post/>
147 <n.menu_change_post_date/>
148 <n.menu_raw_mail/>
149 </n.get_node_from_parameter.>
150 </macro>
151
152 <macro name="root_post_dropdown" requires="node">
153 <n.dropdown.
154 id="rootdropdown[n.id/]"
155 text="[t]Options[/t]"
156 title="[t]Click for more options[/t]"
157 loadOnClick="/template/NamlServlet.jtp?macro=root_post_dropdown_later&node=[n.id/]"
158 >
159 <n.menu_topic_subscription/>
160 <n.menu_reply_to_author/>
161 <n.menu_edit_post/>
162 <n.menu_move_post/>
163 <n.menu_delete_topic/>
164 <n.menu_pin_topic/>
165 <n.menu_unpin_topic/>
166 <n.menu_lock_topic/>
167 <n.menu_unlock_topic/>
168 <n.menu_change_post_date/>
169 <n.menu_change_title_and_meta_tags/>
170 <n.menu_embed_post/>
171 <n.menu_print_post/>
172 <n.menu_permalink/>
173 <n.menu_raw_mail/>
174 </n.dropdown.>
175 </macro>
176
177 <macro name="root_post_dropdown_later" requires="servlet">
178 <n.javascript_response/>
179 <n.get_node_from_parameter.>
180 <n.menu_topic_subscription/>
181 <n.menu_reply_to_author/>
182 <n.menu_edit_post/>
183 <n.menu_move_post/>
184 <n.menu_delete_topic/>
185 <n.menu_pin_topic/>
186 <n.menu_unpin_topic/>
187 <n.menu_lock_topic/>
188 <n.menu_unlock_topic/>
189 <n.menu_change_post_date/>
190 <n.menu_change_title_and_meta_tags/>
191 <n.menu_raw_mail/>
192 </n.get_node_from_parameter.>
193 </macro>
194
195 <macro name="menu_subscription" requires="node">
196 <n.if.is_in_command name="dropdown">
197 <then>
198 dropdown.add('subscriptionLink', '<n.javascript_string_encode.subscribe_link/>');
199 </then>
200 <else>
201 <n.set_local_node.this_node/>
202 <n.if.local_node.visitor_is_subscribed>
203 <then>
204 var text = '<b><t>Your subscription</t></b>: <n.javascript_string_encode.local_node.subject/> ';
205 text += '(<a href="[n.local_node.visitor_subscription.edit_path/]" ignore="y"><t>edit</t></a>)';
206 NabbleDropdown.replaceContents('subscriptionLink',text);
207 </then>
208 </n.if.local_node.visitor_is_subscribed>
209 </else>
210 </n.if.is_in_command>
211 </macro>
212
213 <macro name="menu_topic_subscription" requires="node">
214 <n.if.is_in_command name="dropdown">
215 <then>
216 dropdown.add('topicSubscriptionLink', '<n.javascript_string_encode.subscribe_link/>');
217 </then>
218 <else>
219 <n.set_local_node.this_node/>
220 <n.if.local_node.visitor_is_subscribed>
221 <then>
222 var text = '<b>You are subscribed</b> ';
223 text += '(<a href="[n.local_node.unsubscribe_path/]" ignore="y">unsubscribe</a>)';
224 NabbleDropdown.replaceContents('topicSubscriptionLink',text);
225 </then>
226 </n.if.local_node.visitor_is_subscribed>
227 </else>
228 </n.if.is_in_command>
229 </macro>
230
231 <macro name="menu_post_by_email" requires="node">
232 <n.if.not.is_associated_with_mailing_list_archive>
233 <then>
234 <n.if.is_in_command name="dropdown">
235 <then>
236 dropdown.add('postByEmail', '<n.javascript_string_encode.post_by_email_link/>', 'display:none');
237 </then>
238 <else>
239 <n.set_local_node.this_node/>
240 <n.if.visitor.can_create_topic_in.local_node>
241 <then>
242 NabbleDropdown.show('postByEmail');
243 </then>
244 </n.if.visitor.can_create_topic_in.local_node>
245 </else>
246 </n.if.is_in_command>
247 </then>
248 </n.if.not.is_associated_with_mailing_list_archive>
249 </macro>
250
251 <macro name="menu_edit_name_and_description" requires="node">
252 <n.if.is_in_command name="dropdown">
253 <then>
254 dropdown.add('editNameDescription', '<n.javascript_string_encode.edit_subject_and_message_link/>', 'display:none');
255 </then>
256 <else>
257 <n.set_local_node.this_node/>
258 <n.if.visitor.can_edit.local_node>
259 <then>
260 NabbleDropdown.show('editNameDescription');
261 </then>
262 </n.if.visitor.can_edit.local_node>
263 </else>
264 </n.if.is_in_command>
265 </macro>
266
267 <macro name="menu_change_appearance" requires="node">
268 <n.if.is_in_command name="dropdown">
269 <then>
270 dropdown.add('changeAppearance', '<n.javascript_string_encode.change_appearance_link/>', 'display:none');
271 </then>
272 <else>
273 <n.set_local_node.this_node/>
274 <n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.can_edit.local_node/]">
275 <then>
276 function hasChangeAppearanceToolbar() {
277 try {
278 if (parent.isChangeAppearance)
279 return true
280 } catch (err) {}
281 return false;
282 };
283 /* Avoid duplicate toolbars */
284 if (!hasChangeAppearanceToolbar())
285 NabbleDropdown.show('changeAppearance');
286 </then>
287 </n.if.both>
288 </else>
289 </n.if.is_in_command>
290 </macro>
291
292 <macro name="menu_change_language" requires="node">
293 <n.if.is_in_command name="dropdown">
294 <then>
295 dropdown.add('changeLanguage', '<n.javascript_string_encode.change_language_link/>', 'display:none');
296 </then>
297 <else>
298 <n.set_local_node.this_node/>
299 <n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.can_edit.local_node/]">
300 <then>
301 NabbleDropdown.show('changeLanguage');
302 </then>
303 </n.if.both>
304 </else>
305 </n.if.is_in_command>
306 </macro>
307
308 <macro name="menu_extras_and_addons" requires="node">
309 <n.if.is_in_command name="dropdown">
310 <then>
311 dropdown.add('addons', '<n.javascript_string_encode.extras_and_addons_link/>', 'display:none');
312 </then>
313 <else>
314 <n.set_local_node.this_node/>
315 <n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.can_edit.local_node/]">
316 <then>
317 NabbleDropdown.show('addons');
318 </then>
319 </n.if.both>
320 </else>
321 </n.if.is_in_command>
322 </macro>
323
324 <macro name="menu_change_title_and_meta_tags" requires="node">
325 <n.if.is_in_command name="dropdown">
326 <then>
327 dropdown.add('changeMetaTags', '<n.javascript_string_encode.change_title_and_meta_tags_link/>', 'display:none');
328 </then>
329 <else>
330 <n.set_local_node.this_node/>
331 <n.if.visitor.is_site_admin>
332 <then>
333 NabbleDropdown.show('changeMetaTags');
334 </then>
335 </n.if.visitor.is_site_admin>
336 </else>
337 </n.if.is_in_command>
338 </macro>
339
340 <macro name="menu_change_type" requires="node">
341 <n.if.is_in_command name="dropdown">
342 <then>
343 dropdown.add('changeType', '<n.javascript_string_encode.change_type_link/>', 'display:none');
344 </then>
345 <else>
346 <n.set_local_node.this_node/>
347 <n.if.visitor.can_edit.local_node>
348 <then>
349 NabbleDropdown.show('changeType');
350 </then>
351 </n.if.visitor.can_edit.local_node>
352 </else>
353 </n.if.is_in_command>
354 </macro>
355
356 <macro name="menu_change_domain_name" requires="node">
357 <n.if.is_in_command name="dropdown">
358 <then>
359 dropdown.add('changeDomainName', '<n.javascript_string_encode.change_domain_name_link/>', 'display:none');
360 </then>
361 <else>
362 <n.set_local_node.this_node/>
363 <n.if.both condition1="[n.visitor.can_edit.local_node/]" condition2="[n.local_node.is_root/]">
364 <then>
365 NabbleDropdown.show('changeDomainName');
366 </then>
367 </n.if.both>
368 </else>
369 </n.if.is_in_command>
370 </macro>
371
372 <macro name="menu_use_google_analytics" requires="node">
373 <n.if.is_in_command name="dropdown">
374 <then>
375 dropdown.add('useGoogleAnalytics', '<n.javascript_string_encode.use_google_analytics_link/>', 'display:none');
376 </then>
377 <else>
378 <n.set_local_node.this_node/>
379 <n.if.both condition1="[n.visitor.can_edit.local_node/]" condition2="[n.local_node.is_root/]">
380 <then>
381 NabbleDropdown.show('useGoogleAnalytics');
382 </then>
383 </n.if.both>
384 </else>
385 </n.if.is_in_command>
386 </macro>
387
388 <macro name="menu_create_sub_app" requires="node">
389 <n.if.is_in_command name="dropdown">
390 <then>
391 dropdown.add('createChildForum', '<n.javascript_string_encode.create_sub_app_link/>', 'display:none');
392 </then>
393 <else>
394 <n.set_local_node.this_node/>
395 <n.if.visitor.can_create_sub_apps_under.local_node>
396 <then>
397 NabbleDropdown.show('createChildForum');
398 </then>
399 </n.if.visitor.can_create_sub_apps_under.local_node>
400 </else>
401 </n.if.is_in_command>
402 </macro>
403
404 <macro name="menu_manage_pinned_topics" requires="node">
405 <n.if.is_in_command name="dropdown">
406 <then>
407 dropdown.add('managePinnedTopics', '<n.javascript_string_encode.manage_pinned_topics_link/>', 'display:none');
408 </then>
409 <else>
410 <n.set_local_node.this_node/>
411 <n.if>
412 <condition>
413 <n.both>
414 <condition1.not.regex_matches text="[n.local_node.type/]" pattern="board|category" />
415 <condition2.visitor.can_manage_pinned_topics_in.local_node/>
416 </n.both>
417 </condition>
418 <then>
419 NabbleDropdown.show('managePinnedTopics');
420 </then>
421 </n.if>
422 </else>
423 </n.if.is_in_command>
424 </macro>
425
426 <macro name="menu_manage_sub_apps" requires="node">
427 <n.if.is_in_command name="dropdown">
428 <then>
429 dropdown.add('manageSubApps', '<n.javascript_string_encode.manage_sub_apps_link/>', 'display:none');
430 </then>
431 <else>
432 <n.set_local_node.this_node/>
433 <n.if.visitor.can_edit.local_node>
434 <then>
435 NabbleDropdown.show('manageSubApps');
436 </then>
437 </n.if.visitor.can_edit.local_node>
438 </else>
439 </n.if.is_in_command>
440 </macro>
441
442 <macro name="menu_parent_options" requires="node">
443 <n.if.is_in_command name="dropdown">
444 <then>
445 dropdown.add('parentOptions', '<n.javascript_string_encode.parent_options_link/>', 'display:none');
446 </then>
447 <else>
448 <n.set_local_node.this_node/>
449 <n.if.visitor.can_move.local_node>
450 <then>
451 NabbleDropdown.show('parentOptions');
452 </then>
453 </n.if.visitor.can_move.local_node>
454 </else>
455 </n.if.is_in_command>
456 </macro>
457
458 <macro name="menu_change_permissions" requires="node">
459 <n.if.is_in_command name="dropdown">
460 <then>
461 dropdown.add('changePermissions', '<n.javascript_string_encode.change_permissions_link/>', 'display:none');
462 </then>
463 <else>
464 <n.set_local_node.this_node/>
465 <n.if.visitor.can_change_permissions_of.local_node>
466 <then>
467 NabbleDropdown.show('changePermissions');
468 </then>
469 </n.if.visitor.can_change_permissions_of.local_node>
470 </else>
471 </n.if.is_in_command>
472 </macro>
473
474 <macro name="menu_manage_users_and_groups" requires="node">
475 <n.if.is_in_command name="dropdown">
476 <then>
477 dropdown.add('manageGroups', '<n.javascript_string_encode.manage_users_and_groups_link/>', 'display:none');
478 </then>
479 <else>
480 <n.set_local_node.this_node/>
481 <n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.can_manage_users_and_groups/]">
482 <then>
483 NabbleDropdown.show('manageGroups');
484 </then>
485 </n.if.both>
486 </else>
487 </n.if.is_in_command>
488 </macro>
489
490 <macro name="menu_manage_subscribers" requires="node">
491 <n.if.is_in_command name="dropdown">
492 <then>
493 dropdown.add('manageSubscribers', '<n.javascript_string_encode.manage_subscribers_link/>', 'display:none');
494 </then>
495 <else>
496 <n.set_local_node.this_node/>
497 <n.if.visitor.can_manage_subscribers_of.local_node>
498 <then>
499 NabbleDropdown.show('manageSubscribers');
500 </then>
501 </n.if.visitor.can_manage_subscribers_of.local_node>
502 </else>
503 </n.if.is_in_command>
504 </macro>
505
506 <macro name="menu_manage_banned_users" requires="node">
507 <n.if.is_in_command name="dropdown">
508 <then>
509 dropdown.add('manageBannedUsers', '<n.javascript_string_encode.manage_banned_users_link/>', 'display:none');
510 </then>
511 <else>
512 <n.set_local_node.this_node/>
513 <n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.can_manage_banned_users/]">
514 <then>
515 NabbleDropdown.show('manageBannedUsers');
516 </then>
517 </n.if.both>
518 </else>
519 </n.if.is_in_command>
520 </macro>
521
522 <macro name="menu_mailing_list_archive_settings" requires="node">
523 <n.if.is_in_command name="dropdown">
524 <then>
525 dropdown.add('mailingListSettings', '<n.javascript_string_encode.mailing_list_archive_settings_link/>', 'display:none');
526 </then>
527 <else>
528 <n.set_local_node.this_node/>
529 <n.if>
530 <condition>
531 <n.both>
532 <condition1>
533 <n.visitor.can_edit.local_node/>
534 </condition1>
535 <condition2>
536 <n.either>
537 <condition1><n.local_node.is_a_mailing_list_archive/></condition1>
538 <condition2><n.not.local_node.has_sub_archive/></condition2>
539 </n.either>
540 </condition2>
541 </n.both>
542 </condition>
543 <then>
544 NabbleDropdown.show('mailingListSettings');
545 </then>
546 </n.if>
547 </else>
548 </n.if.is_in_command>
549 </macro>
550
551 <macro name="menu_embedding_options" requires="node">
552 <n.if.is_in_command name="dropdown">
553 <then>
554 dropdown.add('embeddingOptions', '<n.javascript_string_encode.embedding_options_link/>', 'display:none');
555 </then>
556 <else>
557 <n.set_local_node.this_node/>
558 <n.if.visitor.can_edit.local_node>
559 <then>
560 NabbleDropdown.show('embeddingOptions');
561 </then>
562 </n.if.visitor.can_edit.local_node>
563 </else>
564 </n.if.is_in_command>
565 </macro>
566
567 <macro name="menu_download_backup" requires="node">
568 <n.if.is_in_command name="dropdown">
569 <then>
570 dropdown.add('downloadBackup', '<n.javascript_string_encode.download_backup_link/>', 'display:none');
571 </then>
572 <else>
573 <n.set_local_node.this_node/>
574 <n.if.both condition1="[n.local_node.is_root/]" condition2="[n.visitor.is_site_admin/]">
575 <then>
576 NabbleDropdown.show('downloadBackup');
577 </then>
578 </n.if.both>
579 </else>
580 </n.if.is_in_command>
581 </macro>
582
583 <macro name="menu_delete" requires="node">
584 <n.if.is_in_command name="dropdown">
585 <then>
586 dropdown.add('deleteApp', '<n.javascript_string_encode.delete_link/>', 'display:none');
587 </then>
588 <else>
589 <n.set_local_node.this_node/>
590 <n.if.visitor.can_edit.local_node>
591 <then>
592 NabbleDropdown.show('deleteApp');
593 </then>
594 </n.if.visitor.can_edit.local_node>
595 </else>
596 </n.if.is_in_command>
597 </macro>
598
599 <macro name="menu_delete_topic" requires="node">
600 <n.if.is_in_command name="dropdown">
601 <then>
602 dropdown.add('deleteRecursively', '<n.javascript_string_encode.delete_recursively_link text="[t]Delete this topic[/t]"/>', 'display:none');
603 dropdown.add('deletePost', '<n.javascript_string_encode.delete_post_link text="[t]Delete this topic[/t]"/>', 'display:none');
604 </then>
605 <else>
606 <n.set_local_node.this_node/>
607 <n.if.visitor.can_delete_recursively.local_node>
608 <then>
609 NabbleDropdown.show('deleteRecursively');
610 </then>
611 <else.if.visitor.can_delete.local_node>
612 <then>
613 NabbleDropdown.show('deletePost');
614 </then>
615 </else.if.visitor.can_delete.local_node>
616 </n.if.visitor.can_delete_recursively.local_node>
617 </else>
618 </n.if.is_in_command>
619 </macro>
620
621 <macro name="menu_delete_post" requires="node">
622 <n.if.is_in_command name="dropdown">
623 <then>
624 dropdown.add('deletePost<n.id/>', '<n.javascript_string_encode.delete_post_link/>', 'display:none');
625 dropdown.add('deleteRecursively<n.id/>', '<n.javascript_string_encode.delete_recursively_link/>', 'display:none');
626 </then>
627 <else>
628 <n.set_local_node.this_node/>
629 <n.if.visitor.can_delete.local_node>
630 <then>
631 NabbleDropdown.show('deletePost<n.local_node.id/>');
632 </then>
633 </n.if.visitor.can_delete.local_node>
634 <n.if.visitor.can_delete_recursively.local_node>
635 <then>
636 NabbleDropdown.show('deleteRecursively<n.local_node.id/>');
637 </then>
638 </n.if.visitor.can_delete_recursively.local_node>
639 </else>
640 </n.if.is_in_command>
641 </macro>
642
643 <macro name="menu_edit_post" requires="node">
644 <n.if.is_in_command name="dropdown">
645 <then>
646 dropdown.add('editPost<n.id/>', '<n.javascript_string_encode.edit_post_link/>', 'display:none');
647 </then>
648 <else>
649 <n.set_local_node.this_node/>
650 <n.if.visitor.can_edit.local_node>
651 <then>
652 NabbleDropdown.show('editPost<n.local_node.id/>');
653 </then>
654 </n.if.visitor.can_edit.local_node>
655 </else>
656 </n.if.is_in_command>
657 </macro>
658
659 <macro name="menu_move_post" requires="node">
660 <n.if.is_in_command name="dropdown">
661 <then>
662 dropdown.add('movePost<n.id/>', '<n.javascript_string_encode.move_post_link/>', 'display:none');
663 </then>
664 <else>
665 <n.set_local_node.this_node/>
666 <n.if.visitor.can_move.local_node>
667 <then>
668 NabbleDropdown.show('movePost<n.local_node.id/>');
669 </then>
670 </n.if.visitor.can_move.local_node>
671 </else>
672 </n.if.is_in_command>
673 </macro>
674
675 <macro name="menu_move_topic" requires="node">
676 <n.if.is_in_command name="dropdown">
677 <then>
678 dropdown.add('moveTopic', '<n.javascript_string_encode.move_post_link text="[t]Move topic[/t]"/>', 'display:none');
679 </then>
680 <else>
681 <n.set_local_node.this_node/>
682 <n.if.visitor.can_move.local_node>
683 <then>
684 NabbleDropdown.show('moveTopic');
685 </then>
686 </n.if.visitor.can_move.local_node>
687 </else>
688 </n.if.is_in_command>
689 </macro>
690
691 <macro name="menu_pin_topic" requires="node">
692 <n.if.is_in_command name="dropdown">
693 <then>
694 dropdown.add('pinTopic', '<n.javascript_string_encode.pin_topic_link/>', 'display:none');
695 </then>
696 <else>
697 <n.set_local_node.this_node/>
698 <n.if.both condition1="[n.not.local_node.is_pinned/]" condition2="[n.visitor.can_manage_pinned_topics_in.local_node/]">
699 <then>
700 NabbleDropdown.show('pinTopic');
701 </then>
702 </n.if.both>
703 </else>
704 </n.if.is_in_command>
705 </macro>
706
707 <macro name="menu_unpin_topic" requires="node">
708 <n.if.is_in_command name="dropdown">
709 <then>
710 dropdown.add('unpinTopic', '<n.javascript_string_encode.unpin_topic_link/>', 'display:none');
711 </then>
712 <else>
713 <n.set_local_node.this_node/>
714 <n.if.both condition1="[n.local_node.is_pinned/]" condition2="[n.visitor.can_manage_pinned_topics_in.local_node/]">
715 <then>
716 NabbleDropdown.show('unpinTopic');
717 </then>
718 </n.if.both>
719 </else>
720 </n.if.is_in_command>
721 </macro>
722
723 <macro name="menu_lock_topic" requires="node">
724 <n.if.is_in_command name="dropdown">
725 <then>
726 dropdown.add('lockTopic', '<n.javascript_string_encode.lock_topic_link/>', 'display:none');
727 </then>
728 <else>
729 <n.set_local_node.this_node/>
730 <n.if.both condition1="[n.not.local_node.is_locked_topic/]" condition2="[n.visitor.can_manage_locked_topics_in.local_node/]">
731 <then>
732 NabbleDropdown.show('lockTopic');
733 </then>
734 </n.if.both>
735 </else>
736 </n.if.is_in_command>
737 </macro>
738
739 <macro name="menu_unlock_topic" requires="node">
740 <n.if.is_in_command name="dropdown">
741 <then>
742 dropdown.add('unlockTopic', '<n.javascript_string_encode.unlock_topic_link/>', 'display:none');
743 </then>
744 <else>
745 <n.set_local_node.this_node/>
746 <n.if.both condition1="[n.local_node.is_locked_topic/]" condition2="[n.visitor.can_manage_locked_topics_in.local_node/]">
747 <then>
748 NabbleDropdown.show('unlockTopic');
749 </then>
750 </n.if.both>
751 </else>
752 </n.if.is_in_command>
753 </macro>
754
755 <macro name="menu_change_post_date" requires="node">
756 <n.if.is_in_command name="dropdown">
757 <then>
758 dropdown.add('changePostDate<n.id/>', '<n.javascript_string_encode.change_post_date_link/>', 'display:none');
759 </then>
760 <else>
761 <n.set_local_node.this_node/>
762 <n.if.visitor.can_change_post_date_of.local_node>
763 <then>
764 NabbleDropdown.show('changePostDate<n.local_node.id/>');
765 </then>
766 </n.if.visitor.can_change_post_date_of.local_node>
767 </else>
768 </n.if.is_in_command>
769 </macro>
770
771 <macro name="menu_reply_to_author" requires="node">
772 <n.if.owner.is_authenticated>
773 <then>
774 <n.if.is_in_command name="dropdown">
775 <then>
776 dropdown.add('replyToAuthor<n.id/>', '<n.javascript_string_encode.reply_to_author_link/>', 'display:none');
777 </then>
778 <else>
779 <n.set_local_node.this_node/>
780 <n.if.not.visitor.equals.local_node.owner>
781 <then>
782 NabbleDropdown.show('replyToAuthor<n.local_node.id/>');
783 </then>
784 </n.if.not.visitor.equals.local_node.owner>
785 </else>
786 </n.if.is_in_command>
787 </then>
788 </n.if.owner.is_authenticated>
789 </macro>
790
791 <macro name="menu_embed_post" requires="node">
792 dropdown.add('embedPost<n.id/>', '<n.javascript_string_encode.embed_post_link/>');
793 </macro>
794
795 <macro name="menu_print_post" requires="node">
796 dropdown.add('print<n.id/>', '<n.javascript_string_encode.print_post_link/>');
797 </macro>
798
799 <macro name="menu_permalink" requires="node">
800 dropdown.add('permalink<n.id/>', '<n.javascript_string_encode.permalink/>');
801 </macro>
802
803 <macro name="menu_raw_mail" requires="node">
804 <n.if.is_in_command name="dropdown">
805 <then>
806 dropdown.add('rawMail<n.id/>', '<n.javascript_string_encode.raw_mail_link/>', 'display:none');
807 </then>
808 <else>
809 <n.set_local_node.this_node/>
810 <n.if.local_node.message.is_imported_mail>
811 <then.if.either condition1="[n.visitor.can_edit.local_node/]" condition2="[n.visitor.is_sysadmin/]">
812 <then>
813 NabbleDropdown.show('rawMail<n.local_node.id/>');
814 </then>
815 </then.if.either>
816 </n.if.local_node.message.is_imported_mail>
817 </else>
818 </n.if.is_in_command>
819 </macro>
820
821 <macro name="menu_sysadmin_options" requires="node">
822 <n.if.is_in_command name="dropdown">
823 <then>
824 dropdown.add('openShell', null, 'display:none');
825 <n.if.is_a_mailing_list_archive>
826 <then>
827 dropdown.add('uploadMbox', null, 'display:none');
828 dropdown.add('deleteRecursively', null, 'display:none');
829 </then>
830 </n.if.is_a_mailing_list_archive>
831 </then>
832 <else>
833 <n.set_local_node.this_node/>
834 <n.if.visitor.is_sysadmin>
835 <then>
836 NabbleDropdown.addContents('openShell','<n.javascript_string_encode.local_node.shell_link/>');
837 <n.if.local_node.is_a_mailing_list_archive>
838 <then>
839 NabbleDropdown.addContents('uploadMbox','<n.javascript_string_encode.local_node.upload_mbox_link/>');
840 </then>
841 </n.if.local_node.is_a_mailing_list_archive>
842 </then>
843 </n.if.visitor.is_sysadmin>
844 </else>
845 </n.if.is_in_command>
846 </macro>
847
848 <macro name="shell_link" requires="node">
849 <a href="/tools/Shell.jtp?cmd=node+=+ModelHome.getNode([n.id/])" target="_new"><span class="important">Open in shell</span></a>
850 </macro>
851
852 <macro name="upload_mbox_link" requires="node">
853 <a href="/tools/UploadMbox.jtp?forum=[n.id/]"><span class="important">Upload Mbox file</span></a>
854 </macro>
855
856 ------------- Dropdown Implementation -------------
857
858 <macro name="dropdown" dot_parameter="options" parameters="id, text, title, element, loadOnClick">
859 <span id="dd_[n.id/]"></span>
860 <script type="text/javascript">
861 var dropdown = new NabbleDropdown("<n.id/>", "<n.javascript_string_encode.hide_null.text/>","<n.javascript_string_encode.hide_null.title/>");
862 <n.if.not.is_null.element>
863 <then>dropdown.customButton("<n.javascript_string_encode.element/>");</then>
864 </n.if.not.is_null.element>
865 <n.options/>
866 dropdown.build('dd_<n.id/>');
867 <n.if.not.is_empty.loadOnClick>
868 <then>dropdown.loadOnClick('<n.loadOnClick/>&_=' + Math.floor(Math.random()*999999));</then>
869 </n.if.not.is_empty.loadOnClick>
870 </script>
871 </macro>
872
873 <macro name="menu_group" dot_parameter="options" parameters="text">
874 dropdown.startGroup('<n.javascript_string_encode.text/>');
875 <n.options/>
876 dropdown.endGroup();
877 </macro>
878
879 <macro name="menu_separator">
880 dropdown.addSeparator();
881 </macro>
882
883
884 <macro name="other_menu_entries" requires="node">
885 </macro>