- And refactor printf to our string interpolation / pluralization syntax
- Also, a slight change to the translations_incomings table, using binary(16) instead of char(32) as message key.
- Using DB table translations_incomings as translations storage (file cache to be added)
- Removed overly complex i18n code which will be unnecessary with the future compiled cache files
- Added t() as a translation function (global refactoring from _() to t() to follow)
1) drop unnecessary semicolon
2) start with <?php for extra security in the case that the server itself doesn't
have short_tags enabled (the app won't work, but we need to make sure that we're
still secure)
allowing or resetting permission further down in the tree. This bug
was introduced when I refactored the view permission cache into the
items table. Updated test to catch it.
file_proxy. It also means we can stop munging file names in the var/resizes hierarchy.
In the process, rename "thumbnail" to "thumb" everywhere in honor of
Chad (well, ok because it's shorter)..
chainable factory interface and retrieve them by ids. Streamlined the
HTML creation code a little bit in the process, moved the basic menu
functionality into Theme_View and created the option to have different
menus other than site_navigation().
o Rename access::remove_group() to access::delete_group() for
consistency.
o Wrote more unit tests
o Tests found a bug in access::remove_item() .. yay!
delete_hierarchy_test.
Our tests will be more robust if we test the public API and not the
internal private functions. If we get to the point where we have to
test the private functions, we should probably move those functions
into their own separate class with a public API.
clearer about its actions, otherwise we may accidentally blow away an
entire hierarchy when we think we're deleting a single file (there's a
reason why rm won't let you delete dirs that aren't empty!)
Name it "dir" instead of "directory" because apparently "directory" is
already reserved.
Move the delete call out of Items_Controller and into the model. The
model is responsible for keeping state integrity, not the controller.