0
|
1
|
|
2 override this macro to create skins
|
|
3 <macro name="html" parameters="head,body">
|
|
4 <n.html_impl>
|
|
5 <head>
|
|
6 <n.head/>
|
|
7 </head>
|
|
8 <body>
|
|
9 <n.top_bar/>
|
|
10 <n.body/>
|
|
11 <n.nabble_footer/>
|
|
12 </body>
|
|
13 </n.html_impl>
|
|
14 </macro>
|
|
15
|
|
16 <macro name="html_impl" parameters="head,body" requires="servlet">
|
|
17 <n.page_start/>
|
|
18 <n.update_default_permissions/>
|
|
19 <n.nabble_html>
|
|
20 <do>
|
|
21 <n.embedding_redirection_js/>
|
|
22 <n.put_in_head.head/>
|
|
23 <n.body/>
|
|
24 <n.load_call_later_script/>
|
|
25 </do>
|
|
26 <output>
|
|
27 <![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">]]>
|
|
28 <html>
|
|
29 <head>
|
|
30 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
31 <n.nabble_stylesheets/>
|
|
32 <n.nabble_javascript_libraries/>
|
|
33 <n.html_head_content/>
|
|
34 <n.nabble_shared_scripts/>
|
|
35 </head>
|
|
36 <body>
|
|
37 <div id="notice" class="notice rounded-bottom"></div>
|
|
38 <div class="nabble macro_[n.page_template/]" id="nabble">
|
|
39 <n.apply_filters.html_body_content/>
|
|
40 </div>
|
|
41 <n.bottom_scripts/>
|
|
42 <n.as_html_comments.site_information/>
|
|
43 </body>
|
|
44 </html>
|
|
45 </output>
|
|
46 </n.nabble_html>
|
|
47 </macro>
|
|
48
|
|
49 <macro name="page_start">
|
|
50 <n.comment.>To be overridden</n.comment.>
|
|
51 </macro>
|
|
52
|
|
53 <macro name="apply_filters" dot_parameter="do">
|
|
54 <n.comment.>To be overridden</n.comment.>
|
|
55 <n.do/>
|
|
56 </macro>
|
|
57
|
|
58 <macro name="bottom_scripts">
|
|
59 <script src="/trk5.js" async="true"></script>
|
|
60 <script src="/trk0.js" async="true"></script>
|
|
61 </macro>
|
|
62
|
|
63 <macro name="site_information">
|
|
64 <n.default_host_name/> | Site ID = <n.site_id/>
|
|
65 </macro>
|
|
66
|
|
67 <macro name="nabble_stylesheets">
|
|
68 <link rel="stylesheet" href="/nabble.css?v=[n.css_version/]" type="text/css" />
|
|
69 <link rel="stylesheet" href="/template/NamlServlet.jtp?macro=site_style" type="text/css" />
|
|
70 </macro>
|
|
71
|
|
72 <macro name="site_style" unindent="true">
|
|
73 <n.uncache_for/>
|
|
74 <n.set_response_header name="Content-Type" value="text/css"/>
|
|
75 <n.comment.>To be overridden</n.comment.>
|
|
76 </macro>
|
|
77
|
|
78 <macro name="jquery_library">
|
|
79 <script src="/util/jquery-1.7.2.pack.js" type="text/javascript"></script>
|
|
80 </macro>
|
|
81
|
|
82 <macro name="nabble_javascript_libraries">
|
|
83 <n.jquery_library/>
|
|
84 <script src="/util/nabbledropdown-2.4.1.js" type="text/javascript"></script>
|
|
85 <script src="[n.javascript_library_path/]" type="text/javascript"></script>
|
|
86 </macro>
|
|
87
|
|
88 <macro name="nabble_shared_scripts">
|
|
89 <script type="text/javascript">
|
|
90 Nabble.setFontSize();
|
|
91 <n.if.request_method_is_post>
|
|
92 <then>var loginNextUrl = '/';</then>
|
|
93 </n.if.request_method_is_post>
|
|
94 </script>
|
|
95 <n.nabble_analytics/>
|
|
96 </macro>
|
|
97
|
|
98 <macro name="nabble_analytics">
|
|
99 <script type="text/javascript">
|
|
100 if (Nabble.analytics) Nabble.analytics();
|
|
101 </script>
|
|
102 <n.js_google_analytics/>
|
|
103 </macro>
|
|
104
|
|
105 <macro name="js_google_analytics">
|
|
106 <!-- Start Google Analytics -->
|
|
107 <script>
|
|
108 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
109 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
110 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
111 })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
|
112
|
|
113 ga('create', 'UA-91855-9', 'auto', 'nabble');
|
|
114 ga('nabble.send', 'pageview');
|
|
115 </script>
|
|
116 <!-- End Google Analytics -->
|
|
117 </macro>
|
|
118
|
|
119 <macro name="nabble_footer">
|
|
120 <table class="footer-table shaded-bg-color">
|
|
121 <tr>
|
|
122 <td class="footer-left weak-color">
|
|
123 <n.nabble_footer_left/>
|
|
124 </td>
|
|
125 <td class="footer-right">
|
|
126 <n.disable_ads_link/>
|
|
127 <n.macro_viewer_page_link/>
|
|
128 </td>
|
|
129 </tr>
|
|
130 </table>
|
|
131 </macro>
|
|
132
|
|
133 <macro name="disable_ads_link">
|
|
134 <script>
|
|
135 if( window.nbl_disableAdsLink && window.localStorage && !localStorage.nbl_noAds ) {
|
|
136 document.write("<a href='javascript:localStorage.nbl_noAds=true;location.reload();'>"+nbl_disableAdsLink+"</a> | ");
|
|
137 }
|
|
138 </script>
|
|
139 </macro>
|
|
140
|
|
141 <macro name="nabble_footer_left">
|
|
142 <n.nabble_homepage_link.>Free forum by Nabble</n.nabble_homepage_link.>
|
|
143 </macro>
|
|
144
|
|
145 <macro name="nabble_homepage_link" dot_parameter="text" parameters="class">
|
|
146 <a href="[n.nabble_homepage/]" class="[n.class/]" target="_top"><n.default. to="Nabble"><n.text/></n.default.></a>
|
|
147 </macro>
|
|
148
|
|
149 <macro name="forum_footer">
|
|
150 <n.page_node.>
|
|
151 <div id="forum-footer" class="forum-footer nowrap">
|
|
152 <img src="/images/feeds.png" width="16" height="16" align="absmiddle" alt="feeds"/>
|
|
153 <n.feeds_link/>
|
|
154 <span class="weak-color" style="padding-left:.5em">|</span>
|
|
155 <t>Created by <t.author.owner.avatar_and_link/></t>
|
|
156 <span class="weak-color" style="padding-left:.5em">|</span>
|
|
157 <n.views show_text="true"/>
|
|
158 </div>
|
|
159 </n.page_node.>
|
|
160 </macro>
|
|
161
|
|
162 <macro name="avatar_and_link" requires="user">
|
|
163 <n.avatar size="small"/>
|
|
164 <n.user_link/>
|
|
165 </macro>
|
|
166
|
|
167 <macro name="top_bar">
|
|
168 <div class="top-bar">
|
|
169 <div class="breadcrumbs" style="float:left">
|
|
170 <n.breadcrumbs/>
|
|
171 </div>
|
|
172 <div style="text-align:right;">
|
|
173 <n.user_header/>
|
|
174 </div>
|
|
175 </div>
|
|
176 </macro>
|
|
177
|
|
178 <macro name="breadcrumbs">
|
|
179 <span id="breadcrumbs" class="weak-color">
|
|
180 <n.breadcrumbs_content/>
|
|
181 </span>
|
|
182 </macro>
|
|
183
|
|
184 <macro name="breadcrumbs_content">
|
|
185 <n.root_node.node_breadcrumbs />
|
|
186 </macro>
|
|
187
|
|
188 <macro name="breadcrumbs_content" requires="node_page">
|
|
189 <n.page_node.node_breadcrumbs />
|
|
190 </macro>
|
|
191
|
|
192 <macro name="node_breadcrumbs" requires="node">
|
|
193 <n.if.is_in_app>
|
|
194 <then>
|
|
195 <n.get_app_node.>
|
|
196 <n.ancestors_list. order="reverse">
|
|
197 <n.loop.>
|
|
198 <n.current_node.node_link/>
|
|
199 <span> › </span>
|
|
200 </n.loop.>
|
|
201 </n.ancestors_list.>
|
|
202 <n.node_link/>
|
|
203 </n.get_app_node.>
|
|
204 </then>
|
|
205 </n.if.is_in_app>
|
|
206 </macro>
|
|
207
|
|
208 <macro name="separator">
|
|
209 <div style="height:.8em"></div>
|
|
210 </macro>
|
|
211
|
|
212 <macro name="hide_if" dot_parameter="text" parameters="equals">
|
|
213 <n.if.not.equal value1="[n.text/]" value2="[n.equals/]">
|
|
214 <then><n.text/></then>
|
|
215 </n.if.not.equal>
|
|
216 </macro>
|
|
217
|
|
218 <macro name="hide_if_equals" dot_parameter="text" parameters="value1,value2">
|
|
219 <n.if.not.equal value1="[n.value1/]" value2="[n.value2/]">
|
|
220 <then><n.text/></then>
|
|
221 </n.if.not.equal>
|
|
222 </macro>
|
|
223
|
|
224 <macro name="newsflash">
|
|
225 <div id="nabble-newsflash" class="info-message" style="display:none;padding:.5em;margin-bottom:.5em"></div>
|
|
226 <n.call_later param="newsflash"/>
|
|
227 </macro>
|
|
228
|
|
229 <macro name="newsflash_js">
|
|
230 <n.param_loop. param="newsflash">
|
|
231 <n.if.not.is_null.get_newsflash>
|
|
232 <then>
|
|
233 var newsDiv = Nabble.get('nabble-newsflash');
|
|
234 newsDiv.innerHTML = "<n.get_newsflash/>";
|
|
235 newsDiv.style.display = 'block';
|
|
236 </then>
|
|
237 </n.if.not.is_null.get_newsflash>
|
|
238 </n.param_loop.>
|
|
239 </macro>
|
|
240
|
|
241 <macro name="show_administrator_notice">
|
|
242 <div id="admin-notice" class="info-message" style="display:none;padding:.5em;margin-bottom:.5em"></div>
|
|
243 <n.call_later param="adminNotice"/>
|
|
244 </macro>
|
|
245
|
|
246 <macro name="show_administrator_notice_js">
|
|
247 <n.param_loop. param="adminNotice">
|
|
248 <n.if.both condition1="[n.visitor.is_site_admin/]" condition2="[n.not.is_empty.administrator_notice/]">
|
|
249 <then>
|
|
250 function closeAdminNotice() {
|
|
251 $('#admin-notice').slideUp();
|
|
252 Nabble.setPersistentCookie('admin-notice','<n.administrator_notice_version/>');
|
|
253 NabbleDropdown.show('adminNotice');
|
|
254 };
|
|
255 if (Nabble.getCookie('admin-notice') != '<n.administrator_notice_version/>') {
|
|
256 var html = "<table><tr><td style='width:100%'>";
|
|
257 html += "<n.javascript_string_encode.administrator_notice/>";
|
|
258 html += "</td><td style='vertical-align:top;cursor:pointer;line-height:.3em;font-size:200%' onclick='closeAdminNotice()'>×</td>";
|
|
259 html += "</tr></table>";
|
|
260 $("#admin-notice").html(html).show();
|
|
261 } else {
|
|
262 Nabble.addUserHeaderListener(function() {
|
|
263 NabbleDropdown.show('adminNotice');
|
|
264 });
|
|
265 }
|
|
266 </then>
|
|
267 </n.if.both>
|
|
268 </n.param_loop.>
|
|
269 </macro>
|
|
270
|
|
271 <macro name="increment_view_count" requires="node_page,servlet">
|
|
272 <n.call_later value="[n.page_node.id/]" param="incViewCount"/>
|
|
273 </macro>
|
|
274
|
|
275 <macro name="increment_view_count_js">
|
|
276 <n.param_loop. param="incViewCount">
|
|
277 <n.increment_node_view_count node_id="[n.current_parameter_value/]" />
|
|
278 </n.param_loop.>
|
|
279 </macro>
|
|
280
|
|
281 <macro name="mailing_list_information">
|
|
282 <n.if.is_associated_with_mailing_list_archive>
|
|
283 <then>
|
|
284 <n.get_associated_mailing_list_archive.>
|
|
285 <div style="margin:.5em 0">
|
|
286 <t>This forum is an archive for the mailing list</t>
|
|
287 <strong><n.mailing_list_address/></strong> (<n.mailing_list_options_link.><t>more options</t></n.mailing_list_options_link.>)
|
|
288 <t>Messages posted here will be sent to this mailing list.</t>
|
|
289 </div>
|
|
290 </n.get_associated_mailing_list_archive.>
|
|
291 </then>
|
|
292 </n.if.is_associated_with_mailing_list_archive>
|
|
293 </macro>
|
|
294
|
|
295
|
|
296 EDIT NODE
|
|
297
|
|
298 <macro name="edit_header" parameters="first_text,second_text">
|
|
299 <div class="big-title second-font shaded-bg-color" style="padding: .4em;margin-top:.1em">
|
|
300 <n.first_text/>
|
|
301 <n.if.not.is_null.second_text>
|
|
302 <then>
|
|
303 <span class="weak-color">
|
|
304 <n.prepend. prefix="– "><n.second_text/></n.prepend.>
|
|
305 </span>
|
|
306 </then>
|
|
307 </n.if.not.is_null.second_text>
|
|
308 </div>
|
|
309 </macro>
|
|
310
|
|
311 <macro name="input" requires="field" parameters="size,tabindex,type,maxlength">
|
|
312 <input id="[n.name/]" name="[n.name/]" value="[n.value/]" size="[n.size/]" maxlength="[n.maxlength/]" tabindex="[n.tabindex/]" type="[n.type/]" />
|
|
313 </macro>
|
|
314
|
|
315 <macro name="hidden" requires="field">
|
|
316 <n.if.not.is_null.value>
|
|
317 <then>
|
|
318 <input type="hidden" id="[n.name/]" name="[n.name/]" value="[n.value/]"/>
|
|
319 </then>
|
|
320 </n.if.not.is_null.value>
|
|
321 </macro>
|
|
322
|
|
323 <macro name="checkbox" parameters="style" requires="field">
|
|
324 <input id="[n.name/]" type="checkbox" name="[n.name/]" value="[n.true/]" checked="[n.false_to_null.value/]" style="[n.style/]"/>
|
|
325 </macro>
|
|
326
|
|
327 <macro name="is_checked" requires="field">
|
|
328 <n.null_to_false.value/>
|
|
329 </macro>
|
|
330
|
|
331 <macro name="select" dot_parameter="options" parameters="onchange,style" requires="field">
|
|
332 <select id="[n.name/]" name="[n.name/]" onchange="[n.onchange/]" style="[n.style/]">
|
|
333 <n.options/>
|
|
334 </select>
|
|
335 </macro>
|
|
336
|
|
337 <macro name="focus" requires="field">
|
|
338 <script type="text/javascript">
|
|
339 $(document).ready(function() {
|
|
340 if (Nabble.isEmbedded) {
|
|
341 Nabble.resizeFrames('', 1);
|
|
342 }
|
|
343 $("#<n.name/>").focus();
|
|
344 });
|
|
345 </script>
|
|
346 </macro>
|
|
347
|
|
348 <macro name="select_option" parameters="value,selectedValue,class" dot_parameter="text">
|
|
349 <option value="[n.value/]" class="[n.class/]" selected="[n.if][condition.equal][value1.value/][value2.selectedValue/][/condition.equal][then.true/][else.null/][/n.if]"><n.text/></option>
|
|
350 </macro>
|
|
351
|
|
352 <macro name="null_to_false" dot_parameter="value">
|
|
353 <n.default to="[n.false/]" text="[n.value/]" />
|
|
354 </macro>
|
|
355
|
|
356 <macro name="false_to_null" dot_parameter="value">
|
|
357 <n.to_null_if value="[n.value/]" equals="[n.false/]" />
|
|
358 </macro>
|
|
359
|
|
360 <macro name="to_null_if" dot_parameter="value" parameters="equals">
|
|
361 <n.if.equal value1="[n.value/]" value2="[n.equals/]">
|
|
362 <then><n.null/></then>
|
|
363 <else><n.value/></else>
|
|
364 </n.if.equal>
|
|
365 </macro>
|
|
366
|
|
367 <macro name="radio" requires="field" parameters="id,option_value">
|
|
368 <n.if.equal value1="[n.value/]" value2="[n.option_value/]">
|
|
369 <then><input type="radio" id="[n.id/]" name="[n.name/]" value="[n.option_value/]" checked="true"/></then>
|
|
370 <else><input type="radio" id="[n.id/]" name="[n.name/]" value="[n.option_value/]" /></else>
|
|
371 </n.if.equal>
|
|
372 </macro>
|
|
373
|
|
374 <macro name="textarea" requires="field" parameters="wrap,tabindex,style,maxlength">
|
|
375 <textarea name="[n.name/]" id="[n.name/]" wrap="[n.wrap/]" maxlength="[n.maxlength/]" tabindex="[n.tabindex/]" style="[n.style/]"><n.hide_null.value/></textarea>
|
|
376 </macro>
|
|
377
|
|
378 <macro name="format_error" dot_parameter="message" parameters="prompt">
|
|
379 <n.set_var. name="message"><n.message/></n.set_var.>
|
|
380 <n.set_var. name="prompt"><n.prompt/></n.set_var.>
|
|
381 <n.if.not.is_empty.trim.var name="message">
|
|
382 <then>
|
|
383 <table class="error-message" style="width:100%">
|
|
384 <tr>
|
|
385 <td style="padding:.4em;width:40px;">
|
|
386 <img src="/images/icon_alert.png" class="image32"/>
|
|
387 </td>
|
|
388 <td style="padding:.4em;">
|
|
389 <strong><n.var name="message"/></strong>
|
|
390 <n.if.not.is_null.var name="prompt">
|
|
391 <then><div style="padding-top:.3em"><n.prompt/></div></then>
|
|
392 </n.if.not.is_null.var>
|
|
393 </td>
|
|
394 </tr>
|
|
395 </table>
|
|
396 </then>
|
|
397 </n.if.not.is_empty.trim.var>
|
|
398 </macro>
|
|
399
|
|
400 <macro name="view_name" requires="node">
|
|
401 <n.trim.switch. value="[n.app_or_root.type/]">
|
|
402 <n.case. value="category"><t>Category</t></n.case.>
|
|
403 <n.case. value="board"><t>Board</t></n.case.>
|
|
404 <n.case. value="gallery"><t>Gallery</t></n.case.>
|
|
405 <n.case. value="blog"><t>Blog</t></n.case.>
|
|
406 <n.case. value="news"><t>News</t></n.case.>
|
|
407 <n.default_case.><t>Forum</t></n.default_case.>
|
|
408 </n.trim.switch.>
|
|
409 </macro>
|
|
410
|
|
411 <macro name="lower_case_view_name" requires="node">
|
|
412 <n.trim.switch. value="[n.app_or_root.type/]">
|
|
413 <n.case. value="category"><t>category</t></n.case.>
|
|
414 <n.case. value="board"><t>board</t></n.case.>
|
|
415 <n.case. value="gallery"><t>gallery</t></n.case.>
|
|
416 <n.case. value="blog"><t>blog</t></n.case.>
|
|
417 <n.case. value="news"><t>news</t></n.case.>
|
|
418 <n.default_case.><t>forum</t></n.default_case.>
|
|
419 </n.trim.switch.>
|
|
420 </macro>
|
|
421
|
|
422 <macro name="child_name" requires="node">
|
|
423 <n.if.regex_matches text="[n.type/]" pattern="forum|category|mixed">
|
|
424 <then><t>Sub-Forum</t></then>
|
|
425 <else><t>Subcategory</t></else>
|
|
426 </n.if.regex_matches>
|
|
427 </macro>
|
|
428
|
|
429 <macro name="child_name_plural" requires="node">
|
|
430 <n.if.type equals="forum">
|
|
431 <then><t>Sub-Forums</t></then>
|
|
432 <else><t>Subcategories</t></else>
|
|
433 </n.if.type>
|
|
434 </macro>
|
|
435
|
|
436 <macro name="user_link" requires="user" parameters="title, class">
|
|
437 <a href="[n.path/]" title="[n.title/]" class="[n.class/]"><n.name/></a>
|
|
438 </macro>
|
|
439
|
|
440 <macro name="node_text" requires="node" dot_parameter="text">
|
|
441 <n.default. to="[n.subject/]"><n.text/></n.default.>
|
|
442 </macro>
|
|
443
|
|
444 <macro name="node_href" requires="node" dot_parameter="href">
|
|
445 <n.default. to="[n.path/]"><n.href/></n.default.>
|
|
446 </macro>
|
|
447
|
|
448 <macro name="node_link" requires="node" dot_parameter="href" parameters="text, title, class, target">
|
|
449 <a href="[n.node_href.href/]" title="[n.title/]" class="[n.class/]" target="[n.target/]"><n.node_text.text/></a>
|
|
450 </macro>
|
|
451
|
|
452 <macro name="title" dot_parameter="text">
|
|
453 <title><n.root_node.subject/> - <n.text/></title>
|
|
454 </macro>
|
|
455
|
|
456 <macro name="register_link" dot_parameter="text" parameters="title">
|
|
457 <a href="[n.register_path /]" title="[n.title/]" rel="nofollow"><n.default to="[t]Register[/t]" text="[n.text/]"/></a>
|
|
458 </macro>
|
|
459
|
|
460 <macro name="register_path" parameters="nextUrl">
|
|
461 <n.encode_url.remove_spaces.>
|
|
462 /template/NamlServlet.jtp?macro=start_registration_page
|
|
463 <n.add_to_path name="nextUrl" value="[n.nextUrl/]" />
|
|
464 </n.encode_url.remove_spaces.>
|
|
465 </macro>
|
|
466
|
|
467 <macro name="terms_link" dot_parameter="text" parameters="title">
|
|
468 <a href="[n.terms_of_use_url is_registration_form='true'/]" target="_new" title="[n.title/]" rel="nofollow"><n.default to="[t]Terms of Use[/t]" text="[n.text/]"/></a>
|
|
469 </macro>
|
|
470
|
|
471 <macro name="reply_link" requires="node" parameters="title, href">
|
|
472 <n.set_var. name="href"><n.default text="[n.href/]" to="[n.reply_path/]" /></n.set_var.>
|
|
473 <a href="[n.var name='href'/]" title="[n.title/]" rel="nofollow"><t>Reply</t></a>
|
|
474 </macro>
|
|
475
|
|
476 <macro name="reply_path" requires="node">
|
|
477 <n.encode_url.>
|
|
478 /template/NamlServlet.jtp?macro=reply&node=<n.id/>
|
|
479 </n.encode_url.>
|
|
480 </macro>
|
|
481
|
|
482 <macro name="new_topic_link" requires="node" dot_parameter="text" parameters="title, class, href">
|
|
483 <n.set_var. name="href"><n.default text="[n.href/]" to="[n.new_topic_path/]" /></n.set_var.>
|
|
484 <a href="[n.var name='href'/]" class="[n.class/]" title="[n.title/]" rel="nofollow"><n.text/></a>
|
|
485 </macro>
|
|
486
|
|
487 <macro name="people_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
488 <a href="[n.people_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]People[/t]"><n.text/></n.default.></a>
|
|
489 </macro>
|
|
490
|
|
491 <macro name="feeds_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
492 <a href="[n.feeds_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Feeds[/t]"><n.text/></n.default.></a>
|
|
493 </macro>
|
|
494
|
|
495 <macro name="feeds_path" requires="node">
|
|
496 <n.encode_url.>
|
|
497 /template/NamlServlet.jtp?macro=feeds&node=<n.id/>
|
|
498 </n.encode_url.>
|
|
499 </macro>
|
|
500
|
|
501 <macro name="subscribe_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
502 <a href="[n.subscribe_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Subscribe via email[/t]"><n.text/></n.default.></a>
|
|
503 </macro>
|
|
504
|
|
505 <macro name="subscribe_path" requires="node">
|
|
506 <n.encode_url.>
|
|
507 /template/NamlServlet.jtp?macro=subscribe&node=<n.id/>
|
|
508 </n.encode_url.>
|
|
509 </macro>
|
|
510
|
|
511 <macro name="post_by_email_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
512 <a href="[n.post_by_email_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Post by email[/t]"><n.text/></n.default.></a>
|
|
513 </macro>
|
|
514
|
|
515 <macro name="post_by_email_path" requires="node">
|
|
516 <n.encode_url.>
|
|
517 /template/NamlServlet.jtp?macro=post_by_email_page&node=<n.id/>
|
|
518 </n.encode_url.>
|
|
519 </macro>
|
|
520
|
|
521 <macro name="edit_subject_and_message_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
522 <a href="[n.edit_subject_and_message_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Edit name & description[/t]"><n.text/></n.default.></a>
|
|
523 </macro>
|
|
524
|
|
525 <macro name="edit_subject_and_message_path" requires="node">
|
|
526 <n.encode_url.>
|
|
527 /template/NamlServlet.jtp?macro=edit_app&node=<n.id/>
|
|
528 </n.encode_url.>
|
|
529 </macro>
|
|
530
|
|
531 <macro name="change_appearance_link" dot_parameter="text" parameters="title, class">
|
|
532 <a href="[n.change_appearance_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Change appearance[/t]"><n.text/></n.default.></a>
|
|
533 </macro>
|
|
534
|
|
535 <macro name="change_appearance_path">
|
|
536 <n.encode_url.>
|
|
537 /template/NamlServlet.jtp?macro=change_appearance
|
|
538 </n.encode_url.>
|
|
539 </macro>
|
|
540
|
|
541 <macro name="change_language_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
542 <a href="[n.change_language_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Change language[/t]"><n.text/></n.default.></a>
|
|
543 </macro>
|
|
544
|
|
545 <macro name="extras_and_addons_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
546 <a href="[n.extras_and_addons_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Extras & add-ons[/t]"><n.text/></n.default.></a>
|
|
547 </macro>
|
|
548
|
|
549 <macro name="change_type_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
550 <a href="[n.change_type_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Change application type[/t]"><n.text/></n.default.></a>
|
|
551 </macro>
|
|
552
|
|
553 <macro name="send_email_link" requires="user" dot_parameter="text" parameters="title, class">
|
|
554 <a href="[n.send_email_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.text/></a>
|
|
555 </macro>
|
|
556
|
|
557 <macro name="mailing_list_options_link" requires="mailing_list" dot_parameter="text" parameters="title, class">
|
|
558 <a href="[n.mailing_list_options_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.text/></a>
|
|
559 </macro>
|
|
560
|
|
561 <macro name="change_type_path" requires="node">
|
|
562 <n.encode_url.>
|
|
563 /template/NamlServlet.jtp?macro=change_app_type&node=<n.id/>
|
|
564 </n.encode_url.>
|
|
565 </macro>
|
|
566
|
|
567 <macro name="change_domain_name_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
568 <a href="[n.change_domain_name_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Change domain name[/t]"><n.text/></n.default.></a>
|
|
569 </macro>
|
|
570
|
|
571 <macro name="create_sub_app_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
572 <a href="[n.create_sub_app_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Create new [t.element.to_lower_case.child_name/][/t]"><n.text/></n.default.></a>
|
|
573 </macro>
|
|
574
|
|
575 <macro name="create_sub_app_path" requires="node">
|
|
576 <n.encode_url.>
|
|
577 /template/NamlServlet.jtp?macro=create_sub_app&node=<n.id/>
|
|
578 </n.encode_url.>
|
|
579 </macro>
|
|
580
|
|
581 <macro name="manage_pinned_topics_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
582 <a href="[n.manage_pinned_topics_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Manage pinned topics[/t]"><n.text/></n.default.></a>
|
|
583 </macro>
|
|
584
|
|
585 <macro name="manage_sub_apps_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
586 <a href="[n.manage_sub_apps_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Manage [t.items.to_lower_case.child_name_plural/][/t]"><n.text/></n.default.></a>
|
|
587 </macro>
|
|
588
|
|
589 <macro name="parent_options_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
590 <a href="[n.parent_options_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Change parent[/t]"><n.text/></n.default.></a>
|
|
591 </macro>
|
|
592
|
|
593 <macro name="change_permissions_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
594 <a href="[n.change_permissions_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Change permissions[/t]"><n.text/></n.default.></a>
|
|
595 </macro>
|
|
596
|
|
597 <macro name="change_permissions_path" requires="node">
|
|
598 <n.encode_url.>
|
|
599 /template/NamlServlet.jtp?macro=change_permissions&node=<n.id/>
|
|
600 </n.encode_url.>
|
|
601 </macro>
|
|
602
|
|
603 <macro name="manage_users_and_groups_link" dot_parameter="text" parameters="title, class">
|
|
604 <a href="[n.manage_users_and_groups_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Manage users & groups[/t]"><n.text/></n.default.></a>
|
|
605 </macro>
|
|
606
|
|
607 <macro name="manage_subscribers_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
608 <a href="[n.manage_subscribers_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Manage subscribers[/t]"><n.text/></n.default.></a>
|
|
609 </macro>
|
|
610
|
|
611 <macro name="manage_banned_users_link" dot_parameter="text" parameters="title, class">
|
|
612 <a href="[n.manage_banned_users_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Manage banned users[/t]"><n.text/></n.default.></a>
|
|
613 </macro>
|
|
614
|
|
615 <macro name="manage_banned_users_path">
|
|
616 <n.encode_url.>
|
|
617 /template/NamlServlet.jtp?macro=manage_banned_users
|
|
618 </n.encode_url.>
|
|
619 </macro>
|
|
620
|
|
621 <macro name="mailing_list_archive_settings_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
622 <a href="[n.mailing_list_archive_settings_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Mailing list archive settings[/t]"><n.text/></n.default.></a>
|
|
623 </macro>
|
|
624
|
|
625 <macro name="mailing_list_archive_settings_path" requires="node">
|
|
626 <n.encode_url.>
|
|
627 /template/NamlServlet.jtp?macro=mailing_list_archive_settings&node=<n.id/>
|
|
628 </n.encode_url.>
|
|
629 </macro>
|
|
630
|
|
631 <macro name="embedding_options_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
632 <a href="[n.embedding_options_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Embedding options[/t]"><n.text/></n.default.></a>
|
|
633 </macro>
|
|
634
|
|
635 <macro name="delete_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
636 <a href="[n.delete_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Delete[/t]"><n.text/></n.default.></a>
|
|
637 </macro>
|
|
638
|
|
639 <macro name="delete_path" requires="node">
|
|
640 <n.encode_url.>
|
|
641 /template/NamlServlet.jtp?macro=delete_app&node=<n.id/>
|
|
642 </n.encode_url.>
|
|
643 </macro>
|
|
644
|
|
645 <macro name="delete_post_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
646 <a href="javascript: void(0)" onclick="Nabble.deletePost([n.id/])" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Delete this post[/t]"><n.text/></n.default.></a>
|
|
647 </macro>
|
|
648
|
|
649 <macro name="delete_recursively_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
650 <a href="javascript: void(0)" onclick="Nabble.deleteFromSite([n.id/])" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Delete this post and replies[/t]"><n.text/></n.default.></a>
|
|
651 </macro>
|
|
652
|
|
653 <macro name="edit_post_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
654 <a href="[n.edit_post_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Edit post[/t]"><n.text/></n.default.></a>
|
|
655 </macro>
|
|
656
|
|
657 <macro name="edit_post_path" requires="node">
|
|
658 <n.encode_url.>
|
|
659 /template/NamlServlet.jtp?macro=edit_post&node=<n.id/>
|
|
660 </n.encode_url.>
|
|
661 </macro>
|
|
662
|
|
663 <macro name="move_post_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
664 <a href="[n.move_post_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Move post[/t]"><n.text/></n.default.></a>
|
|
665 </macro>
|
|
666
|
|
667 <macro name="move_post_path" requires="node">
|
|
668 <n.encode_url.>
|
|
669 /template/NamlServlet.jtp?macro=move_node&node=<n.id/>
|
|
670 </n.encode_url.>
|
|
671 </macro>
|
|
672
|
|
673 <macro name="permalink" requires="node">
|
|
674 <a href="javascript: void(0)" onclick="prompt('Copy this:','[n.url/]')"><t>Permalink</t></a>
|
|
675 </macro>
|
|
676
|
|
677 <macro name="embed_post_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
678 <a href="[n.embed_post_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Embed post[/t]"><n.text/></n.default.></a>
|
|
679 </macro>
|
|
680
|
|
681 <macro name="print_post_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
682 <a href="[n.print_post_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Print post[/t]"><n.text/></n.default.></a>
|
|
683 </macro>
|
|
684
|
|
685 <macro name="print_post_path" requires="node">
|
|
686 <n.encode_url.>
|
|
687 /template/NamlServlet.jtp?macro=print_post&node=<n.id/>
|
|
688 </n.encode_url.>
|
|
689 </macro>
|
|
690
|
|
691 <macro name="reply_to_author_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
692 <a href="[n.reply_to_author_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Reply to author[/t]"><n.text/></n.default.></a>
|
|
693 </macro>
|
|
694
|
|
695 <macro name="change_post_date_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
696 <a href="[n.change_post_date_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Change post date[/t]"><n.text/></n.default.></a>
|
|
697 </macro>
|
|
698
|
|
699 <macro name="change_post_date_path" requires="node">
|
|
700 <n.encode_url.>
|
|
701 /template/NamlServlet.jtp?macro=change_post_date&node=<n.id/>
|
|
702 </n.encode_url.>
|
|
703 </macro>
|
|
704
|
|
705 <macro name="raw_mail_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
706 <a href="[n.raw_mail_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]Raw mail[/t]"><n.text/></n.default.></a>
|
|
707 </macro>
|
|
708
|
|
709 <macro name="raw_mail_path" requires="node">
|
|
710 <n.encode_url.>
|
|
711 /template/NamlServlet.jtp?macro=raw_mail&node=<n.id/>
|
|
712 </n.encode_url.>
|
|
713 </macro>
|
|
714
|
|
715 <macro name="change_user_groups_path" requires="user">
|
|
716 <n.encode_url.>
|
|
717 /template/NamlServlet.jtp?macro=change_user_groups&user=<n.id/>
|
|
718 </n.encode_url.>
|
|
719 </macro>
|
|
720
|
|
721 <macro name="send_email_path" requires="user">
|
|
722 <n.encode_url.>
|
|
723 /user/SendEmail.jtp?type=user&user=<n.id/>
|
|
724 </n.encode_url.>
|
|
725 </macro>
|
|
726
|
|
727 <macro name="user_profile_path">
|
|
728 <n.encode_url.>
|
|
729 /template/NamlServlet.jtp?macro=user_profile
|
|
730 </n.encode_url.>
|
|
731 </macro>
|
|
732
|
|
733 <macro name="edit_profile_path" requires="user">
|
|
734 <n.encode_url.>
|
|
735 /template/NamlServlet.jtp?macro=edit_profile&user=<n.id/>
|
|
736 </n.encode_url.>
|
|
737 </macro>
|
|
738
|
|
739 <macro name="ban_path" requires="user">
|
|
740 <n.encode_url.>
|
|
741 /template/NamlServlet.jtp?macro=ban_user&user=<n.id/>
|
|
742 </n.encode_url.>
|
|
743 </macro>
|
|
744
|
|
745 <macro name="unban_path" requires="user">
|
|
746 <n.encode_url.>
|
|
747 /template/NamlServlet.jtp?macro=unban_user&user=<n.id/>
|
|
748 </n.encode_url.>
|
|
749 </macro>
|
|
750
|
|
751 <macro name="one_or_many" dot_parameter="n" parameters="one_text, many_text">
|
|
752 <n.if.equal value1="[n.n/]" value2="1">
|
|
753 <then>
|
|
754 1 <n.one_text/>
|
|
755 </then>
|
|
756 <else>
|
|
757 <n.n/> <n.many_text/>
|
|
758 </else>
|
|
759 </n.if.equal>
|
|
760 </macro>
|
|
761
|
|
762 <macro name="comments_link" requires="node">
|
|
763 <a href="[n.first_reply.url/]"><n.one_or_many.replies>
|
|
764 <one_text><t>comment</t></one_text>
|
|
765 <many_text><t>comments</t></many_text>
|
|
766 </n.one_or_many.replies></a>
|
|
767 </macro>
|
|
768
|
|
769 <macro name="replies_link" requires="node">
|
|
770 <a href="[n.first_reply.url/]"><n.one_or_many.replies>
|
|
771 <one_text><t>reply</t></one_text>
|
|
772 <many_text><t>replies</t></many_text>
|
|
773 </n.one_or_many.replies></a>
|
|
774 </macro>
|
|
775
|
|
776 <macro name="view_logs_link" requires="node" dot_parameter="text" parameters="title, class">
|
|
777 <a href="[n.view_log_path/]" class="[n.class/]" rel="nofollow" title="[n.title/]"><n.default. to="[t]View logs[/t]"><n.text/></n.default.></a>
|
|
778 </macro>
|
|
779
|
|
780 <macro name="view_log_path">
|
|
781 <n.encode_url.>
|
|
782 /template/NamlServlet.jtp?macro=view_log
|
|
783 </n.encode_url.>
|
|
784 </macro>
|
|
785
|
|
786 <macro name="search_box" requires="node">
|
|
787 <n.search_form.>
|
|
788 <input id="search-input" name="query" size="18" class="medium-border-color"/>
|
|
789 <n.search_box_dropdown/>
|
|
790 </n.search_form.>
|
|
791 </macro>
|
|
792
|
|
793 <macro name="search_box_dropdown" requires="node">
|
|
794 <n.put_in_head.>
|
|
795 <style type="text/css">
|
|
796 #search-box-dropdown {
|
|
797 text-align:left;
|
|
798 position:absolute;
|
|
799 display:none;
|
|
800 z-index:1000;
|
|
801 overflow:hidden;
|
|
802 }
|
|
803 </style>
|
|
804 <script type="text/javascript">
|
|
805 $(document).ready(function() {
|
|
806 var $sdd = $('#search-box-dropdown');
|
|
807 var $sb = $('#search-input');
|
|
808 var $form = $sb.parent();
|
|
809 var timeout;
|
|
810 $(document).click(function(o){
|
|
811 var $target = $(o.target);
|
|
812 if ($target.parents().hasClass('search-box-dropdown')) {
|
|
813 clearTimeout(timeout);
|
|
814 $sb.focus();
|
|
815 }
|
|
816 });
|
|
817 $sb.focusin(function(e) {
|
|
818 $sdd.css('left', $sb.position().left - 5);
|
|
819 $sdd.width($sb.outerWidth() + 10);
|
|
820 $sdd.show();
|
|
821 });
|
|
822 $sb.focusout(function() {
|
|
823 timeout = setTimeout(function() {
|
|
824 $sdd.hide();
|
|
825 },250);
|
|
826 });
|
|
827 <n.if.not.is_root>
|
|
828 <then>
|
|
829 $('input[type=radio]', $sdd).change(function() {
|
|
830 var nodeId = $(this).val();
|
|
831 $('input[name="node"]', $form).val(nodeId);
|
|
832 });
|
|
833 $('input[name="node"]', $form).val(<n.root_node.id/>);
|
|
834 </then>
|
|
835 </n.if.not.is_root>
|
|
836 });
|
|
837 </script>
|
|
838 </n.put_in_head.>
|
|
839 <div id="search-box-dropdown" class="search-box-dropdown light-bg-color drop-shadow border1 medium-border-color rounded-bottom">
|
|
840 <n.if.not.is_root>
|
|
841 <then>
|
|
842 <div style="margin:.5em .5em 0 .5em">
|
|
843 <b><t>Search</t></b><br/>
|
|
844 <input id="search-root-node" type="radio" name="n" value="[n.root_node.id/]" checked="true"/>
|
|
845 <label for="search-root-node"><t>everywhere</t></label><br/>
|
|
846
|
|
847 <input id="search-this-node" type="radio" name="n" value="[n.id/]"/>
|
|
848 <label for="search-this-node">
|
|
849 <n.if.is_post>
|
|
850 <then><t>only in this topic</t></then>
|
|
851 <else><t>in <t.location.subject/></t></else>
|
|
852 </n.if.is_post>
|
|
853 </label>
|
|
854 </div>
|
|
855 </then>
|
|
856 </n.if.not.is_root>
|
|
857 <div style="margin:.5em;line-height:2em">
|
|
858 <input class="toolbar action-button float-right" type="submit" value="[t]Search[/t]"/>
|
|
859 <a href="[n.advanced_search_path/]" rel="nofollow" style="font-size:80%"><t>Advanced Search</t></a>
|
|
860 </div>
|
|
861 </div>
|
|
862 </macro>
|
|
863
|
|
864 <macro name="force_wrap" dot_parameter="text">
|
|
865 <n.regex_replace_all. pattern="\s+" replacement="[n.lt/]br/[n.gt/]">
|
|
866 <n.text/>
|
|
867 </n.regex_replace_all.>
|
|
868 </macro>
|
|
869
|
|
870 <macro name="truncated" requires="message" parameters="size">
|
|
871 <n.truncate. size="[n.size/]"><n.as_text/></n.truncate.>
|
|
872 </macro>
|
|
873
|
|
874 <macro name="views" requires="node" parameters="show_text">
|
|
875 <n.if.equal value1="[n.show_text/]" value2="true">
|
|
876 <then>
|
|
877 <span id="v[n.id/]" style="display:none">1 <t>view</t>|%1 <t>views</t></span>
|
|
878 </then>
|
|
879 <else>
|
|
880 <span id="v[n.id/]" style="display:none"></span>
|
|
881 </else>
|
|
882 </n.if.equal>
|
|
883 <n.put_in_head.>
|
|
884 <script type="text/javascript">
|
|
885 Nabble.nViews = function(id, views) {
|
|
886 var $v = $('#v'+id);
|
|
887 var pos = views=='1'?0:1;
|
|
888 var t = $v.html()? $v.html().split('|')[pos]:'';
|
|
889 $v.html(t == ''? views : t.replace(/%1/g,views)).show();
|
|
890 };
|
|
891 </script>
|
|
892 </n.put_in_head.>
|
|
893 <n.call_later value="[n.id/]" param="views"/>
|
|
894 </macro>
|
|
895
|
|
896 <macro name="views_js">
|
|
897 <n.param_loop. param="views">
|
|
898 Nabble.nViews(<n.current_parameter_value/>,'<n.node_views node_id="[n.current_parameter_value/]" />');
|
|
899 </n.param_loop.>
|
|
900 </macro>
|
|
901
|
|
902 <macro name="loop" requires="sequence" dot_parameter="do" parameters="by">
|
|
903 <n.while.next_element inc="[n.by/]">
|
|
904 <loop>
|
|
905 <n.do/>
|
|
906 </loop>
|
|
907 </n.while.next_element>
|
|
908 </macro>
|
|
909
|
|
910 <macro name="filter_by" requires="list" dot_parameter="filter">
|
|
911 <n.loop.>
|
|
912 <n.if.not.filter>
|
|
913 <then.remove_current_element/>
|
|
914 </n.if.not.filter>
|
|
915 </n.loop.>
|
|
916 <n.reset_list_index/>
|
|
917 </macro>
|
|
918
|
|
919 <macro name="regex_matches" parameters="pattern,text">
|
|
920 <n.regex. pattern="[n.pattern/]" text="[n.text/]">
|
|
921 <n.matches/>
|
|
922 </n.regex.>
|
|
923 </macro>
|
|
924
|
|
925 <macro name="did_find" parameters="group" requires="regex">
|
|
926 <n.not.is_null.found group="[n.group/]" />
|
|
927 </macro>
|
|
928
|
|
929 <macro name="all_true" dot_parameter="text">
|
|
930 <n.regex_matches pattern="(\s*true)*\s*" text="[n.text/]" />
|
|
931 </macro>
|
|
932
|
|
933 <macro name="neither" parameters="condition1,condition2">
|
|
934 <n.both condition1="[n.not.condition1/]" condition2="[n.not.condition2/]"/>
|
|
935 </macro>
|
|
936
|
|
937 <macro name="page_node" dot_parameter="do" requires="js_loop">
|
|
938 <n.get_node_from_id. node_id="[n.value/]">
|
|
939 <n.do/>
|
|
940 </n.get_node_from_id.>
|
|
941 </macro>
|
|
942
|
|
943 <macro name="page_user" dot_parameter="do" requires="js_loop">
|
|
944 <n.get_user_from_id. user_id="[n.value/]">
|
|
945 <n.do/>
|
|
946 </n.get_user_from_id.>
|
|
947 </macro>
|
|
948
|
|
949 <macro name="form" dot_parameter="content" parameters="macro,method,onsubmit" requires="servlet">
|
|
950 <n.set_var. name="macro"><n.default. to="[n.page_template/]"><n.macro/></n.default.></n.set_var.>
|
|
951 <form method="[n.default. to='POST'][n.method/][/n.default.]" action="/template/NamlServlet.jtp?[n.var name='macro'/]" onsubmit="[n.onsubmit/]" accept-charset="UTF-8">
|
|
952 <input type="hidden" name="macro" value="[n.var name='macro'/]" />
|
|
953 <n.node_field.hidden/>
|
|
954 <n.user_field.hidden/>
|
|
955 <n.content/>
|
|
956 </form>
|
|
957 </macro>
|
|
958
|
|
959 <macro name="is_submitted_form" requires="servlet">
|
|
960 <n.request_method_is_post/>
|
|
961 </macro>
|
|
962
|
|
963 <macro name="request_method_is_post" requires="servlet">
|
|
964 <n.equal value1="[n.request_method/]" value2="POST"/>
|
|
965 </macro>
|
|
966
|
|
967 <macro name="node_field" dot_parameter="do">
|
|
968 <n.field. name="node"><n.do/></n.field.>
|
|
969 </macro>
|
|
970
|
|
971 <macro name="user_field" dot_parameter="do">
|
|
972 <n.field. name="user"><n.do/></n.field.>
|
|
973 </macro>
|
|
974
|
|
975 <macro name="node_page" dot_parameter="do" requires="servlet">
|
|
976 <n.get_node_from_parameter.as_node_page.do/>
|
|
977 </macro>
|
|
978
|
|
979 <macro name="get_node_from_parameter" dot_parameter="do" requires="servlet">
|
|
980 <n.catch_exception. id="get-node-block">
|
|
981 <n.get_node_from_request_parameter.do/>
|
|
982 </n.catch_exception.><n.handle_exception. for="get-node-block">
|
|
983 <n.exception. name="node_not_found">
|
|
984 <n.send_http_error code="404" text="Node Not Found" />
|
|
985 </n.exception.>
|
|
986 </n.handle_exception.>
|
|
987 </macro>
|
|
988
|
|
989 <macro name="get_node_from_parameter" dot_parameter="do">
|
|
990 <n.get_node_from_request_parameter.do/>
|
|
991 </macro>
|
|
992
|
|
993 <macro name="user_page" dot_parameter="do" requires="servlet">
|
|
994 <n.get_user_from_parameter.as_user_page.do/>
|
|
995 </macro>
|
|
996
|
|
997 <macro name="width_style" dot_parameter="width">
|
|
998 <n.style. property='width'><n.width/></n.style.>
|
|
999 </macro>
|
|
1000
|
|
1001 <macro name="has_parent" parameters="node">
|
|
1002 <n.not.is_root/>
|
|
1003 </macro>
|
|
1004
|
|
1005 <macro name="zebra_table_javascript" parameters="table_selector">
|
|
1006 <n.put_in_head.>
|
|
1007 <script type="text/javascript">
|
|
1008 $(document).ready(function() {
|
|
1009 $('<n.table_selector/> > tbody > tr:even').filter(':gt(0)').addClass('light-bg-color');
|
|
1010 });
|
|
1011 </script>
|
|
1012 </n.put_in_head.>
|
|
1013 </macro>
|
|
1014
|
|
1015 <macro name="bold_label_style">
|
|
1016 <style type="text/css">
|
|
1017 label { font-weight:bold; }
|
|
1018 </style>
|
|
1019 </macro>
|
|
1020
|
|
1021 <macro name="fix_link_in" dot_parameter="text" parameters="url">
|
|
1022 <n.regex_replace_all. pattern="[n.lt/]a[n.gt/]" replacement="[n.lt/]a href='[n.url/]' rel='nofollow'[n.gt/]">
|
|
1023 <n.text/>
|
|
1024 </n.regex_replace_all.>
|
|
1025 </macro>
|
|
1026
|
|
1027 <macro name="remove_spaces" dot_parameter="text">
|
|
1028 <n.regex_replace_all. pattern="\s+" replacement="">
|
|
1029 <n.text/>
|
|
1030 </n.regex_replace_all.>
|
|
1031 </macro>
|
|
1032
|
|
1033 <macro name="remove_spaces_between_tags" dot_parameter="text">
|
|
1034 <n.regex_replace_all. pattern="[n.gt/]\s+[n.lt/]" replacement="[n.gt/][n.lt/]">
|
|
1035 <n.text/>
|
|
1036 </n.regex_replace_all.>
|
|
1037 </macro>
|
|
1038
|
|
1039 <macro name="compress" dot_parameter="text">
|
|
1040 <n.regex_replace_all. pattern="\s+" replacement=" ">
|
|
1041 <n.trim.text/>
|
|
1042 </n.regex_replace_all.>
|
|
1043 </macro>
|
|
1044
|
|
1045 <macro name="remove_html_tags" dot_parameter="text">
|
|
1046 <n.set_var. name='tag_regex'><n.lt/>[^<n.gt/>]*<n.gt/></n.set_var.>
|
|
1047 <n.regex_replace_all. pattern="[n.var name='tag_regex'/]" replacement="">
|
|
1048 <n.text/>
|
|
1049 </n.regex_replace_all.>
|
|
1050 </macro>
|
|
1051
|
|
1052 <macro name="add_line_numbers_to" dot_parameter="text">
|
|
1053 <n.string_list. values="[n.text/]" separator="\n" trim="[n.false/]">
|
|
1054 <n.int. n="1">
|
|
1055 <n.loop.>
|
|
1056 <n.inc/> <n.current_string/><n.crlf/>
|
|
1057 </n.loop.>
|
|
1058 </n.int.>
|
|
1059 </n.string_list.>
|
|
1060 </macro>
|
|
1061
|
|
1062 <macro name="hidden_if" dot_parameter="condition">
|
|
1063 <n.if.condition>
|
|
1064 <then>display:none;</then>
|
|
1065 </n.if.condition>
|
|
1066 </macro>
|
|
1067
|
|
1068 <macro name="return_to_link" requires="node">
|
|
1069 <n.app_or_root.>
|
|
1070 «
|
|
1071 <a href="[n.path/]"><t>Return to <t.location.subject/></t></a>
|
|
1072 </n.app_or_root.>
|
|
1073 </macro>
|
|
1074
|
|
1075 <macro name="small_notice" dot_parameter="text">
|
|
1076 <p style="clear:both;font-size:80%;padding-top:.5em">
|
|
1077 <n.text/>
|
|
1078 </p>
|
|
1079 </macro>
|
|
1080
|
|
1081 <macro name="is_ajax">
|
|
1082 <n.is_in_command name="ajax" />
|
|
1083 </macro>
|
|
1084
|
|
1085 <macro name="ajax" dot_parameter="do" parameters="is_cached" requires="servlet">
|
|
1086 <n.use_html_encoder.>
|
|
1087 <n.do/>
|
|
1088 <n.if.is_cached>
|
|
1089 <then.load_call_later_script/>
|
|
1090 <else>
|
|
1091 <script type="text/javascript">
|
|
1092 <n.compress.run_call_later_now/>
|
|
1093 </script>
|
|
1094 </else>
|
|
1095 </n.if.is_cached>
|
|
1096 </n.use_html_encoder.>
|
|
1097 </macro>
|
|
1098
|
|
1099 <macro name="cache" parameters="var" dot_parameter="value">
|
|
1100 <n.if.not.global_is_var_set name="[n.var/]">
|
|
1101 <then.global_set_var name="[n.var/]" value="[n.value/]" />
|
|
1102 </n.if.not.global_is_var_set>
|
|
1103 <n.global_var name="[n.var/]"/>
|
|
1104 </macro>
|
|
1105
|
|
1106 <macro name="has_parameter" dot_parameter="name" requires="http_request">
|
|
1107 <n.not.is_null.get_parameter name="[n.name/]" />
|
|
1108 </macro>
|
|
1109
|
|
1110 <macro name="javascript_response" requires="servlet">
|
|
1111 <n.set_response_header name="Content-Type" value="application/x-javascript" />
|
|
1112 </macro>
|
|
1113
|
|
1114 <macro name="xml_response" requires="servlet">
|
|
1115 <n.set_response_header name="Content-Type" value="application/xml" />
|
|
1116 </macro>
|
|
1117
|
|
1118 <macro name="text_response" requires="servlet">
|
|
1119 <n.set_response_header name="Content-Type" value="text/plain" />
|
|
1120 </macro>
|
|
1121
|
|
1122 <macro name="italic" dot_parameter="text">
|
|
1123 <i><n.text/></i>
|
|
1124 </macro>
|
|
1125
|
|
1126 <macro name="bold" dot_parameter="text">
|
|
1127 <b><n.text/></b>
|
|
1128 </macro>
|
|
1129
|
|
1130
|
|
1131 <macro name="set_local_user" dot_parameter="user">
|
|
1132 <n.uplevel_set_var name="local_user" value="[n.user/]" />
|
|
1133 </macro>
|
|
1134
|
|
1135 <macro name="local_user" dot_parameter="do">
|
|
1136 <n.get_user user="[n.uplevel_var name='local_user'/]" do="[n.do/]" />
|
|
1137 </macro>
|
|
1138
|
|
1139 <macro name="set_local_node" dot_parameter="node">
|
|
1140 <n.if.is_null.node>
|
|
1141 <then.throw_runtime_exception text="can't set_local_node to null" />
|
|
1142 </n.if.is_null.node>
|
|
1143 <n.uplevel_set_var name="local_node" value="[n.node/]" />
|
|
1144 </macro>
|
|
1145
|
|
1146 <macro name="local_node" dot_parameter="do">
|
|
1147 <n.get_node node="[n.uplevel_var name='local_node'/]" do="[n.do/]" />
|
|
1148 </macro>
|
|
1149
|
|
1150 <macro name="set_local_subscription" dot_parameter="subscription">
|
|
1151 <n.uplevel_set_var name="local_subscription" value="[n.subscription/]" />
|
|
1152 </macro>
|
|
1153
|
|
1154 <macro name="local_subscription" dot_parameter="do">
|
|
1155 <n.get_subscription subscription="[n.uplevel_var name='local_subscription'/]" do="[n.do/]" />
|
|
1156 </macro>
|
|
1157
|
|
1158 <macro name="has_topic_node" requires="node">
|
|
1159 <n.is_post/>
|
|
1160 </macro>
|
|
1161
|
|
1162 <macro name="as_html_comments" dot_parameter="text">
|
|
1163 <n.lt/>!-- <n.text/> --<n.gt/>
|
|
1164 </macro>
|
|
1165
|
|
1166 <macro name="encode_text" dot_parameter="text">
|
|
1167 <n.encode.use_text_encoder.text/>
|
|
1168 </macro>
|
|
1169
|
|
1170 <macro name="encode_url" dot_parameter="text">
|
|
1171 <n.encode.use_url_encoder.text/>
|
|
1172 </macro>
|
|
1173
|
|
1174 <macro name="comment" dot_parameter="text">
|
|
1175 </macro>
|
|
1176
|
|
1177 <macro name="array_of_user_ids" parameters="var_name, group">
|
|
1178 <script type="text/javascript">
|
|
1179 var <n.var_name/> = [<n.compress.>
|
|
1180 <n.users_in_group. group="[n.group/]">
|
|
1181 <n.loop.>
|
|
1182 <n.if.not.is_first_element>
|
|
1183 <then>,</then>
|
|
1184 </n.if.not.is_first_element>
|
|
1185 <n.current_user.id/>
|
|
1186 </n.loop.>
|
|
1187 </n.users_in_group.>
|
|
1188 </n.compress.>];
|
|
1189 </script>
|
|
1190 </macro>
|
|
1191
|
|
1192 <macro name="doc for visible_for_admins">
|
|
1193 <n.doc_text.>
|
|
1194 Shows the HTML elements returned by the <i>selector</i> parameter if the current visitor is an administrator.
|
|
1195 This is very helpful in cached pages, where you can't use the visitor command.
|
|
1196 So the solution is to use javascript to perform this check.
|
|
1197 </n.doc_text.>
|
|
1198 </macro>
|
|
1199
|
|
1200 <macro name="visible_for_admins" parameters="selector">
|
|
1201 <n.put_in_head.>
|
|
1202 <n.array_of_user_ids var_name="site_admins" group="[n.administrators_group/]"/>
|
|
1203 </n.put_in_head.>
|
|
1204 <script type="text/javascript">
|
|
1205 $(document).ready(function() {
|
|
1206 if (Nabble.userId && site_admins.indexOf(Number(Nabble.userId)) >= 0)
|
|
1207 $('<n.selector/>').show();
|
|
1208 });
|
|
1209 </script>
|
|
1210 </macro>
|
|
1211
|
|
1212 <macro name="alternate" parameters="var, first_value, second_value">
|
|
1213 <n.if.not.global_is_var_set name="[n.var/]">
|
|
1214 <then.global_set_var name="[n.var/]" value="[n.true/]" />
|
|
1215 </n.if.not.global_is_var_set>
|
|
1216 <n.if.global_var name="[n.var/]">
|
|
1217 <then.first_value/>
|
|
1218 <else.second_value/>
|
|
1219 </n.if.global_var>
|
|
1220 <n.global_set_var. name="[n.var/]">
|
|
1221 <n.not.global_var name="[n.var/]" />
|
|
1222 </n.global_set_var.>
|
|
1223 </macro>
|
|
1224
|
|
1225 <macro name="add_to_path" parameters="name,default_value" dot_parameter="value">
|
|
1226 <n.if.not.is_null.value>
|
|
1227 <then>
|
|
1228 <n.if.not.equal value1="[n.value/]" value2="[n.default_value/]">
|
|
1229 <then>
|
|
1230 &<n.name/>=<n.encode_text.value/>
|
|
1231 </then>
|
|
1232 </n.if.not.equal>
|
|
1233 </then>
|
|
1234 </n.if.not.is_null.value>
|
|
1235 </macro>
|
|
1236
|
|
1237 <macro name="support_link">
|
|
1238 <n.if.is_null.support_url>
|
|
1239 <then.null/>
|
|
1240 <else>
|
|
1241 <a href="[n.support_url/]" target='_top'><t>Nabble Support</t></a>
|
|
1242 </else>
|
|
1243 </n.if.is_null.support_url>
|
|
1244 </macro>
|
|
1245
|
|
1246 <macro name="important" dot_parameter="text">
|
|
1247 <span class="important"><n.text/></span>
|
|
1248 </macro>
|
|
1249
|
|
1250 <macro name="subject" requires="node">
|
|
1251 <n.subject_impl/>
|
|
1252 </macro>
|
|
1253
|
|
1254 <macro name="signature" dot_parameter="do" requires="user">
|
|
1255 <n.signature_impl.do/>
|
|
1256 </macro>
|