%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/widgets/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/widgets/AjaxButton.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2015 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\widgets;
use yii\base\Widget;
use yii\helpers\Html;
use yii\helpers\Url;
use yii\helpers\Json;
use yii\web\JsExpression;
/**
* AjaxButton is an replacement for Yii1 CHtml::AjaxButton
*
* @author luke
*/
class AjaxButton extends Widget
{
public $beforeSend;
public $success;
public $ajaxOptions = [];
public $htmlOptions = [];
public $label = 'Unnamed';
public $tag = 'button';
public function init()
{
if (!isset($this->htmlOptions['id'])) {
$this->htmlOptions['id'] = $this->getId();
}
if (!isset($this->ajaxOptions['type'])) {
$this->ajaxOptions['type'] = new JsExpression('$(this).parents("form").attr("method")');
}
if (!isset($this->ajaxOptions['url'])) {
$this->ajaxOptions['url'] = new JsExpression('$(this).parents("form").attr("action")');
} else {
$this->ajaxOptions['url'] = Url::to($this->ajaxOptions['url']);
}
if (!isset($this->ajaxOptions['data']) && isset($this->ajaxOptions['type'])) {
$this->ajaxOptions['data'] = new JsExpression("$('#{$this->htmlOptions['id']}').closest('form').serialize()");
}
if (isset($this->ajaxOptions['beforeSend']) && !$this->ajaxOptions['beforeSend'] instanceof JsExpression) {
$this->ajaxOptions['beforeSend'] = new JsExpression($this->ajaxOptions['beforeSend']);
}
if (isset($this->ajaxOptions['success']) && !$this->ajaxOptions['success'] instanceof JsExpression) {
$this->ajaxOptions['success'] = new JsExpression($this->ajaxOptions['success']);
}
}
public function run()
{
echo Html::tag($this->tag, $this->label, $this->htmlOptions);
if (isset($this->htmlOptions['return']) && $this->htmlOptions['return']) {
$return = 'return true';
} else {
$return = 'return false';
}
$this->view->registerJs("$('#{$this->htmlOptions['id']}').click(function(evt) {
$.ajax(" . Json::encode($this->ajaxOptions) . ");
{$return};
});");
}
}