related events from within the model handling code. The only
exception to this currently is item_created which is challenging
because we have to save the item using ORM_MPTT::add_to_parent()
before the object itself is fully set up. When we get that down to
one call to save() we can publish that event from within the model
also.
1) The item_updated event no longer takes the old and new items.
Instead we overload ORM to track the original data and make
that available via the item. This will allow us to move event
publishing down into the API methods which in turn will give us
more stability since we won't require each controller to remember
to do it.
2) ORM class now tracks the original values. It doesn't track
the original relationships (no need for that, yet)
3) Added new events:
item_deleted
group_deleted
user_deleted
instead of parent::save. :-) Also change admin_maintenance_controller to delete
via looping over all of the completed tasks and delete individually, so we can
delete the associated cache entries at the same time.
stored in the persistant cache for 30 days. On the admin_maintenance page
there is a new link for completed tasks "browse log". Clicking this will
open a dialog box that has the the contents of the log displayed.
The user can then view the log and close the dialog, or press the save button
to download the log to their local machine.
approach using html::specialchars and purify uses HTMLPurifier to intelligently
cleanse the output fields. Use purifier for text and title fields where it is
likely that a user would enter html to format their data.
present the done box if you're done and let you get rid of it if you
want. It's not beautiful, by any means, but it gives you an easy link
back to your Gallery when you're finished.
Fixes ticket #479.
otherwise some browsers (Firefox, at least) thinks that it needs to
revalidate. At least in my case, it appears that my proxy tacks on
restrictive Cache-Control headers if they aren't there.
1) Don't use $_SERVER, use Input::instance()->server(). This fixes the problem
that when you use a browser that doesn't pass in an Accept-Encoding, we'd
barf on a missing array key
2) Don't bother looking up the _gz key if we don't have gzencode, because we
probably didn't store one.
3) Only emit the gzip Content-Encoding header if we're actually sending back
gzipped data.
1) Create public javascript() and css() functions and turn __call()
into a private function to protect us against having some random
type show up in there. Otherwise anything you put in the 2nd
argument gets emitted in the header which is a security hole.
2) Fix a bug ("$key = $key[0]") which was breaking functionality.
Eliminate the hex check, it's not really necessary in the majority
case and doesn't hurt us in edge cases.
3) Convert some empty() calls to !, no need for a function call there.
4) Add phpDoc.
1) CSS files are added to the combined version by use of $theme->css() or $theme->css_theme() methods
2) url references in the css are converted to full paths as opposed to relative
3) @import statements in the css are resolved as well.
4) need to move the [if IE] statements into the css files so the will be honored in the browser. currently the ie fix css are always included.
1) Drop the *_modified key, we don't really need it. The modification date is not
relevant to our browser caching strategy.
2) Fix multiple issues with the Expires header and just hardcode it to the biggest
possibly value for code clarity.
3) print the $content out directly instead of using fwrite
4) Minor cleanups in the installer.
Add xxx_installer::upgrade($version) method so that upgrade stanzas
are separate from install stanzas. In the old code, to do an upgrade
meant that you had to re-evolve everything from the initial install
because we'd step through each version's changes. But what we really
want is for the initial install to start off in the perfect initial
state, and the upgrades to do the work behind the scenes. So now the
install() function gets things set up properly the first time, and the
upgrade() function does any work to catch you up to the latest code.
See gallery_installer.php for a good example.
quick pane. The quick pane is now divided into 4 sections: left, center, right and
additional. Additional items appear in the drop down box. Buttons are not sorted
within the groupings.
In addition, the quick pane will overflow onto the "additional" dropdown if there is not
enough room to display all the buttons.
The use case is the digibug printing module needed to add a button to the quick pane, and
I don't like putting code into core that says if module is active... That's another one
of those code smells :-)
Signed-off-by: Tim Almdal <tnalmdal@shaw.ca>
while. This fixes ticket #342.
The bug is that we were using $item instead of $theme->item(). But we
were also not special casing tags properly, and they are effectively
first class citizens (at least for now) so treat them properly. Also,
set page_title by default in the theme so that we don't have to do an
empty() check on it (makes the theme easier to read) and move the
title out of Tags_Controller so that the theme has more control over
it.