Mercurial Hosting > nabble
annotate src/nabble/modules/naml/mobile.naml @ 48:8c39a2f1dc0c
mobile fix
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 20 Jun 2021 19:23:21 -0600 |
parents | 72765b66e2c3 |
children |
rev | line source |
---|---|
0 | 1 <namespace name="mobile"/> |
2 | |
3 <macro name="html5" parameters="head,body"> | |
4 <n.html5_impl> | |
5 <head> | |
6 <n.head/> | |
7 </head> | |
8 <body> | |
9 <n.html5_top_bar/> | |
10 <n.body/> | |
11 <n.html5_nabble_footer/> | |
12 </body> | |
13 </n.html5_impl> | |
14 </macro> | |
15 | |
16 <macro name="html5_impl" parameters="head,body" requires="servlet"> | |
17 <n.page_start/> | |
18 <n.nabble_html> | |
19 <do> | |
20 <n.put_in_head.head/> | |
21 <n.body/> | |
22 <n.load_call_later_script/> | |
23 </do> | |
24 <output> | |
25 <![CDATA[<!DOCTYPE html>]]> | |
26 <html> | |
27 <head> | |
28 <![CDATA[<meta charset="utf-8"> | |
29 <meta name="viewport" content="width=device-width, initial-scale=1.0">]]> | |
30 <n.html5_stylesheets/> | |
31 <n.html5_javascript_libraries/> | |
32 <n.html_head_content/> | |
33 </head> | |
34 <body> | |
35 <div class="nabble macro_[n.page_template/]" id="nabble"> | |
36 <n.apply_filters.html_body_content/> | |
37 </div> | |
38 <n.bottom_scripts/> | |
39 <n.as_html_comments.site_information/> | |
40 </body> | |
41 </html> | |
42 </output> | |
43 </n.nabble_html> | |
44 </macro> | |
45 | |
46 <override_macro name="nabble_shared_scripts"> | |
47 <n.overridden/> | |
48 <script> | |
49 (function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera); | |
50 | |
51 $(document).ready(function() { | |
52 if (jQuery.browser.mobile) { | |
53 $('a').each(function(){ | |
54 var href = $(this).attr('href'); | |
55 if (href.indexOf('/template/NamlServlet.jtp?macro=new_topic&') >= 0) { | |
56 $(this).attr('href',href.replace(/=new_topic&/, '=new_topic5&')).attr('target','top'); | |
57 } else if (href.indexOf('/template/NamlServlet.jtp?macro=reply&') >= 0) { | |
58 $(this).attr('href',href.replace(/=reply&/, '=reply5&')).attr('target','top');; | |
59 } | |
60 }); | |
61 } | |
62 }); | |
63 </script> | |
64 </override_macro> | |
65 | |
66 <macro name="html5_stylesheets"> | |
67 <link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css"/> | |
68 <style>body {background:transparent}</style> | |
69 <link rel="stylesheet" href="/nabble.css?v=[n.css_version/]" type="text/css" /> | |
70 <link rel="stylesheet" href="/template/NamlServlet.jtp?macro=site_style" type="text/css" /> | |
71 </macro> | |
72 | |
73 <macro name="html5_javascript_libraries"> | |
74 <script src="/assets/jquery/jquery-1.9.1.min.js"></script> | |
75 <script src="/assets/bootstrap/js/bootstrap.min.js"></script> | |
76 <script src="[n.html5_js_path/]" type="text/javascript"></script> | |
77 </macro> | |
78 | |
79 <macro name="html5_top_bar"> | |
80 <div class="top-bar"> | |
81 <div class="breadcrumbs pull-left"> | |
82 <n.breadcrumbs/> | |
83 </div> | |
84 <div class="pull-right"> | |
85 <n.html5_user_header/> | |
86 </div> | |
87 </div> | |
88 </macro> | |
89 | |
90 <macro name="html5_nabble_footer"> | |
91 <n.nabble_footer/> | |
92 </macro> | |
93 | |
94 <macro name="html5_user_header"> | |
95 <span style="white-space:nowrap;" id="nabble-user-header"></span> | |
96 <script type="text/javascript">Nabble.userHeader();</script> | |
97 </macro> | |
98 | |
99 <macro name="html5_js"> | |
100 var NabbleDropdown = {}; | |
101 <n.javascript_library/> | |
102 <n.html5_js_fix/> | |
103 </macro> | |
104 | |
105 <macro name="html5_js_fix"> | |
106 Nabble.userDropdown = function() { | |
107 var $t = $('#user-dd'); | |
108 if ($t.size() == 0) | |
109 return; | |
110 $t.empty(); | |
111 var elem = '<div class="dropdown user-menu">'; | |
112 elem += '<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">'+Nabble.escapeHTML(Nabble.username)+' <img src="/images/more.png" width="10" height="10"/></a>'; | |
113 elem += '<ul class="dropdown-menu light-bg-color" role="menu" aria-labelledby="dLabel" style="right:0;left:auto">'; | |
114 elem += '<li><a tabindex="-1" href="/template/NamlServlet.jtp?macro=user_nodes&user='+Nabble.userId+'">'+t_my_posts+'</a></li>'; | |
115 elem += '<li><a tabindex="-1" href="'+user_profile_path+'">'+t_account_settings+'</a></li>'; | |
116 elem += '<li><a tabindex="-1" href="javascript: void Nabble.logout()">'+t_logout+'</a></li>'; | |
117 elem += '</ul></div>'; | |
118 $t.html(elem); | |
119 }; | |
120 </macro> | |
121 | |
122 <macro name="html5_js_path"> | |
123 <n.encode_url.> | |
124 /template/NamlServlet.jtp?macro=html5_js&v=<n.javascript_version/> | |
125 </n.encode_url.> | |
126 </macro> | |
127 | |
47
72765b66e2c3
remove mailing list code
Franklin Schmidt <fschmidt@gmail.com>
parents:
19
diff
changeset
|
128 <macro name="new_post5" parameters="page_name,bottom,focus" requires="servlet"> |
0 | 129 <n.mobile.> |
130 <n.node_page.> | |
131 <n.handle_new_node_permission_error/> | |
132 <n.if.not.is_submitted_form> | |
133 <then> | |
134 <n.subject_field.set_value value="[n.page_node.default_reply_subject/]" /> | |
135 <n.alert_field.set_value value="[n.page_node.alert_default_value/]" /> | |
136 <n.init_new_post_custom_fields/> | |
137 </then> | |
138 <else> | |
139 <n.catch_exception. id="save-block"> | |
140 <n.check_antispam_submit bypass="preview"/> | |
141 <n.check_recent_post_limit/> | |
142 <n.create_child_of_page_node commit="[n.not.is_preview/]"> | |
143 <subject><n.subject_field.value/></subject> | |
144 <message><n.message_field.value/></message> | |
145 <is_html><n.html_format_field.value/></is_html> | |
146 <type><n.type_field.value/></type> | |
147 <kind>post</kind> | |
148 <do> | |
149 <n.remember_new_node/> | |
150 <n.if.not.is_preview> | |
151 <then> | |
152 <n.save_post/> | |
153 <n.save_new_post_custom_fields/> | |
154 <n.new_node.send_node_as_email/> | |
155 </then> | |
156 </n.if.not.is_preview> | |
157 </do> | |
158 </n.create_child_of_page_node> | |
159 <n.if.not.is_preview> | |
160 <then> | |
161 <n.new_node.save_alert_field/> | |
162 <n.redirect_to.new_node.url/> | |
163 </then> | |
164 </n.if.not.is_preview> | |
165 </n.catch_exception.> | |
166 </else> | |
167 </n.if.not.is_submitted_form> | |
168 <n.html5> | |
169 <head> | |
170 <META NAME="robots" CONTENT="noindex,nofollow"/> | |
171 <n.title.><n.page_name/></n.title.> | |
172 <n.focus/> | |
173 <style> | |
174 .title-row { | |
175 padding:.6em .8em; | |
176 font-weight:bold; | |
177 } | |
178 div.field-title { margin-top: 0; } | |
179 label { display:inline;vertical-align:-15%; } | |
180 #subject { width:90% } | |
181 </style> | |
182 </head> | |
183 <body> | |
184 <n.edit_header first_text="[n.page_name/]" second_text="[n.truncate. size='80'][n.page_node.subject/][/n.truncate.]" /> | |
185 | |
186 <n.if.is_submitted_form> | |
187 <then> | |
188 <n.if.has_exception for="save-block"> | |
189 <then.show_new_node_error/> | |
190 <else> | |
191 <n.if.is_preview> | |
192 <then.new_node.preview/> | |
193 </n.if.is_preview> | |
194 </else> | |
195 </n.if.has_exception> | |
196 </then> | |
197 </n.if.is_submitted_form> | |
198 | |
199 <n.form. onsubmit="return singleSubmit(this)"> | |
200 <n.type_field.hidden/> | |
201 | |
202 <n.reply_form /> | |
203 | |
204 <div style="margin-top:1em"> | |
205 <n.antispam_submit_button class="toolbar action-button" value="[t]Post Message[/t]"/> | |
206 <input type="submit" class="toolbar action-button" name="preview" value="[t]Preview Message[/t]"/> | |
207 <t>or</t> | |
208 <a href="[n.page_node.url /]"><t>Cancel</t></a> | |
209 </div> | |
210 </n.form.> | |
211 | |
212 <n.hide_null.bottom/> | |
213 </body> | |
214 </n.html5> | |
215 </n.node_page.> | |
216 </n.mobile.> | |
217 </macro> | |
218 | |
219 <macro name="reply5" requires="servlet"> | |
220 <n.new_post5> | |
221 <page_name> | |
222 <t>Reply</t> | |
223 </page_name> | |
224 <focus> | |
225 <n.message_field.focus/> | |
226 </focus> | |
227 <bottom> | |
228 <n.in_reply_to/> | |
229 </bottom> | |
230 </n.new_post5> | |
231 </macro> | |
232 | |
233 <macro name="editor_toolbar" parameters="textarea_id, original_text, node_id" requires="mobile"> | |
234 <n.put_in_head.> | |
235 <n.editor_stylesheet/> | |
236 <style> | |
237 .nabble div.toolbar { min-width: auto; max-width: none; } | |
238 </style> | |
239 <n.editor_shared_scripts textarea_id="[n.textarea_id/]" node_id="[n.node_id/]"/> | |
240 <script> | |
241 <![CDATA[ | |
242 $.browser = $.browser || {}; | |
243 | |
244 $(document).ready(function() { | |
245 $('div.toolbar').removeClass('shaded-bg-color'); | |
246 $('#message').removeAttr('style').css({width:'90%'}).attr('rows',15); | |
247 | |
248 $('div.toolbar button').each(function() { | |
249 var $btn = $(this); | |
250 if ($btn.text().length > 0) { | |
251 var img = $btn.html(); | |
252 $btn.html(img.match(/<img[^>]+>/)); | |
253 $btn.css('width','2.5em'); | |
254 } | |
255 }); | |
256 }); | |
257 ]]> | |
258 </script> | |
259 </n.put_in_head.> | |
260 | |
261 <div class="toolbar rounded-top shaded-bg-color"> | |
262 <table class="toobar"> | |
263 <tr> | |
264 <n.editor_quote_button original_text="[n.original_text/]"/> | |
265 <n.editor_insert_image_button/> | |
266 <n.editor_bold_button/> | |
267 <n.editor_italic_button/> | |
268 <n.editor_link_button/> | |
269 <n.editor_file_button/> | |
270 <n.editor_smiley_button/> | |
271 </tr> | |
272 </table> | |
273 </div> | |
274 </macro> | |
275 | |
276 <macro name="editor_file_button"> | |
277 <n.put_in_head.> | |
278 <script type="text/javascript"> | |
279 <![CDATA[ | |
280 Nabble.uploadFile = function() { | |
281 Nabble.closeWindows(); | |
282 var $fileDiv = $('#file-upload'); | |
283 var isOpen = $fileDiv.css("display") != 'none'; | |
284 var alreadyLoaded = window.fileuploader && $('#file-upload-form', window.fileuploader.document).size() == 1; | |
285 if (isOpen) | |
286 return; | |
287 else if (alreadyLoaded) | |
288 $fileDiv.show(); | |
289 else { | |
290 var f = ''; | |
291 if ($.browser && $.browser.msie) | |
292 f += '<br style="line-height:1px"/>'; | |
293 f += "<iframe id='fileuploader' name='fileuploader' src='/forum/UploadFile.jtp?node=" + nodeId + "' width='380' height='100' frameBorder='0' scrolling='no' allowtransparency='true'>"; | |
294 $fileDiv.html(f).show(); | |
295 } | |
296 }; | |
297 Nabble.uploadedFile = function(name) { | |
298 var textarea = Nabble.get(textareaID); | |
299 this.setSelection( textarea, '<nabble_a href="'+name+'">'+name+'</nabble_a>' ); | |
300 textarea.focus(); | |
301 Nabble.closeWindows(); | |
302 }; | |
303 ]]> | |
304 </script> | |
305 </n.put_in_head.> | |
306 <td class="nowrap has-dropdown"> | |
307 <div id="file-upload" class="editor-dropdown file-upload medium-border-color light-bg-color drop-shadow"></div> | |
308 <button type="button" onclick="Nabble.uploadFile()" class="toolbar file-upload" title="[t]Upload a file[/t]"> | |
309 <img src="/images/paperclip.png" border="0" height="12" alt="File" style="vertical-align:middle"/> | |
310 </button> | |
311 <n.tooltip use_title="true"/> | |
312 </td> | |
313 </macro> | |
314 | |
315 <macro name="new_topic5" requires="servlet"> | |
316 <n.new_post5> | |
317 <page_name> | |
318 <t>Post New Message</t> | |
319 </page_name> | |
320 <focus> | |
321 <n.subject_field.focus/> | |
322 </focus> | |
323 </n.new_post5> | |
324 </macro> |