%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/widgets/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/widgets/ShowMorePager.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2016 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\widgets;
use Yii;
use yii\helpers\Html;
use yii\web\JsExpression;
/**
* ShowMore ajax pager
*
* @inheritdoc
* @since 1.1.1
* @author luke
*/
class ShowMorePager extends \humhub\widgets\LinkPager
{
/**
* @var Pagination the pagination object that this pager is associated with.
* You must set this property in order to make LinkPager work.
*/
public $pagination;
/**
* AjaxButton widget options
*
* @see AjaxButton
* @var array
*/
public $ajaxButtonOptions = [];
/**
* @var string element id
*/
public $id = 'btnShowMore';
/**
* Initializes the pager.
*/
public function init()
{
if ($this->pagination === null) {
throw new InvalidConfigException('The "pagination" property must be set.');
}
if (!isset($this->ajaxButtonOptions['htmlOptions']['id'])) {
$this->ajaxButtonOptions['htmlOptions']['id'] = $this->id . '_btn';
}
if (!isset($this->ajaxButtonOptions['ajaxOptions']['type'])) {
$this->ajaxButtonOptions['ajaxOptions']['type'] = 'POST';
}
if (!isset($this->ajaxButtonOptions['ajaxOptions']['beforeSend'])) {
$this->ajaxButtonOptions['ajaxOptions']['beforeSend'] = new JsExpression('function(){ $("#' . $this->ajaxButtonOptions['htmlOptions']['id'] . '").remove(); $("#' . $this->id . '_loader").removeClass("hidden"); }');
}
if (!isset($this->ajaxButtonOptions['ajaxOptions']['success'])) {
$this->ajaxButtonOptions['ajaxOptions']['success'] = new JsExpression('function(html){ $("#globalModal").html(html); }');
}
if (!isset($this->ajaxButtonOptions['label'])) {
$this->ajaxButtonOptions['label'] = Yii::t('base', 'Show more');
}
if (!isset($this->ajaxButtonOptions['htmlOptions']['class'])) {
$this->ajaxButtonOptions['htmlOptions']['class'] = 'btn btn-default';
$this->ajaxButtonOptions['htmlOptions']['data-ui-loader'] = '1';
}
}
/**
* @inheritdoc
*/
public function run()
{
echo $this->renderMoreButton();
}
/**
* @inheritdoc
*/
protected function renderMoreButton()
{
$pageCount = $this->pagination->getPageCount();
$currentPage = $this->pagination->getPage() + 1;
if ($currentPage >= $pageCount) {
return '';
}
if (!isset($this->ajaxButtonOptions['ajaxOptions']['url'])) {
$this->ajaxButtonOptions['ajaxOptions']['url'] = $this->pagination->createUrl($currentPage);
}
$moreButton = AjaxButton::widget($this->ajaxButtonOptions);
return Html::tag('div', Html::tag('br') . $moreButton . LoaderWidget::widget(['id' => $this->id . '_loader', 'cssClass' => 'hidden']), ['id' => $this->id, 'class' => 'pagination-container']);
}
}