• Hello Fabrik Community

    Fabrik is now in the hands of the development team that brought you Fabrik for Joomla 4. We have recently transitioned the Fabrik site over to a new server and are busy trying to clean it up. We have upgraded the site to Joomla 4 and are running the latest version of Fabrik 4. We have also upgraded the Xenforo forum software to the latest version. Many of the widgets you might have been used to on the forum are no longer operational, many abandoned by the developers. We hope to bring back some of the important ones as we have time.

    Exciting times to be sure.

    The Fabrik 4.0 Official release is now available. In addition, the Fabrik codebase is now available in a public repository. See the notices about these in the announcements section

    We wish to shout out a very big Thank You to all of you who have made donations. They have really helped. But we can always use more...wink..wink..

    Also a big Thank You to those of you who have been assisting others in the forum. This takes a very big burden off of us as we work on bugs, the website and the future of Fabrik.

Subgroup / nested groups

zebrafilm

Member
Is it possible to use subgroups / nested groups?
I need to make a form structure like this:

Main group 3
Subgroup 3.1
element 3.1.1
element 3.1.2
element 3.1.3
Subgroup 3.2
element 3.2.1
element 3.2.1

Currently on v 3.07 and testing 3.1
 
Unfortunately no.
As I know this would be something that the developers hope to implement some day but (if I am not wrong) nobody has yet ideas how.
 
Just for information and in idea-generating purposes -

I have some ideas how it would be look in form level and how it principally should work. Assuming that at least as first steps nested groups would be allowed only for joined data. E.g if the joined group's parent ("from") table is not main table but another joined table then this groups data is displayed inside its parent group.
Parent joined group ("from" table is main table) = 1
Child joined group ("from" table is joined1) = 2
Default (maybe even only possible) positioning - in regular form view 2 is always below 1, if 1 is repeat group and shown in table mode then data from 2 is always the rightest.

Scenario 1.
1 and 2 are both non-repeating - here is nothing to write.
Scenario 2.
1 is nonrepeat and 2 is repeat group. Data 1 is displayed as always (in list mode). Data 2 below could be or in list or table mode.

Scenario 3 (+picture).
1 is repeat group and 2 nonrepeat. The most interesting. Each repeating subroup of 1 displays the fields of 2 below or right side of own fields. Although 2 is nonrepeat, it repeats with the data of 1, taking needed pk value for its fk field from each row of 1 . When using table mode, the fields of 2 are equally <td>-s like fields of 1.
repgroup_with_nonrepeat_in_repeat.png

Scenario 4 (+picture).
both 1 and 2 are repeat groups. Ressembling to the scenario 3, but the main difference occurs when we are using table mode. Repeat group 2 is inside the rightest table cell shown or in list or table mode. This column's heading is group label. If 2 is in table mode then its element headings are also shown.
repgroup_with_repeat_in_repeat.png

The most complex issue is how to make it possible in code level. No ideas could it be done only in template files or it needs some modifications in other files as views/forms/view.base.php or models/form.php

I may be wrong but I believe that we could be able to divide the joined groups into 2 category by their main table and define them by these categories (NOTICE: the following is only to illustrate the logic, at least one part of variables doesn't exist in templates and the way I propose may be actually wrong in whatever reason).

I imagine it so:

- if group is just a group or is join and join_from_table is the main table
-- we call it $group
-- else we call it $nested_group
OR
- if group is join and join_from_table is not the main table
-- we call it $nested_group
-- else we call it $group

The next things similar to that in default.php would happen in default_group.php and default_repeatgroup_row.php
I give the simpler example - it's for default_group.php
Before endforeach would be code something like this:

PHP:
if ($nested_group->join_from_table == $group->table_join)
{
$group = $nested_group;
$this->elements = $group->elements;
echo $this->loadTemplate($group->tmpl);
}

Well, that's all. Thank you for your attention :)
 
We are in need of some funding.
More details.

Thank you.

Staff online

Members online

Back
Top