private function createGroupTabs(ContentType $contentType, array $has)
    {
        $groups = [];
        $groupIds = [];

        $addGroup = function ($group, $label) use (&$groups, &$groupIds) {
            $nr = count($groups) + 1;
            $id = rtrim('tab-' . Slugify::create()->slugify($group), '-');
            if (isset($groupIds[$id]) || $id === 'tab') {
                $id .= '-' . $nr;
            }
            $groups[$group] = [
                'label'     => $label,
                'id'        => $id,
                'is_active' => $nr === 1,
                'fields'    => [],
            ];
            $groupIds[$id] = 1;
        };

        foreach ($contentType['groups'] ?: ['ungrouped'] as $group) {
            if ($group === 'ungrouped') {
                $addGroup($group, Trans::__('contenttypes.generic.group.ungrouped'));
            } elseif ($group !== 'meta' && $group !== 'relations' && $group !== 'taxonomy') {
                $default = ['DEFAULT' => ucfirst($group)];
                $key = ['contenttypes', $contentType['slug'], 'group', $group];
                $addGroup($group, Trans::__($key, $default));
            }
        }

        if ($has['relations'] || $has['incoming_relations']) {
            $addGroup('relations', Trans::__('contenttypes.generic.group.relations'));
            $groups['relations']['fields'][] = '*relations';
        }

        if ($has['taxonomy'] || (is_array($contentType['groups']) && in_array('taxonomy', $contentType['groups']))) {
            $addGroup('taxonomy', Trans::__('contenttypes.generic.group.taxonomy'));
            $groups['taxonomy']['fields'][] = '*taxonomy';
        }

        if ($has['templatefields'] || (is_array($contentType['groups']) && in_array('template', $contentType['groups']))) {
            $addGroup('template', Trans::__('contenttypes.generic.group.template'));
            $groups['template']['fields'][] = '*template';
        }

        $addGroup('meta', Trans::__('contenttypes.generic.group.meta'));
        $groups['meta']['fields'][] = '*meta';

        // References fields in tab group data.
        foreach ($contentType['fields'] as $fieldName => $field) {
            $groups[$field['group']]['fields'][] = $fieldName;
        }

        return $groups;
    }
private function createGroupTabs(ContentType $contentType, array $has)
    {
        $groups = [];
        $groupIds = [];

        $addGroup = function ($group, $label) use (&$groups, &$groupIds) {
            $nr = count($groups) + 1;
            $id = rtrim('tab-' . Slugify::create()->slugify($group), '-');
            if (isset($groupIds[$id]) || $id === 'tab') {
                $id .= '-' . $nr;
            }
            $groups[$group] = [
                'label'     => $label,
                'id'        => $id,
                'is_active' => $nr === 1,
                'fields'    => [],
            ];
            $groupIds[$id] = 1;
        };

        foreach ($contentType['groups'] ?: ['ungrouped'] as $group) {
            if ($group === 'ungrouped') {
                $addGroup($group, Trans::__('contenttypes.generic.group.ungrouped'));
            } elseif ($group !== 'meta' && $group !== 'relations' && $group !== 'taxonomy') {
                $default = ['DEFAULT' => ucfirst($group)];
                $key = ['contenttypes', $contentType['slug'], 'group', $group];
                $addGroup($group, Trans::__($key, $default));
            }
        }

        if ($has['relations'] || $has['incoming_relations']) {
            $addGroup('relations', Trans::__('contenttypes.generic.group.relations'));
            $groups['relations']['fields'][] = '*relations';
        }

        if ($has['taxonomy'] || (is_array($contentType['groups']) && in_array('taxonomy', $contentType['groups']))) {
            $addGroup('taxonomy', Trans::__('contenttypes.generic.group.taxonomy'));
            $groups['taxonomy']['fields'][] = '*taxonomy';
        }

        if ($has['templatefields'] || (is_array($contentType['groups']) && in_array('template', $contentType['groups']))) {
            $addGroup('template', Trans::__('contenttypes.generic.group.template'));
            $groups['template']['fields'][] = '*template';
        }

        $addGroup('meta', Trans::__('contenttypes.generic.group.meta'));
        $groups['meta']['fields'][] = '*meta';

        // References fields in tab group data.
        foreach ($contentType['fields'] as $fieldName => $field) {
            $groups[$field['group']]['fields'][] = $fieldName;
        }

        return $groups;
    }
private function createGroupTabs ( ContentType $ contentType , array $ has ) { $ groups = [ ] ; $ groupIds = [ ] ; $ addGroup = function ( $ group , $ label ) use ( & $ groups , & $ groupIds ) { $ nr = count ( $ groups ) + 1 ; $ id = rtrim ( 'tab-' . Slugify :: create ( ) -> slugify ( $ group ) , '-' ) ; if ( isset ( $ groupIds [ $ id ] ) || $ id === 'tab' ) { $ id .= '-' . $ nr ; } $ groups [ $ group ] = [ 'label' => $ label , 'id' => $ id , 'is_active' => $ nr === 1 , 'fields' => [ ] , ] ; $ groupIds [ $ id ] = 1 ; } ; foreach ( $ contentType [ 'groups' ] ? : [ 'ungrouped' ] as $ group ) { if ( $ group === 'ungrouped' ) { $ addGroup ( $ group , Trans :: __ ( 'contenttypes.generic.group.ungrouped' ) ) ; } elseif ( $ group !== 'meta' && $ group !== 'relations' && $ group !== 'taxonomy' ) { $ default = [ 'DEFAULT' => ucfirst ( $ group ) ] ; $ key = [ 'contenttypes' , $ contentType [ 'slug' ] , 'group' , $ group ] ; $ addGroup ( $ group , Trans :: __ ( $ key , $ default ) ) ; } } if ( $ has [ 'relations' ] || $ has [ 'incoming_relations' ] ) { $ addGroup ( 'relations' , Trans :: __ ( 'contenttypes.generic.group.relations' ) ) ; $ groups [ 'relations' ] [ 'fields' ] [ ] = '*relations' ; } if ( $ has [ 'taxonomy' ] || ( is_array ( $ contentType [ 'groups' ] ) && in_array ( 'taxonomy' , $ contentType [ 'groups' ] ) ) ) { $ addGroup ( 'taxonomy' , Trans :: __ ( 'contenttypes.generic.group.taxonomy' ) ) ; $ groups [ 'taxonomy' ] [ 'fields' ] [ ] = '*taxonomy' ; } if ( $ has [ 'templatefields' ] || ( is_array ( $ contentType [ 'groups' ] ) && in_array ( 'template' , $ contentType [ 'groups' ] ) ) ) { $ addGroup ( 'template' , Trans :: __ ( 'contenttypes.generic.group.template' ) ) ; $ groups [ 'template' ] [ 'fields' ] [ ] = '*template' ; } $ addGroup ( 'meta' , Trans :: __ ( 'contenttypes.generic.group.meta' ) ) ; $ groups [ 'meta' ] [ 'fields' ] [ ] = '*meta' ; // References fields in tab group data. foreach ( $ contentType [ 'fields' ] as $ fieldName => $ field ) { $ groups [ $ field [ 'group' ] ] [ 'fields' ] [ ] = $ fieldName ; } return $ groups ; }
Generate tab groups.

@param ContentType $contentType
@param array       $has

@return array
Generate tab groups .