/sites/all/modules/field_group/field_group.js
JavaScript | 169 lines | 120 code | 14 blank | 35 comment | 33 complexity | 237f9e2b6b493b8669c24ed4c2ae9def MD5 | raw file
- (function($) {
- /**
- * Drupal FieldGroup object.
- */
- Drupal.FieldGroup = Drupal.FieldGroup || {};
- Drupal.FieldGroup.Effects = Drupal.FieldGroup.Effects || {};
- Drupal.FieldGroup.groupWithfocus = null;
- Drupal.FieldGroup.setGroupWithfocus = function(element) {
- element.css({display: 'block'});
- Drupal.FieldGroup.groupWithfocus = element;
- }
- /**
- * Implements Drupal.FieldGroup.processHook().
- */
- Drupal.FieldGroup.Effects.processFieldset = {
- execute: function (context, settings, type) {
- if (type == 'form') {
- // Add required fields mark to any fieldsets containing required fields
- $('fieldset.fieldset').each(function(i){
- if ($(this).is('.required-fields') && $(this).find('.form-required').length > 0) {
- $('legend span.fieldset-legend', $(this)).eq(0).append(' ').append($('.form-required').eq(0).clone());
- }
- if ($('.error', $(this)).length) {
- $('legend span.fieldset-legend', $(this)).eq(0).addClass('error');
- Drupal.FieldGroup.setGroupWithfocus($(this));
- }
- });
- }
- }
- }
- /**
- * Implements Drupal.FieldGroup.processHook().
- */
- Drupal.FieldGroup.Effects.processAccordion = {
- execute: function (context, settings, type) {
- var accordions = $('div.field-group-accordion-wrapper', context).accordion({
- autoHeight: false,
- active: 0,
- collapsible: true
- });
- if (type == 'form') {
- // Add required fields mark to any element containing required fields
- $('div.accordion-item').each(function(i){
- if ($(this).is('.required-fields') && $(this).find('.form-required').length > 0) {
- $('h3.ui-accordion-header').eq(i).append(' ').append($('.form-required').eq(0).clone());
- }
- if ($('.error', $(this)).length) {
- $('h3.ui-accordion-header').eq(i).addClass('error');
- var activeOne = $(this).parent().accordion("activate" , i);
- $('.ui-accordion-content-active', activeOne).css({height: 'auto', width: 'auto', display: 'block'});
- }
- });
- }
- }
- }
- /**
- * Implements Drupal.FieldGroup.processHook().
- */
- Drupal.FieldGroup.Effects.processHtabs = {
- execute: function (context, settings, type) {
- if (type == 'form') {
- // Add required fields mark to any element containing required fields
- $('fieldset.horizontal-tabs-pane').each(function(i){
- if ($(this).is('.required-fields') && $(this).find('.form-required').length > 0) {
- $(this).data('horizontalTab').link.find('strong:first').after($('.form-required').eq(0).clone()).after(' ');
- }
- if ($('.error', $(this)).length) {
- $(this).data('horizontalTab').link.parent().addClass('error');
- Drupal.FieldGroup.setGroupWithfocus($(this));
- $(this).data('horizontalTab').focus();
- }
- });
- }
- }
- }
- /**
- * Implements Drupal.FieldGroup.processHook().
- */
- Drupal.FieldGroup.Effects.processTabs = {
- execute: function (context, settings, type) {
- if (type == 'form') {
- // Add required fields mark to any fieldsets containing required fields
- $('fieldset.vertical-tabs-pane').each(function(i){
- if ($(this).is('.required-fields') && $(this).find('.form-required').length > 0) {
- $(this).data('verticalTab').link.find('strong:first').after($('.form-required').eq(0).clone()).after(' ');
- }
- if ($('.error', $(this)).length) {
- $(this).data('verticalTab').link.parent().addClass('error');
- Drupal.FieldGroup.setGroupWithfocus($(this));
- $(this).data('verticalTab').focus();
- }
- });
- }
- }
- }
- /**
- * Implements Drupal.FieldGroup.processHook().
- *
- * TODO clean this up meaning check if this is really
- * necessary.
- */
- Drupal.FieldGroup.Effects.processDiv = {
- execute: function (context, settings, type) {
- $('div.collapsible', context).each(function() {
- var $wrapper = $(this);
- // Turn the legend into a clickable link, but retain span.field-group-format-toggler
- // for CSS positioning.
- var $toggler = $('span.field-group-format-toggler:first', $wrapper);
- var $link = $('<a class="field-group-format-title" href="#"></a>');
- $link.prepend($toggler.contents()).appendTo($toggler);
-
- // .wrapInner() does not retain bound events.
- $link.click(function () {
- var wrapper = $wrapper.get(0);
- // Don't animate multiple times.
- if (!wrapper.animating) {
- wrapper.animating = true;
- var speed = $wrapper.hasClass('speed-fast') ? 300 : 1000;
- if ($wrapper.hasClass('effect-none') && $wrapper.hasClass('speed-none')) {
- $('> .field-group-format-wrapper', wrapper).toggle();
- }
- else if ($wrapper.hasClass('effect-blind')) {
- $('> .field-group-format-wrapper', wrapper).toggle('blind', {}, speed);
- }
- else {
- $('> .field-group-format-wrapper', wrapper).toggle(speed);
- }
- wrapper.animating = false;
- }
- return false;
- });
-
- });
- }
- };
- /**
- * Behaviors.
- */
- Drupal.behaviors.fieldGroup = {
- attach: function (context, settings) {
- if (settings.field_group == undefined) {
- return;
- }
- $('body', context).once('fieldgroup-effects', function () {
- // Execute all of them.
- $.each(Drupal.FieldGroup.Effects, function (func) {
- // We check for a wrapper function in Drupal.field_group as
- // alternative for dynamic string function calls.
- var type = func.toLowerCase().replace("process", "");
- if (settings.field_group[type] != undefined && $.isFunction(this.execute)) {
- this.execute(context, settings, settings.field_group[type]);
- }
- });
- });
- }
- };
- })(jQuery);