/* - collapsibleformfields.js - */
/* This code collapses fields in forms
* It is used in plone_forms/search_form.pt
*
* Creates a jQuery function to install a click handler that will
* collapse/expand form fields.
* On page load, runs it for $('.field.collapsible').
*
* It uses the following markup:
*
*
label of the field
*
block to collapse
*
*
*/
(function($) {
$.fn.do_search_collapse = function() {
function check_used(element) {
var e = $(element);
// is there a number of checkboxs with a toggle box
if (e.find('input[id$=_toggle]:checkbox').length > 0) {
// and the toggle checkbox is not checked.
if (e.find('input[id$=_toggle]:checkbox:checked').length === 0) {
return true;
}
}
// is there a normal text input fields that is not empty (=has a value)
if(e.find(':text[value]').length > 0) {
return true;
}
// drop downs
// we have an option marked as the default option
if(e.find('select .default_option').length > 0) {
// and this default option isn't selected
if(e.find('select .default_option:selected').length === 0) {
return true;
}
}
return false;
}
return this.each( function() {
var indicator = $(this).find('.collapser:first'),
collapse = $(this).find('.collapse:first');
// install click handler
indicator.click(function() {
var container = $(this).parent(),
target = container.find('.collapse:first');
target.slideToggle('normal');
$(this).toggleClass('expanded');
$(this).toggleClass('collapsed');
});
if (check_used(this)) {
indicator.addClass('expanded');
} else {
collapse.hide();
indicator.addClass('collapsed');
}
});
};
jQuery(function($){$('.field.collapsible').do_search_collapse();});
}(jQuery));