SiteConfigExtension::updateCMSFields()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 20
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 1
Metric Value
cc 1
eloc 15
c 2
b 1
f 1
nc 1
nop 1
dl 0
loc 20
rs 9.7666
1
<?php
2
3
namespace SilverCommerce\Postage\Extensions;
4
5
use SilverStripe\Forms\FieldList;
6
use SilverStripe\ORM\DataExtension;
7
use SilverStripe\Forms\LiteralField;
8
use SilverStripe\Forms\GridField\GridField;
9
use SilverStripe\Forms\ToggleCompositeField;
10
use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor;
11
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor;
12
use SilverStripe\Forms\GridField\GridFieldAddNewButton;
13
use Symbiote\GridFieldExtensions\GridFieldAddNewMultiClass;
14
use SilverCommerce\Postage\Model\PostageType;
15
16
/**
17
 * Add postage areas to config
18
 */
19
class SiteConfigExtension extends DataExtension
20
{
21
    private static $has_many = [
0 ignored issues
show
introduced by
The private property $has_many is not used, and could be removed.
Loading history...
22
        'PostageTypes' => PostageType::class
23
    ];
24
    
25
    public function updateCMSFields(FieldList $fields)
26
    {
27
        $postage_config = GridFieldConfig_RelationEditor::create();
28
        $postage_config
29
            ->removeComponentsByType(GridFieldAddNewButton::class)
30
            ->addComponent(new GridFieldAddNewMultiClass("buttons-before-left"));
31
32
        $fields->addFieldsToTab(
33
            "Root.Shop",
34
            [
35
                ToggleCompositeField::create(
36
                    'PostageSettings',
37
                    _t("SilverCommerce\Postage.PostageSettings", "Postage Settings"),
38
                    [
39
                        LiteralField::create("DiscountPadding", "<br/>"),
40
                        GridField::create(
41
                            'PostageTypes',
42
                            '',
43
                            $this->owner->PostageTypes()
44
                        )->setConfig($postage_config)
45
                    ]
46
                )
47
            ]
48
        );
49
    }
50
}
51