Completed
Pull Request — master (#7)
by
unknown
02:33
created

SettingsField   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 87
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 87
rs 10
c 0
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 70 2
A getInnerField() 0 3 1
1
<?php
2
3
namespace SilverStripe\DocumentConverter;
4
5
use InvalidArgumentException;
6
use SilverStripe\Assets\Folder;
7
use SilverStripe\Forms\CheckboxField;
8
use SilverStripe\Forms\CompositeField;
9
use SilverStripe\Forms\DropdownField;
10
use SilverStripe\Forms\FieldList;
11
use SilverStripe\Forms\HeaderField;
12
use SilverStripe\Forms\TreeDropdownField;
13
use SilverStripe\View\Requirements;
14
15
/**
16
 * Provides a document import capability through the use of an external service.
17
 * Includes several options fields, which are bundled together with an UploadField
18
 * into a CompositeField.
19
 */
20
class SettingsField extends CompositeField
21
{
22
    /**
23
     * Reference to the inner upload field (ImportField).
24
     */
25
    private $innerField = null;
26
27
    /**
28
     * Augments a simple CompositeField with uploader and import options.
29
     *
30
     * @param $children FieldSet/array Any additional children.
31
     */
0 ignored issues
show
Documentation Bug introduced by
The doc comment FieldSet/array at position 0 could not be parsed: Unknown type name 'FieldSet/array' at position 0 in FieldSet/array.
Loading history...
32
    public function __construct($children = null)
33
    {
34
        if ($children) {
35
            $class = get_class();
36
            throw new InvalidArgumentException(
37
                "${class}::__construct does not accept extra parameters."
38
            );
39
        }
40
41
        // Add JS specific to this field.
42
        Requirements::javascript('silverstripe/documentconverter: javascript/DocumentConversionField.js');
43
44
        $fields = FieldList::create([
45
            HeaderField::create(
46
                'FileWarningHeader',
0 ignored issues
show
Bug introduced by
'FileWarningHeader' of type string is incompatible with the type array expected by parameter $args of SilverStripe\View\ViewableData::create(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

46
                /** @scrutinizer ignore-type */ 'FileWarningHeader',
Loading history...
47
                _t(
48
                    __CLASS__ . '.FileWarningHeader',
49
                    'Warning: import will remove all content and subpages of this page.'
50
                ),
51
                4
0 ignored issues
show
Bug introduced by
4 of type integer is incompatible with the type array expected by parameter $args of SilverStripe\View\ViewableData::create(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

51
                /** @scrutinizer ignore-type */ 4
Loading history...
52
            ),
53
            $splitHeader = DropdownField::create(
54
                'DocumentConversionSettings-SplitHeader',
55
                _t(
56
                    __CLASS__ . '.SplitHeader',
57
                    'Split document into pages'
58
                ),
59
                [
60
                    0 => _t(__CLASS__ . '.No', 'no'),
61
                    1 => _t(__CLASS__ . '.EachH1', 'for each heading 1'),
62
                    2 => _t(__CLASS__ . '.EachH2', 'for each heading 2')
63
                ]
64
            ),
65
            $keepSource = CheckboxField::create(
66
                'DocumentConversionSettings-KeepSource',
67
                _t(
68
                    __CLASS__ . '.KeepSource',
69
                    'Keep the original document. Adds a link to it on TOC, if enabled.'
70
                )
71
            ),
72
            $chosenFolderID = TreeDropdownField::create(
73
                'DocumentConversionSettings-ChosenFolderID',
74
                _t(__CLASS__ . '.ChooseFolder', 'Choose a folder to save this file'),
75
                Folder::class
76
            ),
77
            $includeTOC = CheckboxField::create(
78
                'DocumentConversionSettings-IncludeTOC',
79
                _t(__CLASS__ . '.IncludeTOC', 'Replace this page with a Table of Contents.')
80
            ),
81
            $publishPages = CheckboxField::create(
82
                'DocumentConversionSettings-PublishPages',
83
                _t(
84
                    __CLASS__ . '.publishPages',
85
                    'Publish modified pages (not recommended unless you are sure about the conversion outcome)'
86
                )
87
            ),
88
            $this->innerField = ImportField::create(
89
                'ImportedFromFile',
90
                _t(__CLASS__ . '.ImportedFromFile', 'Import content from a word document')
91
            )
92
        ]);
93
94
        // Prevent the warning popup that appears when navigating away from the page.
95
        $splitHeader->addExtraClass('no-change-track');
96
        $keepSource->addExtraClass('no-change-track');
97
        $chosenFolderID->addExtraClass('no-change-track');
98
        $includeTOC->addExtraClass('no-change-track');
99
        $publishPages->addExtraClass('no-change-track');
100
101
        return parent::__construct($fields);
0 ignored issues
show
Bug introduced by
Are you sure the usage of parent::__construct($fields) targeting SilverStripe\Forms\CompositeField::__construct() seems to always return null.

This check looks for function or method calls that always return null and whose return value is used.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
if ($a->getObject()) {

The method getObject() can return nothing but null, so it makes no sense to use the return value.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
102
    }
103
104
    public function getInnerField()
105
    {
106
        return $this->innerField;
107
    }
108
}
109