* Extend block_manager to handle sidebar blocks. get_available has become get_available_admin_blocks, get_list becomes get_admin_list.
* Create new functions get_available_site_blocks which will look for gallery_block get_available_site_blocks.
* Refactor sidebar_blocks into a separate function and then call block_manager::get_html(site.sidebar). Convert image_block to use block management instead of theme::sidebar_blocks
* Change the block_manager api so that the theme is passed into the get method. convert info to the new sidebar block approach
* Convert the user module to use the new sidebar block structure. remove the installers for info and image_block modules.
* Convert tag and rss modules to the new sidebar framework. reset the version number to 1 for info and image_block modules.
* Change the get_html method to ignore empty blocks and change the individual handlers to return an empty string if no block is generated
* Add a warning message if no sidebar blocks are active and provide a link to the admin page that configures the sidebar.
affected. Practically speaking this means that we'll reindex items
when tags are added or removed from them.
API change:
Remove item_related_updated_batch event.
Rationale:
While this is an efficient event, it requires module developers to
support two event APIs for staying up to date and increases the
likelihood that they'll forget one and have data corruption. Force
them all through the slower but more reliable pipe, for now. We
can always try to improve efficiency by using the batch_start and
batch_stop events.
phrases. Using only 1 separator cleans up the javascript as well, as we
can use some of the jquery autocomplete to set the tag separator.
Signed-off-by: Tim Almdal <tnalmdal@shaw.ca>
With this patch a comma(,) is the only valid tag separator. Spaces
are allowed in tags and phrases no longer need to be specified with a
dot.
Signed-off-by: Tim Almdal <tnalmdal@shaw.ca>
javascript lib (gallery.reload.js) which defines the functions
gallery_reload() and gallery_location(new_location). They just
do a window.location.reload() and window.location = new_location.
This change breaks the assumption that all themes will handle page reloads
the same and allows the theme to customize the page refresh.
This required putting a wrapper view around the forms and passing
this view as the parameter to the item_edit_form event. The view
contains a $script variable that the modules can add script to be
included in the form html when rendered as part of the ajax response.
theme. Because the theme comes first, this means that themes can
override any module resources, at the cost that we no longer have
namespacing for JS and CSS files.
The only file getting used outside of this model is
themes/default/screen.css which is used in the admin theme. I fixed
that by copying screen.css into admin_default and renaming its
screen.css to admin_screen.css. I also copied over all the images
that it was referencing.
Fixes tickets #48 and #539.
Theme API changes:
- theme_script(), theme_url() and theme_css() are no longer needed
- script(), url() and css() now refer to the first matching asset in
the module load path, where gallery3/lib is at the end of the path
good pattern for allowing modules to add their own hooks to item forms!
1) Album, photo and movie forms now all use edit_item as the group and
we publish item_edit_form and item_edit_form_completed events which
makes it much easier in the module to handle all events. They can
still differentiate based on $item->type if they want to.
2) Added tag::clear_all() and tag::compact() functions which takes the
place of hiwilson's tag::update() function and is now used in
tag_event::item_delete(). This provides a simple API that allows
us to have a lot less event handling code. It's less efficient
than what hiwilson was doing before in that it will delete and
re-add tags, but if that ever turns out to be a performance issue
we can do something about it then.
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