123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Backend\Block\Widget;
- /**
- * Button widget
- *
- * @api
- * @author Magento Core Team <core@magentocommerce.com>
- * @api
- * @since 100.0.2
- */
- class Button extends \Magento\Backend\Block\Widget
- {
- /**
- * Define block template
- *
- * @return void
- */
- protected function _construct()
- {
- $this->setTemplate('Magento_Backend::widget/button.phtml');
- parent::_construct();
- }
- /**
- * Retrieve button type
- *
- * @return string
- */
- public function getType()
- {
- if (in_array($this->getData('type'), ['reset', 'submit'])) {
- return $this->getData('type');
- }
- return 'button';
- }
- /**
- * Retrieve onclick handler
- *
- * @return null|string
- */
- public function getOnClick()
- {
- return $this->getData('on_click') ?: $this->getData('onclick');
- }
- /**
- * Retrieve attributes html
- *
- * @return string
- */
- public function getAttributesHtml()
- {
- $disabled = $this->getDisabled() ? 'disabled' : '';
- $title = $this->getTitle();
- if (!$title) {
- $title = $this->getLabel();
- }
- $classes = [];
- $classes[] = 'action-default';
- $classes[] = 'scalable';
- if ($this->getClass()) {
- $classes[] = $this->getClass();
- }
- if ($disabled) {
- $classes[] = $disabled;
- }
- return $this->_attributesToHtml($this->_prepareAttributes($title, $classes, $disabled));
- }
- /**
- * Prepare attributes
- *
- * @param string $title
- * @param array $classes
- * @param string $disabled
- * @return array
- */
- protected function _prepareAttributes($title, $classes, $disabled)
- {
- $attributes = [
- 'id' => $this->getId(),
- 'name' => $this->getElementName(),
- 'title' => $title,
- 'type' => $this->getType(),
- 'class' => join(' ', $classes),
- 'onclick' => $this->getOnClick(),
- 'style' => $this->getStyle(),
- 'value' => $this->getValue(),
- 'disabled' => $disabled,
- ];
- if ($this->getDataAttribute()) {
- foreach ($this->getDataAttribute() as $key => $attr) {
- $attributes['data-' . $key] = is_scalar($attr) ? $attr : json_encode($attr);
- }
- }
- return $attributes;
- }
- /**
- * Attributes list to html
- *
- * @param array $attributes
- * @return string
- */
- protected function _attributesToHtml($attributes)
- {
- $html = '';
- foreach ($attributes as $attributeKey => $attributeValue) {
- if ($attributeValue === null || $attributeValue == '') {
- continue;
- }
- $html .= $attributeKey . '="' . $this->escapeHtmlAttr($attributeValue, false) . '" ';
- }
- return $html;
- }
- }
|