%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/stream/widgets/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/stream/widgets/StreamViewer.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2017 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\modules\stream\widgets;
use Yii;
use yii\base\InvalidConfigException;
use yii\helpers\Url;
use humhub\modules\topic\models\Topic;
use humhub\widgets\JsWidget;
use humhub\modules\content\components\ContentContainerActiveRecord;
/**
* Stream View Widget creates a stream.
*
* @since 1.2
*/
class StreamViewer extends JsWidget
{
/**
* @var ContentContainerActiveRecord the content container if this stream belongs to one (optional)
*/
public $contentContainer;
/**
* @var string the path to Stream Action to use
*/
public $streamAction = "";
/**
* @since 1.1
* @var array additional Params to add to Stream Action URL
*/
public $streamActionParams = [];
/**
* @var string definition of stream filter navigation widget class
*/
public $streamFilterNavigation = WallStreamFilterNavigation::class;
/**
* @var array list of active filters filters to show this will be set as [[StreamFilter::definition]] when rendering the filter navigation
*/
public $filters = [];
/**
* Show default wall filters
*
* @var boolean
*/
public $showFilters = true;
/**
* @var string the message when stream is empty and filters are active
*/
public $messageStreamEmptyWithFilters = "";
/**
*
* @var string the CSS Class(es) for empty stream error with enabled filters
*/
public $messageStreamEmptyWithFiltersCss = "";
/**
* @var string the message when stream is empty
*/
public $messageStreamEmpty = "";
/**
* @var string the CSS Class(es) for message when stream is empty
*/
public $messageStreamEmptyCss = "";
/**
* @inheritdoc
*/
public $jsWidget = 'stream.wall.WallStream';
/**
* @var string stream view
* @since 1.3
*/
public $view = '@stream/widgets/views/wallStream';
/**
* @inheritdoc
*/
public $id = 'wallStream';
/**
* @inheritdoc
*/
public $init = true;
/**
* @inheritdoc
* @throws InvalidConfigException
*/
public function init()
{
parent::init();
// Setup default messages
if ($this->messageStreamEmpty == "") {
$this->messageStreamEmpty = Yii::t('ContentModule.base', 'Nothing here yet!');
}
if ($this->messageStreamEmptyWithFilters == "") {
$this->messageStreamEmptyWithFilters = Yii::t('ContentModule.base', 'No matches with your selected filters!');
}
}
public function getData()
{
$result = [
'content-delete-url' => Url::to(['/content/content/delete']),
'stream' => $this->getStreamUrl(),
'stream-empty-message' => $this->messageStreamEmpty,
'stream-empty-class' => $this->messageStreamEmptyCss,
'stream-empty-filter-message' => $this->messageStreamEmptyWithFilters,
'stream-empty-filter-class' => $this->messageStreamEmptyWithFiltersCss
];
$contentId = (int) Yii::$app->request->getQueryParam('contentId');
if ($contentId > 0) {
$result['stream-contentid'] = $contentId;
}
$commentId = (int) Yii::$app->request->getQueryParam('commentId');
if ($commentId > 0) {
$result['stream-commentid'] = $commentId;
}
$topicId = (int) Yii::$app->request->getQueryParam('topicId');
if ($topicId > 0 && $topic = Topic::findOne($topicId)) {
$result['stream-topic'] = ['id' => $topic->id, 'name' => $topic->name];
}
return $result;
}
/**
* Creates url to stream BaseStreamAction including placeholders
* which are replaced and handled by javascript.
*
* If a contentContainer is specified it will be used to create the url.
*
* @return string
*/
protected function getStreamUrl()
{
if ($this->contentContainer) {
return $this->contentContainer->createUrl($this->streamAction, $this->streamActionParams);
} else {
$params = $this->streamActionParams;
array_unshift($params, $this->streamAction);
return Url::to($params);
}
}
/**
* @inheritdoc
* @throws InvalidConfigException
*/
public function run()
{
if (empty($this->streamAction)) {
throw new InvalidConfigException('You need to set the streamAction attribute to use this widget!');
}
$filterNav = ($this->showFilters && !empty($this->streamFilterNavigation))
? call_user_func($this->streamFilterNavigation.'::widget', [
'definition' => $this->filters,
'componentId' => $this->getId(true)
])
: '';
return $this->render($this->view, [
'filterNav' => $filterNav,
'contentContainer' => $this->contentContainer,
'options' => $this->getOptions(),
]);
}
}