DarkThemePreference   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

Changes 6
Bugs 0 Features 0
Metric Value
eloc 26
c 6
b 0
f 0
dl 0
loc 44
rs 10
wmc 3

1 Method

Rating   Name   Duplication   Size   Complexity  
A updateCMSFields() 0 32 3
1
<?php
2
3
namespace Sunnysideup\CMSDarkTheme\Model\Extensions;
4
5
use SilverStripe\Forms\FieldList;
6
use SilverStripe\Forms\OptionsetField;
7
use SilverStripe\Core\Extension;
8
9
/**
10
 * Class \Sunnysideup\CMSDarkTheme\Model\Extensions\DarkThemePreference.
11
 *
12
 * @property SiteConfig|Member|DarkThemePreference $owner
13
 * @property string $DarkModeSetting
14
 */
15
class DarkThemePreference extends Extension
16
{
17
    private static $db = [
18
        'DarkModeSetting' => 'Enum("Use browser setting, Dark, Light", "Use browser setting")',
19
    ];
20
21
    private static $dark_theme_also_move_locale = true;
22
23
    private static $field_labels = [
24
        'DarkModeSetting' => 'Preferred Display Mode for CMS',
25
    ];
26
27
    public function updateCMSFields(FieldList $fields)
28
    {
29
        $fieldLabels = $this->getOwner()->fieldLabels();
30
        $owner = $this->getOwner();
31
        if ($owner->Config()->get('dark_theme_also_move_locale')) {
32
            $localeField = $fields->dataFieldByName('Locale');
33
            if ($localeField) {
34
                $fields->addFieldsToTab(
35
                    'Root.Preferences',
36
                    [
37
                        $localeField
38
                    ]
39
                );
40
            }
41
        }
42
        $description = _t(
43
            'Sunnysideup\CMSDarkTheme\Model\Extensions\DarkThemePreference.DarkModeSettingDescription',
44
            'Using a dark mode may reduce your electricity use. Please reload browser window to update your mode.'
45
        );
46
        $fields->addFieldsToTab(
47
            'Root.Preferences',
48
            [
49
                OptionsetField::create(
50
                    'DarkModeSetting',
51
                    $fieldLabels['DarkModeSetting'] ?? self::$field_labels['DarkModeSetting'],
52
                    $this->getOwner()->dbObject('DarkModeSetting')->enumValues()
53
                )
54
                    ->setDescription($description),
55
            ]
56
        );
57
        $preferencesName = _t('Sunnysideup\CMSDarkTheme\Model\Extensions\DarkThemePreference.PreferencesTabName', 'Preferences');
58
        $fields->findTab('Root.Preferences')->setTitle($preferencesName);
59
    }
60
}
61