- Jobs specify main privilege and sub privileges separately
Rationale: increase maintenance, restrict what can be done runtime
- Renamed ChangeUser* to EditUser* (consistency with EditPost*)
- Simplified enum names and configuration reading
- IJob interface members must be explicitly implemented
Rationale: reduce chances of forgetting something, or typos in
inherited method names
- Invalid privileges names in configuration yield exceptions
Restored JobArgs approach. Previous introduction of hierarchic argument
definitions has backfired: it was confusing what class to take arguments
from, the concept of sharing arguments between different jobs was
unintelligible and one never knew where given argument was actually
defined.
This appraoch makes it easier to maintain the arguments list and
simplifies the code a lot.
Since the purpose that StatusHelper was mainly created for no longer
holds, it was simplified to Messenger. It is now is used to transport
simple messages to views and still transports info whether the message
is about success or failure.
Following privileges for post actions can now understand different settings for
everyone and for uploader:
* Scoring posts
* Featuring posts
* Flagging posts
* Favoriting posts
Additionally, privilege for flagging users can now understand different
settings for everyone and for the user that is currently logged in.
In other words: with this update admin can configure privileges so that scoring
own posts or flagging oneself will be prohibited, while scoring other people's
posts or flagging others will be okay.
Styles, scripts and page titles are no longer set from controllers level.
Changed because it was breaking MVC pattern and led to spaghetti code.
Also, optimized JS/CSS inclusions a bit.
Pages load 1.5-2x faster
Exception trace in JSON is now represented as an array
Fixed pagination of default favorites page in user pages
Fixed thumbnail size validation for non-square thumbnails