Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
124 lines (106 sloc) 2.48 KB
<?php
/**
* @link https://craftcms.com/
* @copyright Copyright (c) Pixel & Tonic, Inc.
* @license https://craftcms.github.io/license/
*/
namespace craft\widgets;
use Craft;
use craft\base\Widget;
use craft\helpers\Json;
use craft\web\assets\feed\FeedAsset;
/**
* Feed represents a Feed dashboard widget.
*
* @author Pixel & Tonic, Inc. <support@pixelandtonic.com>
* @since 3.0
*/
class Feed extends Widget
{
// Static
// =========================================================================
/**
* @inheritdoc
*/
public static function displayName(): string
{
return Craft::t('app', 'Feed');
}
/**
* @inheritdoc
*/
public static function iconPath()
{
return Craft::getAlias('@app/icons/feed.svg');
}
// Properties
// =========================================================================
/**
* @var string|null The feed URL
*/
public $url;
/**
* @var string|null The feed title
*/
public $title;
/**
* @var int The maximum number of feed items to display
*/
public $limit;
// Public Methods
// =========================================================================
/**
* @inheritdoc
*/
public function init()
{
parent::init();
if (!$this->limit) {
$this->limit = 5;
}
}
/**
* @inheritdoc
*/
public function rules()
{
$rules = parent::rules();
$rules[] = [['url', 'title'], 'required'];
$rules[] = [['url'], 'url'];
$rules[] = [['limit'], 'integer', 'min' => 1];
return $rules;
}
/**
* @inheritdoc
*/
public function getSettingsHtml()
{
return Craft::$app->getView()->renderTemplate('_components/widgets/Feed/settings',
[
'widget' => $this
]);
}
/**
* @inheritdoc
*/
public function getTitle(): string
{
return $this->title;
}
/**
* @inheritdoc
*/
public function getBodyHtml()
{
$view = Craft::$app->getView();
$view->registerAssetBundle(FeedAsset::class);
$view->registerJs(
"new Craft.FeedWidget({$this->id}, " .
Json::encode($this->url) . ', ' .
Json::encode($this->limit) . ');'
);
return Craft::$app->getView()->renderTemplate('_components/widgets/Feed/body', [
'limit' => $this->limit
]);
}
}
You can’t perform that action at this time.