' .
Ai1ec_I18n::__(
'If the form below is not working please follow
this link.'
) .
'
',
wp_nonce_url(
add_query_arg( 'ai1ec_disable_gzip_compression', '1' ),
'ai1ec_disable_gzip_compression'
)
)
);
$file = $loader->get_file( 'setting/bootstrap_tabs.twig', $args, true );
$file->render();
}
/**
* Based on the plugin options, decides what tabs to render.
*
*
*
* @param array $plugin_settings
* @param array $tabs
*
* @return array
*/
protected function _get_tabs_to_show( array $plugin_settings, array $tabs ) {
$index = 0;
$renderer = $this->_registry->get( 'html.element.setting-renderer' );
foreach ( $plugin_settings as $id => $setting ) {
// if the setting is shown
if ( isset ( $setting['renderer'] ) ) {
$tab_to_use = isset( $setting['renderer']['item'] ) ?
$setting['renderer']['item'] :
$setting['renderer']['tab'];
// check if it's the first one
if (
! isset ( $tabs[$tab_to_use]['elements'] )
) {
$tabs[$tab_to_use]['elements'] = array();
}
$setting['id'] = $id;
// render the settings
$weight = 10;
if ( isset( $setting['renderer']['weight'] ) ) {
$weight = (int)$setting['renderer']['weight'];
}
// NOTICE: do NOT change order of two first
// elements {weight,index}, otherwise sorting will fail.
$tabs[$tab_to_use]['elements'][] = array(
'weight' => $weight,
'index' => ++$index,
'html' => $renderer->render( $setting ),
);
// if the settings has an item tab, set the item as active.
if ( isset( $setting['renderer']['item'] ) ) {
if ( ! isset( $tabs[$setting['renderer']['tab']]['items_active'][$setting['renderer']['item']] ) ) {
$tabs[$setting['renderer']['tab']]['items_active'][$setting['renderer']['item']] = true;
}
}
}
}
$tabs_to_display = array();
// now let's see what tabs to display.
foreach ( $tabs as $name => $tab ) {
// sort by weights
if ( isset( $tab['elements'] ) ) {
asort( $tab['elements'] );
}
// if a tab has more than one item.
if ( isset( $tab['items'] ) ) {
// if no item is active, nothing is shown
if ( empty( $tab['items_active'] ) ) {
continue;
}
// if only one item is active, do not use the dropdown
if ( count( $tab['items_active'] ) === 0 ) {
$name = key($tab['items_active']);
$tab['name'] = $tab['items'][$name];
unset ( $tab['items'] );
} else {
// check active items for the dropdown
foreach ( $tab['items'] as $item => $longname ) {
if ( ! isset( $tab['items_active'][$item] ) ) {
unset( $tab['items'][$item] );
}
}
}
// lets make a check to avoid overriding tabs
if ( ! isset( $tabs_to_display[$name] ) ) {
$tabs_to_display[$name] = $tab;
} else {
$tabs_to_display[$name]['elements'] = $tab['elements'];
}
} else {
// no items, just check for any element to display.
if ( isset( $tab['elements'] ) ) {
// lets make a check to avoid overriding tabs
if ( ! isset( $tabs_to_display[$name] ) ) {
$tabs_to_display[$name] = $tab;
} else {
$tabs_to_display[$name]['elements'] = $tab['elements'];
}
}
}
}
return $tabs_to_display;
}
}