(函数($){/***此脚本将一组字段集转换为垂直堆栈*选项卡。单击相应的*选项卡。**每个选项卡可能有一个摘要,可以由另一个更新*脚本。为了实现这一点,每个字段集都有一个关联的*“verticalTabCallback”(将jQuery.data()附加到字段集),*每次用户更新表单时都会调用*选项卡窗格中的元素。*/Drupal.behaviors.verticalTabs={附加:函数(上下文){$('.vertical-tabs-panes',context).once('vertical-tabs',function(){var focusID=$(':hidden.vertical-tabs-active-tab',this).val();变量tab_focus;//检查是否有一些字段集可以转换为垂直标签var$fieldsets=$('>fieldset',this);if($fieldsets.length==0){回报;}//创建选项卡列。var选项卡列表=$('');$(this).wrap('
').before(tab_list);//将每个字段集转换为一个选项卡。$fieldsets.each(函数(){var vertical_tab=新Drupal.verticalTab({标题:$('>legend',this).text(),字段集:$(this)});tab_list.append(vertical_tab.item);$(这个).removeClass('折叠').addClass(“垂直标签”).data('verticalTab',vertical_tab);if(this.id==焦点id){tab_focus=$(这个);}});$('>li:first',tab_list).addClass('first');$('>li:last',tab_list).addClass('last');if(!tab_focus){//如果当前URL有一个片段,并且其中一个选项卡包含//元素匹配URL片段,激活该选项卡。if(window.location.hash&&$(this).find(window.location.hash).length){tab_focus=$(this).find(window.location.hash).closest('.vertical-tabs-pane');}其他{tab_focus=$('>.vertical-tabs-pane:first',this);}}if(tab_focus.length){tab_focus.data('verticalTab').focus();}});}};/***垂直选项卡对象表示选项卡组中的单个选项卡。**@param设置*具有以下关键点的对象:*-title:选项卡的名称。*-fieldset:作为选项卡窗格的fieldset的jQuery对象。*/Drupal.verticalTab=功能(设置){var self=此;$.extend(this,settings,Drupal.theme('verticalTab',settings));this.link.click(函数(){self.focus();返回false;});//添加的键盘事件://按Enter键将打开选项卡窗格。this.link.keydown(函数(事件){if(event.keyCode==13){self.focus();//将焦点设置在可见字段集/选项卡窗格的第一个输入字段上。$(“fieldset.vertical-tabs-pane:input:visible:enabled:first”).focus();返回false;}});this.fieldset(此字段集).bind('summaryUpdated',函数(){self.updateSummary();}).trigger('summaryUpdated');};Drupal.verticalTab.protype={/***显示选项卡的内容窗格。*/焦点:函数(){this.fieldset(此字段集).s兄弟姐妹('fieldset.vertical-tabs-pane').each(函数(){var选项卡=$(this).data('verticalTab');tab.fieldset.hide();tab.item.removeClass('selected');}).end().show().s兄弟姐妹(':hidden.vertical-tabs-active-tab').val(this.fieldset.attr('id'));this.item.addClass('selected');//标记屏幕阅读器的活动选项卡。$(“#active-vertical-tab”).remove();this.link.append(''+Drupal.t('(活动选项卡)')+'');},/***更新选项卡的摘要。*/updateSummary:函数(){this.summary.html(this.fieldset.drupalGetSummary());},/***显示垂直选项卡窗格。*/选项卡显示:函数(){//显示选项卡。this.item.show();//显示垂直选项卡。this.item.closest('.vertical-tabs').show();//更新条目的.first标记。我们需要从父级递归以保留//jQuery实现sortOrder时的实际DOM元素顺序,但不是公共的//方法。this.item.parent().children('.vertical-tab-button').removeClass('first').filter(':visible:first').addClass('第一个');//显示字段集。this.fieldset.removeClass('vertical-tab-hidden').show();//聚焦此选项卡。this.focus();返回此;},/***隐藏垂直选项卡窗格。*/tabHide:函数(){//隐藏此选项卡。this.item.hide();//更新条目的.first标记。我们需要从父级递归以保留//jQuery实现sortOrder时的实际DOM元素顺序,但不是公共的//方法。this.item.parent().children('.vertical-tab-button').removeClass('first').filter(':visible:first').addClass('第一个');//隐藏字段集。this.fieldset.addClass('vertical-tab-hidden').hide();//聚焦第一个可见标签(如果有)。var$firstTab=this.fieldset.sibless('.vertical-tabs-pane:not(.vertical-tab-hidden):first');if($firstTab.length){$firstTab.data('verticalTab').focus();}//隐藏垂直选项卡(如果没有剩余选项卡)。其他{this.item.closest('.vertical-tabs').hide();}返回此;}};/***垂直选项卡的主题功能。**@param设置*具有以下关键点的对象:*-title:选项卡的名称。*@返回*此函数必须返回至少具有以下键的对象:*-item:根选项卡jQuery元素*-link:作为选项卡可单击区域的锚标记*(jQuery版本)*-summary:包含选项卡摘要的jQuery元素*/Drupal.theme.prototype.verticalTab=功能(设置){var选项卡={};tab.item=$('
  • ').append(tab.link=$('').append(tab.title=$('').text(settings.title).append(tab.summary=$('')));返回选项卡;};})(jQuery);