Add submission view count
Merge pull request #742 from Tonkpils/submission-views

Submission view count
Remove name from grade school exercise
haskell saddle-points
Add another approach to word-count example in clj
Merge pull request #745 from etrepum/haskell-exercises

haskell saddle-points
Do not set completed exercises as current. Fixes #743
Fix scrollbars appear while opening notifications

When opening the notification sidebar in some browsers and OS there will be horizontal scrollbars appearing for the duration of the opening animation. This is cause by the notification list dangling ooutside of the window. By setting the body's overflow-x to hidden when the panel is out, these scrollbars are gone. This problem fixed here was probably introduced with 0215134 when the animation was enabled.
Merge pull request #748 from bxt/fix-notification-scollbars

Fix scrollbars appear while opening notifications
Use ENV variable to salt API key

With thanks to @rjmcdonald83 and @seeflanigan for pairing with me
to work through all the logic of what had to happen, and how to test it.
Fix admin stats
Make user url case insensitive
Filter muted submissions when suggesting work

Adds a unmuted_for(username) class method to submission with test and
chains that method in user to prevent muted suggestions from being mixed
in when random submissions are suggested. Fixes #747
Small refactoring of example.clj for anagram

`frequencies` is a core function that will make the word into a
map of letter frequencies, e.g.:

(canonicalize "hello")
;=> {\h 1, \e 1, \l 2, \o 1}

`frequencies` seems a bit clearer than the `split #""` then `sort`.

(Interestingly, the `split` is not necessary even if `sort`ing, since
Clojure will represent `word` as an Object array of Characters,
then return it sorted. `frequencies` probably ends up slower than `sort`
over large strings due to the incremental object allocation, but also
is likely _faster_ than `split` ... `sort`.)
Small clarification for anagram README

It wasn't clear to me whether this was supposed to return a list of one
vs. a single string in the case of one match, and an empty list vs.
nil/null/() in the case of no matches.
Add empty test case to phone-number_test.hs

When solving the Haskell phone number assignment with a pattern match, one could get into a situation where the patterns are non-exhaustive for empty strings. The resulting error should be triggered by the automatic test. This commit adds another test case to assert that an empty string is treated like an invalid phone number.
Add test case with only invalid chars to phone-number_test.hs 

When solving the Haskell phone number assignment with a pattern match, one could get into a situation where the patterns are non-exhaustive for empty strings resulting from filtering all invalid characters. The resulting error should be triggered by the automatic test. This commit adds another test case to assert that a non-empty string with symbols and no digits is treated like an invalid phone number.
Don't treat instance variables (in code blocks) as mentions

For lack of the knowledge of a simpler way and because I did't want to
write code to parse markdown code blocks myself, I implemented this by
rendering the markdown to HTML using the same Markdown processor
that the site uses and then using Nokogiri to strip out any <code>
or <td class="code"> nodes, which were the two ways that the code spans
and fenced code blocks were being rendered, respectively.

A couple of potential downsides to this method are: 1. If the rendering
of code blocks changes this will no longer work. (However the tests
should catch it). and 2. I'm not sure how fast the markdown renderer is
and how fast Nokogiri is at doing these operations, so I'm not sure if
this could be a potential performance hit. I suspect it won't be
significant though.
Merge pull request #755 from drueck/mentions

Don't treat instance variables in markdown code blocks as mentions
Replace seed generator