# themify-builder/7.7.7/modules/module-tab.php

Themify Builder, version 7.7.7. 154 lines.

- Page: https://pluginprobe.com/plugins/themify-builder/7.7.7/code/modules/module-tab.php
- Raw: https://pluginprobe.com/plugins/themify-builder/7.7.7/raw/modules/module-tab.php
- Modified: 2026-07-09T21:05:08+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/themify-builder/7.7.7/code/modules/module-tab.php#L10-L20`.

```php
<?php
defined('ABSPATH') || exit;

/**
 * Module Name: Tab
 * Description: Display Tab content
 */
class TB_Tab_Module extends Themify_Builder_Component_Module {


    public static function get_module_name():string {
        add_filter('themify_builder_active_vars', [__CLASS__, 'builder_active_enqueue']);
        return __('Tab', 'themify');
    }

    public static function get_module_icon():string {
        return 'layout-tab';
    }

    public static function get_js_css():array {
        $assets = array(
            'css' => 1,
            'js' => 1,
        );
        if (Themify_Builder_Model::is_front_builder_activate()) {
            $assets['js_admin'] = 1;
        }
        return $assets;
    }

    public static function builder_active_enqueue(array $vars):array {
        $vars['addons'][THEMIFY_BUILDER_URI . '/js/modules/tab-admin.js'] = THEMIFY_VERSION;
        return $vars;
    }


    /**
     * Render plain content for static content.
     * 
     * @param array $module 
     * @return string
     */
    public static function get_static_content(array $module):string {
        $mod_settings = $module['mod_settings']+ array(
            'mod_title_tab' => '',
            'tab_content_tab' => array()
        );
        $text ='' !== $mod_settings['mod_title_tab']?sprintf('<h3>%s</h3>', $mod_settings['mod_title_tab']): '';
        if (!empty($mod_settings['tab_content_tab'])) {
            $text .= '<ul>';
            foreach ($mod_settings['tab_content_tab'] as $content) {
				$text .= '<li>';
				if ( ! empty( $content['title_tab'] ) ) {
					$text .= '<h4>' . $content['title_tab'] . '</h4>';
				}
                if ( isset( $content['text_tab'] ) ) {
                    $text .= $content['text_tab'];
                } else if ( ! empty( $content['builder_content'] ) && is_array( $content['builder_content'] ) ) {
					$text .= ThemifyBuilder_Data_Manager::_get_all_builder_text_content( $content['builder_content'] );
				}
				$text .= '</li>';
            }
            $text .= '</ul>';
        }
        return $text;
    }

    public static function get_styling_image_fields() : array {
        return [
            'bg_i' => '.ui .tab-nav li.current'
        ];
    }

	public static function get_translatable_fields( $module, $classname ) : array {
		$fields = parent::get_translatable_fields( $module, $classname );
		if ( ! empty( $module['mod_settings']['mod_title_tab'] ) ) {
			$fields[] = [
				'id' => 'mod_title_tab',
				'value' => $module['mod_settings']['mod_title_tab'],
			];
		}
		if ( ! empty( $module['mod_settings']['tab_content_tab'] ) && is_array( $module['mod_settings']['tab_content_tab'] ) ) {
			foreach ( $module['mod_settings']['tab_content_tab'] as $row_index => $tab ) {
				if ( ! is_array( $tab ) ) {
					continue;
				}
				$fields[] = [
					'id' => 'title_tab-' . $row_index,
					'value' => isset( $tab['title_tab'] ) ? $tab['title_tab'] : '',
				];
				if ( isset( $tab['text_tab'] ) ) {
					$fields[] = [
						'id' => 'text_tab-' . $row_index,
						'value' => $tab['text_tab'],
						'type' => 'VISUAL',
					];
				}
			}
		}

		return $fields;
	}

	public static function translate_module( $module_data, $translations ) {
		if ( empty( $module_data['mod_settings'] ) || ! is_array( $module_data['mod_settings'] ) ) {
			$module_data['mod_settings'] = [];
		}
		if ( empty( $module_data['mod_settings']['tab_content_tab'] ) || ! is_array( $module_data['mod_settings']['tab_content_tab'] ) ) {
			$module_data['mod_settings']['tab_content_tab'] = [];
		}

		foreach ( $translations as $item_key => $value ) {
			if ( $item_key === 'mod_title_tab' ) {
				$module_data['mod_settings']['mod_title_tab'] = $value;
				continue;
			}

			$dash_pos = strrpos( $item_key, '-' );
			if ( $dash_pos === false ) {
				continue;
			}

			$field = substr( $item_key, 0, $dash_pos );
			$index = substr( $item_key, $dash_pos + 1 );
			if ( $field === '' || $index === '' || ! is_numeric( $index ) ) {
				continue;
			}

			if ( ! isset( $module_data['mod_settings']['tab_content_tab'][ $index ] ) || ! is_array( $module_data['mod_settings']['tab_content_tab'][ $index ] ) ) {
				$module_data['mod_settings']['tab_content_tab'][ $index ] = [];
			}

			$module_data['mod_settings']['tab_content_tab'][ $index ][ $field ] = $value;
		}

		return $module_data;
	}

    /**
     * Returns a flat array of all nested modules
     */
    public static function get_nested_modules( array $data ) : array {
        $modules = [];
        if ( isset( $data['mod_settings']['tab_content_tab'][0]['builder_content'] ) ) {
            foreach ( $data['mod_settings']['tab_content_tab'] as $tab ) {
                foreach ( $tab['builder_content'] as $row ) {
                    $modules = array_merge( $modules, Themify_Builder::_get_modules_recursive( $row ) );
                }
            }
        }

        return $modules;
    }
}
```
