Mercurial Hosting > nabble
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> |