Passed
Push — master ( 081522...a52e1b )
by Thomas
04:24
created

CustomAction::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 3
dl 0
loc 6
rs 10
1
<?php
2
3
namespace LeKoala\CmsActions;
4
5
use SilverStripe\Forms\FormAction;
6
use SilverStripe\Core\Convert;
7
8
/**
9
 * Custom actions to use in getCMSActions
10
 *
11
 * Actions handlers are declared on the DataObject itself
12
 *
13
 * Because it is an action, it will be submitted through ajax
14
 * If you want to create links that open files or show a new page, use CustomLink
15
 */
16
class CustomAction extends FormAction
17
{
18
    use CustomButton;
19
20
    /**
21
     * @var boolean
22
     */
23
    public $useButtonTag = true;
24
25
    /**
26
     * Used in ActionsGridFieldItemRequest::forwardActionToRecord
27
     * @var boolean
28
     */
29
    protected $shouldRefresh = false;
30
31
    public function __construct($name, $title, $form = null)
32
    {
33
        // Actually, an array works just fine!
34
        $name = 'doCustomAction[' . $name . ']';
35
36
        parent::__construct($name, $title, $form);
37
    }
38
39
    public function actionName()
40
    {
41
        return rtrim(str_replace('action_doCustomAction[', '', $this->name), ']');
42
    }
43
44
    public function Type()
45
    {
46
        return 'action';
47
    }
48
49
    public function Field($properties = array())
50
    {
51
        if ($this->buttonIcon) {
52
            $this->buttonContent = $this->getButtonTitle();
53
        }
54
        // Note: type should stay "action" to properly submit
55
        $this->addExtraClass('custom-action');
56
        if ($this->confirmation) {
57
            $this->setAttribute('data-message', Convert::raw2htmlatt($this->confirmation));
58
            $this->setAttribute('onclick', 'return confirm(this.dataset.message);return false;');
59
        }
60
        return parent::Field($properties);
61
    }
62
63
    /**
64
     * Get the value of shouldRefresh
65
     * @return mixed
66
     */
67
    public function getShouldRefresh()
68
    {
69
        return $this->shouldRefresh;
70
    }
71
72
    /**
73
     * Set the value of shouldRefresh
74
     *
75
     * @param mixed $shouldRefresh
76
     * @return $this
77
     */
78
    public function setShouldRefresh($shouldRefresh)
79
    {
80
        $this->shouldRefresh = $shouldRefresh;
81
        return $this;
82
    }
83
}
84