diff --git a/web/templates/markdown.html b/web/templates/markdown.html
new file mode 100644
index 0000000..2de009f
--- /dev/null
+++ b/web/templates/markdown.html
@@ -0,0 +1,732 @@
+{{ define "title" }}Markdown Cheatsheet{{ end }}
+{{ define "content" }}
+
+
+
+ Markdown syntax can enable you to be more expressive with your text posts on this
+ website, with the ability to write **bold** text, add hyperlinks or
+ embed images onto your profile page, Direct Messages, forum posts and elsewhere - any place on
+ {{PrettyTitle}} that says "Markdown formatting supported."
+
+
+
+ This is a simple reference sheet for Markdown syntax. Markdown was pioneered by John Gruber and the
+ de facto place to find in-depth documentation is at
+ https://daringfireball.net/projects/markdown/syntax
+ where it was originally described.
+
+
+
+ Markdown is now a widely supported format across a variety of apps and websites, and there are a
+ few different "flavors" of Markdown with slightly varied behaviors. This website uses
+ GitHub Flavored Markdown, an extension of Markdown
+ that supports fenced code blocks, tables, and other useful features - many of which you can learn
+ about on this page.
+
+
+
+
+
Block Elements
+
+
+
Paragraphs and Line Breaks
+
+
A paragraph is defined as a group of lines of text separated from other groups
+by at least one blank line. A hard return inside a paragraph doesn't get rendered
+in the output.
+
+
Headers
+
+
There are two methods to declare a header in Markdown: "underline" it by
+writing ===
or ---
on the line directly below the
+heading (for <h1>
and <h2>
, respectively),
+or by prefixing the heading with #
symbols. Usually the latter
+option is the easiest, and you can get more levels of headers this way.
+
+
+
+
+ Markdown Syntax |
+ Output |
+
+
+
+
+
+ This is an H1
+=============
+
+This is an H2
+-------------
+ |
+
+ This is an H1
+ This is an H2
+ |
+
+
+
+ # This is an H1
+## This is an H2
+#### This is an H4
+ |
+
+ This is an H1
+ This is an H2
+ This is an H4
+ |
+
+
+
+
+
Blockquotes
+
+
Prefix a line of text with >
to "quote" it -- like in
+"e-mail syntax."
+
+
You may have multiple layers of quotes by using multiple >
+symbols.
+
+
+
+
+ Markdown Syntax |
+ Output |
+
+
+
+
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+>
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+> id sem consectetuer libero luctus adipiscing.
+
+ |
+
+
+ This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+ Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ id sem consectetuer libero luctus adipiscing.
+
+ |
+
+
+
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+ > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ id sem consectetuer libero luctus adipiscing.
+
+ |
+
+
+ This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+ Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ id sem consectetuer libero luctus adipiscing.
+
+ |
+
+
+
+
+ > This is the first level of quoting.
+ >
+ >> This is nested blockquote.
+ >>> A third level.
+ >
+ > Back to the first level.
+
+ |
+
+
+ This is the first level of quoting.
+
+ This is nested blockquote.
+
+ A third level.
+
+
+ Back to the first level.
+
+ |
+
+
+
+
+ > ## This is a header.
+ >
+ > 1. This is the first list item.
+ > 2. This is the second list item.
+ >
+ >Here's some example code:
+ >
+ > return shell_exec("echo $input | $markdown_script");
+
+ |
+
+
+ This is a header.
+
+ - This is the first list item.
+ - This is the second list item.
+
+ Here's some example code:
+ return shell_exec("echo $input | $markdown_script");
+
+ |
+
+
+
+
+
+
Lists
+
+
+
+
+ Markdown Syntax |
+ Output |
+
+
+
+
+
+
+ * Red
+ * Green
+ * Blue
+
+ |
+
+
+ |
+
+
+
+
+ + Red
+ + Green
+ + Blue
+
+ |
+
+
+ |
+
+
+
+
+ - Red
+ - Green
+ - Blue
+
+ |
+
+
+ |
+
+
+
+
+ 1. Bird
+ 2. McHale
+ 3. Parish
+
+ |
+
+
+ - Bird
+ - McHale
+ - Parish
+
+ |
+
+
+
+
+ 1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+ 2. Suspendisse id sem consectetuer libero luctus adipiscing.
+
+ |
+
+
+ - This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+ - Suspendisse id sem consectetuer libero luctus adipiscing.
+
+ |
+
+
+
+
+
+
Code Blocks
+
+The typical Markdown way to write a code block is to indent each line of a paragraph with at
+least 4 spaces or 1 tab character. The Rophako CMS also uses GitHub-style code blocks, where
+you can use three backticks before and after the code block and then you don't need to indent
+each line of the code (makes copying/pasting easier!)
+
+Like GitHub-flavored Markdown, with a fenced code block you can also specify a programming
+language to get syntax highlighting for the code.
+
+
+
+
+ Markdown Syntax |
+ Output |
+
+
+
+
+
+
+ This is a normal paragraph.
+
+ This is a code block.
+
+ |
+
+ This is a normal paragraph.
+
+ This is a code block
+ |
+
+
+
+
+ This is a normal paragraph.
+
+ ```
+ This is a GitHub style "fenced code block".
+ ```
+
+ |
+
+ This is a normal paragraph.
+
+ This is a GitHub style "fenced code block".
+ |
+
+
+
+
+ ```javascript
+ document.writeln("Hello world.");
+ ```
+
+ |
+
+ document.writeln("Hello world.");
+ |
+
+
+
+
+
+
Horizontal Rules
+
+
+
+
+ Markdown Syntax |
+ Output |
+
+
+
+
+
+
+ * * *
+ ***
+ *****
+ - - -
+ ---------------------------
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
Span Elements
+
+
+
Links
+
+
+
+
+ Markdown Syntax |
+ Output |
+
+
+
+
+
+
+ This is [an example](http://example.com/ "Title") inline link.
+ [This link](http://example.net/) has no title attribute.
+
+ |
+
+ This is an example inline link.
+ This link has no title attribute.
+ |
+
+
+
+
+ See my [About](/about) page for details.
+
+ |
+
+ See my About page for details.
+ |
+
+
+
+
+ This is [an example][id] reference-style link.
+ [id]: http://example.com/ "Optional Title Here"
+
+ |
+
+ This is an example reference-style link.
+ |
+
+
+
+
+ This is an example of an implicit reference-style link: search [Google][] for more.
+ [Google]: http://google.com/
+
+ |
+
+ This is an example of an implicit reference-style link: search Google for more.
+ |
+
+
+
+
+ I get 10 times more traffic from [Google] [1] than from
+ [Yahoo] [2] or [Bing] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://bing.com/ "Bing"
+
+ |
+
+ I get 10 times more traffic from Google than from
+ Yahoo or
+ Bing.
+ |
+
+
+
+
+
+
Emphasis
+
+
+
+
+ Markdown Syntax |
+ Output |
+
+
+
+
+
+
+ *single asterisks*
+ _single underscores_
+ **double asterisks**
+ __double underscores__
+
+ |
+
+ single asterisks
+ single underscores
+ double asterisks
+ double underscores
+ |
+
+
+
+
+ un*frigging*believable
+
+ |
+
+ unfriggingbelievable
+ |
+
+
+
+
+ \*this text is surrounded by literal asterisks\*
+
+ |
+
+ *this text is surrounded by literal asterisks*
+ |
+
+
+
+
+
+
Code
+
+
+
+
+ Markdown Syntax |
+ Output |
+
+
+
+
+
+
+ Use the `printf()` function.
+
+ |
+
+ Use the printf() function.
+ |
+
+
+
+
+ ``There is a literal backtick (`) here.``
+
+ |
+
+ There is a literal backtick (`) here.
+ |
+
+
+
+
+ A single backtick in a code span: `` ` ``
+ A backtick-delimited string in a code span: `` `foo` ``
+
+ |
+
+ A single backtick in a code span: `
+ A backtick-delimited string in a code span: `foo`
+ |
+
+
+
+ Please don't use any `<blink>` tags.
+ |
+
+ Please don't use any <blink> tags.
+ |
+
+
+
+ `—` is the decimal-encoded equivalent of `—`.
+ |
+
+ — is the decimal-encoded equivalent of
+ — .
+ |
+
+
+
+
+
+
Images
+
+
+
+
+
Miscellaneous
+
+
+
Automatic Links
+
+E-mail links get automatically converted into a random mess of HTML attributes to
+attempt to thwart e-mail harvesting spam bots.
+
+
+
+
+ Markdown Syntax |
+ Output |
+
+
+
+
+
+ <http://example.com/>
+ |
+
+ http://example.com/
+ |
+
+
+
+ <address@example.com>
+ |
+
+ address@example.com
+
+ (Source: <a href="mailto: address@ exampl e.com">a ddress @examp le.co m</a> )
+ |
+
+
+
+
+
+
Backslash Escapes
+
+Use backslash characters to escape any other special characters in the Markdown syntax. For example,
+
\*
to insert a literal asterisk so that it doesn't get mistaken for e.g. emphasized text,
+a list item, etc.
+
+Markdown provides backslash escapes for the following characters:
+
+
\ backslash
+` backtick
+* asterisk
+_ underscore
+{} curly braces
+[] square brackets
+() parenthesis
+# hash mark
++ plus sign
+- minus sign (hyphen)
+. dot
+! exclamation mark
+
+
+{{ end }}
diff --git a/web/templates/photo/permalink.html b/web/templates/photo/permalink.html
index 89f21a3..8768539 100644
--- a/web/templates/photo/permalink.html
+++ b/web/templates/photo/permalink.html
@@ -158,7 +158,7 @@
placeholder="Add your comment"
required>