Fix a bug where team-status showed rejected for empty items.

In the case where the user hasn't submitted a value, the data-store
won't have a value for that field at all, resulting in the isset
check failing. This should have been returning null (as described
in the comment), but wasn't.

This provides a better fix to the change in bccdd8e14f8205.
Also add tests for this case, so that the issue doesn't resurface.

Change-Id: Id744e97b7635e6fc2c92eae28223546b99b29e3c
Implement team status image review.

We now send the browser a bas64 encoded version of the image, which
it can then display to the user, along with the md5sum. The md5 is
the 'value' that gets sent back when the reviewer sets a review
state, and it's this that gets compared to the draft value.

This patch therefore removes the exclusion of images from reviews,
including the rejection of attempts to set their review state, and
the related tests.

This patch does not modify the location of the images once reviewed,
relying instead an external mechanism to do this. The only way the
IDE could do this move is if the web server had write access to the
folder they were eventually served from, which would be a bad thing.

One possible issue that this setup leaves us with is the case where
an image is reviewed & the team uploads a new image before the
reviewed one goes live. This would leave the team without an image
until the new image had also been reviewed (and made live).

Since there are md5 checks all over the place, I don't believe that
the unreviewed image would go live in its place (ie, without review),
however the team would remain in the no-image state for longer than
is ideal.

Change-Id: I735dc9dde69f78fc94a3809fc5e257681fbf5e7e
No longer need to suggest that it's not stable.

Change-Id: Ie6a883aa1cea88cb77bbee5aa98af94d2b156b8e
Fix #1485: Bump PHP requirement to 5.3.3.

This has actually been the case for a little while now, but hadn't
affected anyone as we were all well above this. I've not done an
exhaustive check that this is the true minimum, but it's certainly
more accurate than 5.3.0.

Change-Id: I48dbd696cb94b77212d8c51e853156fc8ac74b95
Log any exceptions that make it to the top level.

While we're generally the ones throwing these, we often don't have
logging around the locations where they're thrown, and there's no
guaruntee that the root error will be something the user's done
wrong - it could easily be something we need to know about.

Change-Id: I42997f3841342ba05802c29f88779360a7bf02d9
Merge "Fix a bug where team-status showed rejected for empty items."
Ensure a consistent use of fonts.

Previously we had a few locations that had slight differences, but
didn't need to. This commit also puts the IDE closer to the fonts
used on the main website.

Change-Id: I1668a6e9891f1de4bd25687abd575c11401c3969
Tidy logic that higlights the current day.

Change-Id: Ia975b3c5b5fefd628eb8e1cc7deddea48a1f17d6
Fix HTML validation issues.

These should mostly have no effect on any experience, but may tidy
things in IE. The most singificant fix here is the correction of
the closing tab of #proj-select-all, which managed to sneak through
in the recent UI changes (commit 14723083).

Change-Id: I35f58de04acdb38c9a6ae3b3aa287b931a7979b4
Fix a styling glitch in login feedback.

Previously, this strong affected the warning tag
in the error feedback as well, which it shouldn't
have done.

Change-Id: If9939338b8c9045f48ce046defd5d813fca10d5e
Dynamically combine our css and js files.

Potential performance improvement.

Change-Id: I7a8e14bfb21547842f7ec7e4cf4b222dc531754f
Also combine the login page's JS.

Change-Id: I705f692f8cdb3c953a28196149bd576017d391e2
Add tests for the up_to_date function & fixes.

Test the various cases that might occur, and switch to using the
files' mtime, rather than ctime, as this is the more useful value.

Change-Id: Iaba1c4264e616c8b8128dbf5d6c3a5ad54dbf9ec
Make and ignore the web cache folder.

This is the folder that stores the combined CSS & JS files.

Change-Id: I5e97fc78b7de70e4765d587b62d0ca4fffbb009a
Avoid private property access by adding a helper method.

This exposes the project list via a helper on the projpage, which
is probably what I should have done to start with. As this new
method is more tolerant to empty conditions, also use it in the
project existence check which could otherwise explode.

Change-Id: I5d66a2b13b7d684d26253b118f730df2ff4b307d
Fix a couple of comments.

Change-Id: I8da64c58bb5f448238df210f609e74e3b8152ae7
Make it easier to re-download a zip.

Change the revision part of the export message to be a direct link
to the zip file. This provides the user with more options to
download the zip if they want, or if for some reason the hidden
iframe download doesn't work.

Change-Id: I854d71d95c89a37e5c5618753309581a2b07f8fc
Handle logout using member functions not anonymous ones.

This makes it easier to change the functionality nicely.

Change-Id: I849464fb58d0b6b7123978aa8b2dd71d23991a97
Make eflist an Object.

This is how its used, and will thus avoid iteration issues in IE.

Change-Id: I7f832bcaab084fd5585138d0876e938f69ee8baf
Remove jsdiff file that hasn't ever been used.

Change-Id: I859402266b4e64469cb8cd7854b0255d371e2710