Mercurial Hosting > nabble
diff src/nabble/view/naml/message.naml @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children | 47162510b27f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/nabble/view/naml/message.naml Thu Mar 21 19:15:52 2019 -0600 @@ -0,0 +1,157 @@ +<macro name="message_with_signature" requires="node"> + <n.node_message_as_html /> + <n.if.both condition1="[n.owner.has_signature/]" condition2="[n.owner.is_active/]"> + <then> + <div class="signature weak-color"> + <n.owner.signature_as_html/> + </div> + </then> + </n.if.both> +</macro> + +<macro name="node_message_block" dot_parameter="do" requires="node"> + <n.global_set_var name="message_block_node" value="[n.this_node/]" /> + <n.do/> +</macro> + +<macro name="message_block_node" dot_parameter="do"> + <n.get_node node="[n.global_var name='message_block_node'/]" do="[n.do/]" /> +</macro> + +<macro name="node_message_as_html" requires="node"> + <n.node_message_block.message.message_as_html /> +</macro> + +<macro name="node_message_as_text" requires="node"> + <n.node_message_block.message.message_as_text /> +</macro> + +<macro name="message_quoted" requires="node" unindent="true"> + <quote author="[n.owner.name/]"> + <n.trim.message.as_quoted_text/> + </quote> + <n.nop/> +</macro> + +<macro name="message_as_html" requires="message"> + <n.if.either condition1="[n.is_deleted/]" condition2="[n.is_deactivated/]"> + <then> + <b><t>CONTENTS DELETED</t></b> + <div class="weak-color"><t>The author has deleted this message.</t></div> + </then> + <else> + <n.set_var. name="output"> + <n.as_html_list.process_message_html /> + </n.set_var.> + <n.if.is_imported_mail> + <then.set_var. name="output"> + <n.remove_unsubscription_link.var name="output" /> + </then.set_var.> + </n.if.is_imported_mail> + <n.var name="output" /> + </else> + </n.if.either> +</macro> + +<macro name="process_message_html" requires="html_list"> + <n.process_raw_tags/> + <n.process_cdata_tags/> + <n.process_embed regex="[n.embed_regex/]" /> + <n.process_file_tags/> + <n.apply_message_security/> + <n.process_quotes wrote="[t][n.author/] wrote[/t]"/> + <n.process_email/> + <n.set_target_to_top/> + <n.add_nofollow/> + <n.process_smilies/> +</macro> + +<macro name="apply_message_security" requires="html_list"> + <n.if.is_in_command name="node_message_block"> + <then.if.not.message_block_node.has_unrestricted_posting> + <then.message_security/> + </then.if.not.message_block_node.has_unrestricted_posting> + <else.message_security/> + </n.if.is_in_command > +</macro> + +<macro name="message_security" requires="html_list"> + <n.disable_banned_tags.> + script, + style, + html, + head, + body, + link + </n.disable_banned_tags.> + <n.disable_invalid_urls.> + href, + src, + action + </n.disable_invalid_urls.> + <n.disable_javascript_urls.> + href, + src, + action + </n.disable_javascript_urls.> + <n.disable_on_event/> + <n.disable_scripts/> + <n.disable_style_blocks/> +</macro> + +<macro name="message_as_text" requires="message"> + <n.as_text_list.process_message_text /> +</macro> + +<macro name="process_message_text" requires="html_list"> + <n.process_quotes_as_text wrote="[t][n.author/] wrote[/t]"/> + <n.process_smilies_as_text/> + <n.process_file_tags/> + <n.process_tag tag="b" do="*" /> + <n.process_tag tag="/b" do="*" /> + <n.process_tag tag="i" do="/" /> + <n.process_tag tag="/i" do="/" /> + <n.process_tag tag="u" do="_" /> + <n.process_tag tag="/u" do="_" /> + <n.process_text text="<" replacement="[n.lt/]" /> + <n.process_text text=">" replacement="[n.gt/]" /> +</macro> + + +<macro name="embed_regex"> + <n.if.is_in_command name="node_message_block"> + <then.if.message_block_node.has_unrestricted_posting> + <then>(?s).*</then> + <else.embed_regex_list/> + </then.if.message_block_node.has_unrestricted_posting> + <else.embed_regex_list/> + </n.if.is_in_command > +</macro> + +<macro name="embed_regex_list"> + (<n.youtube_object_regex/>)|(<n.youtube_object_regex2/>)|(<n.youtube_iframe_regex/>)|(<n.liveleak_regex/>)|(<n.polldaddy_regex/>)|(<n.vimeo_regex/>) +</macro> + +<macro name="youtube_object_regex"> + <![CDATA[\s*<object width="\d+" height="\d+"><param name="movie" value="http://www.youtube.com/v/[^"]+"></param><param name="allowFullScreen" value="\w+"></param><param name="allowscriptaccess" value="\w+"></param><embed src="http://www.youtube.com/v/[^"]+" type="application/x-shockwave-flash" allowscriptaccess="\w+" allowfullscreen="\w+" width="\d+" height="\d+"></embed></object>\s*]]> +</macro> + +<macro name="youtube_object_regex2"> + <![CDATA[\s*<object width="\d+" height="\d+"><param name="movie" value="https?://www.youtube(-nocookie)?.com/v/[^"]+"></param><param name="allowFullScreen" value="\w+"></param><param name="allowscriptaccess" value="\w+"></param><embed src="https?://www.youtube(-nocookie)?.com/v/[^"]+" type="application/x-shockwave-flash" width="\d+" height="\d+"( allowscriptaccess="\w+")?( allowfullscreen="\w+")?></embed></object>\s*]]> +</macro> + +<macro name="youtube_iframe_regex"> + <![CDATA[\s*<iframe[^>]* src="(https?:)?//www.youtube.com/embed/[^"]+"[^>]*></iframe>\s*]]> +</macro> + +<macro name="liveleak_regex"> + <![CDATA[\s*<object width="\d+" height="\d+"><param name="movie" value="http://www.liveleak.com/e/\w+"></param><param name="wmode" value="\w+"></param><param name="allowscriptaccess" value="\w+"></param><embed src="http://www.liveleak.com/e/\w+" type="application/x-shockwave-flash" wmode="\w+" allowscriptaccess="\w+" width="\d+" height="\d+"></embed></object>\s*]]> +</macro> + +<macro name="polldaddy_regex"> + <![CDATA[\s*<embed allowScriptAccess="\w+" saveEmbedTags="\w+" quality="\w+" wmode="\w+" bgcolor="#\w+" name="\w+" salign="\w+" scale="\w+" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" FlashVars="p=\d+" src="http://i.polldaddy.com/poll.swf" width="\d+" height="\d+"></embed>\s*]]> +</macro> + +<macro name="vimeo_regex"> + <![CDATA[\s*<iframe src="http://player.vimeo.com/video/[^"]+" width="\d+" height="\d+" frameborder="0"( webkitAllowFullScreen)?( mozallowfullscreen)?( allowFullScreen)?></iframe>.*]]> +</macro> \ No newline at end of file