1 <?php
  2 
  3 /**
  4  * @package redaxo\core\form
  5  */
  6 class rex_form_control_element extends rex_form_element
  7 {
  8     private $saveElement;
  9     private $applyElement;
 10     private $deleteElement;
 11     private $resetElement;
 12     private $abortElement;
 13 
 14     public function __construct(rex_form_base $table, rex_form_element $saveElement = null, rex_form_element $applyElement = null, rex_form_element $deleteElement = null, rex_form_element $resetElement = null, rex_form_element $abortElement = null)
 15     {
 16         parent::__construct('', $table);
 17 
 18         $this->saveElement = $saveElement;
 19         $this->applyElement = $applyElement;
 20         $this->deleteElement = $deleteElement;
 21         $this->resetElement = $resetElement;
 22         $this->abortElement = $abortElement;
 23     }
 24 
 25     protected function _get()
 26     {
 27         $s = '';
 28         $elements = [];
 29 
 30         if ($this->saveElement) {
 31             if (!$this->saveElement->hasAttribute('class')) {
 32                 $this->saveElement->setAttribute('class', 'btn btn-save rex-form-aligned');
 33             }
 34 
 35             $e = [];
 36             $e['class'] = $this->saveElement->formatClass();
 37             $e['field'] = $this->saveElement->formatElement();
 38             $elements[] = $e;
 39         }
 40 
 41         if ($this->applyElement) {
 42             if (!$this->applyElement->hasAttribute('class')) {
 43                 $this->applyElement->setAttribute('class', 'btn btn-apply');
 44             }
 45 
 46             $e = [];
 47             $e['class'] = $this->applyElement->formatClass();
 48             $e['field'] = $this->applyElement->formatElement();
 49             $elements[] = $e;
 50         }
 51 
 52         if ($this->abortElement) {
 53             if (!$this->abortElement->hasAttribute('class')) {
 54                 $this->abortElement->setAttribute('class', 'btn btn-abort');
 55             }
 56 
 57             $e = [];
 58             $e['class'] = $this->abortElement->formatClass();
 59             $e['field'] = $this->abortElement->formatElement();
 60             $elements[] = $e;
 61         }
 62 
 63         if ($this->deleteElement) {
 64             if (!$this->deleteElement->hasAttribute('class')) {
 65                 $this->deleteElement->setAttribute('class', 'btn btn-delete');
 66             }
 67 
 68             if (!$this->deleteElement->hasAttribute('onclick')) {
 69                 $this->deleteElement->setAttribute('data-confirm', rex_i18n::msg('form_delete') . '?');
 70             }
 71 
 72             $e = [];
 73             $e['class'] = $this->deleteElement->formatClass();
 74             $e['field'] = $this->deleteElement->formatElement();
 75             $elements[] = $e;
 76         }
 77 
 78         if ($this->resetElement) {
 79             if (!$this->resetElement->hasAttribute('class')) {
 80                 $this->resetElement->setAttribute('class', 'btn btn-reset');
 81             }
 82 
 83             if (!$this->resetElement->hasAttribute('onclick')) {
 84                 $this->resetElement->setAttribute('data-confirm', rex_i18n::msg('form_reset') . '?');
 85             }
 86 
 87             $e = [];
 88             $e['class'] = $this->resetElement->formatClass();
 89             $e['field'] = $this->resetElement->formatElement();
 90             $elements[] = $e;
 91         }
 92 
 93         if (count($elements) > 0) {
 94             $fragment = new rex_fragment();
 95             $fragment->setVar('elements', $elements, false);
 96             $s = $fragment->parse('core/form/submit.php');
 97         }
 98 
 99         return $s;
100     }
101 
102     public function submitted($element)
103     {
104         return is_object($element) && rex_post($element->getAttribute('name'), 'string') != '';
105     }
106 
107     public function saved()
108     {
109         return $this->submitted($this->saveElement);
110     }
111 
112     public function applied()
113     {
114         return $this->submitted($this->applyElement);
115     }
116 
117     public function deleted()
118     {
119         return $this->submitted($this->deleteElement);
120     }
121 
122     public function resetted()
123     {
124         return $this->submitted($this->resetElement);
125     }
126 
127     public function aborted()
128     {
129         return $this->submitted($this->abortElement);
130     }
131 }
132