59 lines
1.9 KiB
JavaScript
59 lines
1.9 KiB
JavaScript
(function ($) {
|
|
|
|
'use strict';
|
|
|
|
/**
|
|
* 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;
|
|
};
|
|
|
|
/**
|
|
* Behaviors.
|
|
*/
|
|
Drupal.behaviors.fieldGroup = {
|
|
attach: function (context, settings) {
|
|
|
|
settings.field_group = settings.field_group || drupalSettings.field_group;
|
|
if (typeof settings.field_group === 'undefined') {
|
|
return;
|
|
}
|
|
|
|
// 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 (typeof settings.field_group[type] !== 'undefined' && $.isFunction(this.execute)) {
|
|
this.execute(context, settings, settings.field_group[type]);
|
|
}
|
|
});
|
|
|
|
// Add a new ID to each fieldset.
|
|
$('.group-wrapper fieldset').each(function () {
|
|
// Tats bad, but we have to keep the actual id to prevent layouts to break.
|
|
var fieldgroupID = 'field_group-' + $(this).attr('id') + ' ' + $(this).attr('id');
|
|
$(this).attr('id', fieldgroupID);
|
|
});
|
|
|
|
// Set the hash in url to remember last userselection.
|
|
$('.group-wrapper ul li').each(function () {
|
|
var fieldGroupNavigationListIndex = $(this).index();
|
|
$(this).children('a').click(function () {
|
|
var fieldset = $('.group-wrapper fieldset').get(fieldGroupNavigationListIndex);
|
|
// Grab the first id, holding the wanted hashurl.
|
|
var hashUrl = $(fieldset).attr('id').replace(/^field_group-/, '').split(' ')[0];
|
|
window.location.hash = hashUrl;
|
|
});
|
|
});
|
|
}
|
|
};
|
|
|
|
})(jQuery);
|