Example #1
0
    public function initFields()
    {
        $this->addFieldset();
        $fields = $this->table->listableFields(function (HasMany $fields) {
            $fields->getRightEntity()->orderBy('dynamic_field_group_id ASC, `order` ASC');
            $fields->withFieldType();
            $fields->withPermissions();
            $fields->joinTranslation();
            $fields->joinFallbackTranslation();
            $fields->withHasOneSelectRelation(function (HasOne $relation) {
                $relation->withOnTable();
                $relation->withShowTable();
            });
            $fields->withFieldGroup(function (BelongsTo $fieldGroup) {
                $fieldGroup->joinTranslation();
                $fieldGroup->joinFallbackTranslation();
            });
        });
        $prevGroup = null;
        foreach ($fields as $field) {
            if ($prevGroup && $prevGroup != $field->dynamic_field_group_id || !$prevGroup && $field->dynamic_field_group_id) {
                $fieldset = $this->addFieldset()->setAttribute('data-field-group', $field->dynamic_field_group_id);
                $fieldset->addChild('<hr /><h4>' . $field->fieldGroup->title . '</h4>');
                $prevGroup = $field->dynamic_field_group_id;
            }
            $type = $field->fieldType->slug;
            $name = $field->field;
            $label = $field->label;
            if ($type == 'php') {
                /**
                 * PHP field is not editable.
                 * Should we display content?
                 */
                continue;
            } elseif ($type != 'hidden' && !$field->hasPermissionTo('write') && config('pckg.dynamic.permissions')) {
                $element = $this->addDiv()->addChild('<div class="form-group grouped" data-field-id="' . $field->id . '"><label class="col-sm-3">' . $label . '
</label>
<div class="col-sm-9">' . $this->record->{$field->field} . '</div></div>');
                continue;
            } elseif (!$this->editable) {
                // @T00D00
                $element = $this->addDiv()->addChild('<div class="form-group grouped" data-field-id="' . $field->id . '"><label class="col-sm-3">' . $label . '
</label>
<div class="col-sm-9">' . $this->record->{$field->field} . '</div></div>');
                continue;
            } elseif ($field->id == $this->foreignFieldId) {
                $this->createElementByType('hidden', $name, $field);
                continue;
            }
            $element = $this->createElementByType($type, $name, $field);
            if ($label) {
                $element->setLabel($label);
            }
            $element->setHelp($field->help);
            $element->setAttribute('data-field-id', $field->id);
        }
        $this->addSubmit('submit');
        $this->addSubmit('as_new')->setValue('As new')->setClass('btn-link');
        return $this;
    }