%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/widgets/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/widgets/Button.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2017 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences * */ namespace humhub\widgets; use humhub\libs\Html; use Yii; use yii\helpers\Url; /** * Helper class for creating buttons. * * e.g: * * `<?= Button::primary('Some Text')->actionClick('myHandler', [/some/url])->sm() ?>` * * @package humhub\widgets */ class Button extends BootstrapComponent { public $_loader = true; public $_link = false; /** * @param string $text Button text * @return static */ public static function save($text = null) { if (!$text) { $text = Yii::t('base', 'Save'); } return self::primary($text); } /** * @param string $text Button text * @param string $href * @return static */ public static function asLink($text = null, $href = '#') { return self::none($text)->link($href); } /** * @param string $text Button text * @return static * @throws \Exception */ public static function back($url, $text = null) { if (!$text) { $text = Yii::t('base', 'Back'); } return self::defaultType($text)->link($url)->icon('back')->right()->loader(true)->sm(); } public static function userPickerSelfSelect($selector, $text = null) { if (!$text) { $text = Yii::t('base', 'Select Me'); } return self::asLink($text)->action('selectSelf', null, $selector)->icon('fa-check-circle-o')->right()->cssClass('input-field-addon'); } /** * @param bool $active * @return $this */ public function loader($active = true) { $this->_loader = $active; return $this; } /** * @param null $url * @return $this */ public function link($url = null, $pjax = true) { $this->_link = true; if (!$this->type || $this->type == self::TYPE_NONE) { $this->loader(false); } $this->htmlOptions['href'] = Url::to($url); $this->pjax($pjax); return $this; } /** * @param null $url * @param bool $pjax * @return |null */ public function getHref() { return isset($this->htmlOptions['href']) ? $this->htmlOptions['href'] : null; } /** * If set to false the [data-pjax-prevent] flag is attached to the link. * @param bool $pjax * @return $this */ public function pjax($pjax = true) { if (!$pjax) { Html::addPjaxPrevention($this->htmlOptions); } return $this; } /** * @return bool * @since 1.4 */ public function isPjaxEnabled() { return Html::isPjaxEnabled($this->htmlOptions); } /** * @return $this */ public function submit() { $this->htmlOptions['type'] = 'submit'; return $this; } /** * Adds a data-action-click handler to the button. * @param $handler * @param null $url * @param null $target * @return static */ public function action($handler, $url = null, $target = null) { return $this->onAction('click', $handler, $url, $target); } /** * Adds a data-action-* handler to the button. * * @param $event * @param $handler * @param null $url * @param null $target * @return $this */ public function onAction($event, $handler, $url = null, $target = null) { $this->htmlOptions['data-action-'.$event] = $handler; if ($url) { $this->htmlOptions['data-action-'.$event.'-url'] = Url::to($url); } if ($target) { $this->htmlOptions['data-action-'.$event.'-target'] = $target; } return $this; } /** * Adds a confirmation behaviour to the button. * * @param null $title * @param null $body * @param null $confirmButtonText * @param null $cancelButtonText * @return $this */ public function confirm($title = null, $body = null, $confirmButtonText = null, $cancelButtonText = null) { if ($title) { $this->htmlOptions['data-action-confirm-header'] = $title; } if ($body) { $this->htmlOptions['data-action-confirm'] = $body; } else { $this->htmlOptions['data-action-confirm'] = ''; } if ($confirmButtonText) { $this->htmlOptions['data-action-confirm-text'] = $confirmButtonText; } if ($cancelButtonText) { $this->htmlOptions['data-action-cancel-text'] = $cancelButtonText; } return $this; } /** * @return string renders and returns the actual html element by means of the current settings */ public function renderComponent() { if ($this->_loader) { $this->htmlOptions['data-ui-loader'] = ''; } // Workaround since data-method handler prevents confirm or other action handlers from being executed. if(isset($this->htmlOptions['data-action-confirm']) && isset($this->htmlOptions['data-method'])) { $method = $this->htmlOptions['data-method']; $this->htmlOptions['data-method'] = null; $this->htmlOptions['data-action-method'] = $method; } if ($this->text === null && $this->_icon !== null) { $this->htmlOptions['class'] .= ' btn-icon-only'; } if ($this->_link) { $href = isset($this->htmlOptions['href']) ? $this->htmlOptions['href'] : null; return Html::a($this->getText(), $href, $this->htmlOptions); } else { return Html::button($this->getText(), $this->htmlOptions); } } public function getWidgetOptions() { $options = parent::getWidgetOptions(); $options['_link'] = $this->_link; $options['_loader'] = $this->_loader; return $options; } /** * @inheritdoc */ public function getComponentBaseClass() { return 'btn'; } /** * @inheritdoc */ public function getTypedClass($type) { return 'btn-'.$type; } }