diff options
author | Matthieu Aubry <mattab@users.noreply.github.com> | 2016-09-22 12:47:00 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-22 12:47:00 +0300 |
commit | d7bb13ca855839084de7527c5ccc66b317489d75 (patch) | |
tree | 9bb2e028dca49973d4341b6ff3ac304598773991 /plugins/RssWidget | |
parent | a251989030ae17729f0c200e9c404fbec09dec1f (diff) |
Renamed plugin ExampleRssWidget -> RssWidget (#10528)
* Renamed plugin ExampleRssWidget -> RssWidget
* Activate file on upgrade to 3.0.0-b1
* Fix system test
Diffstat (limited to 'plugins/RssWidget')
-rw-r--r-- | plugins/RssWidget/RssRenderer.php | 84 | ||||
-rw-r--r-- | plugins/RssWidget/RssWidget.php | 38 | ||||
-rw-r--r-- | plugins/RssWidget/Widgets/RssChangelog.php | 49 | ||||
-rw-r--r-- | plugins/RssWidget/Widgets/RssPiwik.php | 47 | ||||
-rw-r--r-- | plugins/RssWidget/plugin.json | 15 | ||||
-rw-r--r-- | plugins/RssWidget/stylesheets/rss.less | 33 |
6 files changed, 266 insertions, 0 deletions
diff --git a/plugins/RssWidget/RssRenderer.php b/plugins/RssWidget/RssRenderer.php new file mode 100644 index 0000000000..51c831cd4c --- /dev/null +++ b/plugins/RssWidget/RssRenderer.php @@ -0,0 +1,84 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ + +namespace Piwik\Plugins\RssWidget; +use Piwik\Http; + +/** + * + */ +class RssRenderer +{ + protected $url = null; + protected $count = 3; + protected $showDescription = false; + protected $showContent = false; + + public function __construct($url) + { + $this->url = $url; + } + + public function showDescription($bool) + { + $this->showDescription = $bool; + } + + public function showContent($bool) + { + $this->showContent = $bool; + } + + public function setCountPosts($count) + { + $this->count = $count; + } + + public function get() + { + try { + $content = Http::fetchRemoteFile($this->url); + $rss = simplexml_load_string($content); + } catch (\Exception $e) { + echo "Error while importing feed: {$e->getMessage()}\n"; + exit; + } + + $output = '<div style="padding:10px 15px;"><ul class="rss">'; + $i = 0; + + $items = array(); + if (!empty($rss->channel->item)) { + $items = $rss->channel->item; + } + foreach ($items as $post) { + $title = $post->title; + $date = @strftime("%B %e, %Y", strtotime($post->pubDate)); + $link = $post->link; + + $output .= '<li><a class="rss-title" title="" target="_blank" href="?module=Proxy&action=redirect&url=' . $link . '">' . $title . '</a>' . + '<span class="rss-date">' . $date . '</span>'; + if ($this->showDescription) { + $output .= '<div class="rss-description">' . $post->description . '</div>'; + } + + if ($this->showContent) { + $output .= '<div class="rss-content">' . $post->content . '</div>'; + } + $output .= '</li>'; + + if (++$i == $this->count) { + break; + } + } + + $output .= '</ul></div>'; + return $output; + } +} diff --git a/plugins/RssWidget/RssWidget.php b/plugins/RssWidget/RssWidget.php new file mode 100644 index 0000000000..03f2af97d9 --- /dev/null +++ b/plugins/RssWidget/RssWidget.php @@ -0,0 +1,38 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\RssWidget; + +/** + * + */ +class RssWidget extends \Piwik\Plugin +{ + /** + * @see Piwik\Plugin::registerEvents + */ + public function registerEvents() + { + return array( + 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', + 'Request.getRenamedModuleAndAction' => 'renameExampleRssWidgetModule', + ); + } + + public function getStylesheetFiles(&$stylesheets) + { + $stylesheets[] = "plugins/RssWidget/stylesheets/rss.less"; + } + + public function renameExampleRssWidgetModule(&$module, &$action) + { + if ($module == 'ExampleRssWidget') { + $module = 'RssWidget'; + } + } +} diff --git a/plugins/RssWidget/Widgets/RssChangelog.php b/plugins/RssWidget/Widgets/RssChangelog.php new file mode 100644 index 0000000000..bdd02843ef --- /dev/null +++ b/plugins/RssWidget/Widgets/RssChangelog.php @@ -0,0 +1,49 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\RssWidget\Widgets; + +use Piwik\Piwik; +use Piwik\Widget\WidgetConfig; +use Piwik\Plugins\RssWidget\RssRenderer; + +class RssChangelog extends \Piwik\Widget\Widget +{ + public static function configure(WidgetConfig $config) + { + $config->setCategoryId('About Piwik'); + $config->setName('Piwik Changelog'); + } + + public function render() + { + try { + $rss = new RssRenderer('http://feeds.feedburner.com/PiwikReleases'); + $rss->setCountPosts(1); + $rss->showDescription(true); + $rss->showContent(false); + + return $rss->get(); + + } catch (\Exception $e) { + + return $this->error($e); + } + } + + /** + * @param \Exception $e + * @return string + */ + private function error($e) + { + return '<div class="pk-emptyDataTable">' + . Piwik::translate('General_ErrorRequest', array('', '')) + . ' - ' . $e->getMessage() . '</div>'; + } +} diff --git a/plugins/RssWidget/Widgets/RssPiwik.php b/plugins/RssWidget/Widgets/RssPiwik.php new file mode 100644 index 0000000000..41ee915292 --- /dev/null +++ b/plugins/RssWidget/Widgets/RssPiwik.php @@ -0,0 +1,47 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\RssWidget\Widgets; + +use Piwik\Piwik; +use Piwik\Widget\WidgetConfig; +use Piwik\Plugins\RssWidget\RssRenderer; + +class RssPiwik extends \Piwik\Widget\Widget +{ + public static function configure(WidgetConfig $config) + { + $config->setCategoryId('About Piwik'); + $config->setName('Piwik.org Blog'); + } + + public function render() + { + try { + $rss = new RssRenderer('http://feeds.feedburner.com/Piwik'); + $rss->showDescription(true); + + return $rss->get(); + + } catch (\Exception $e) { + + return $this->error($e); + } + } + + /** + * @param \Exception $e + * @return string + */ + private function error($e) + { + return '<div class="pk-emptyDataTable">' + . Piwik::translate('General_ErrorRequest', array('', '')) + . ' - ' . $e->getMessage() . '</div>'; + } +} diff --git a/plugins/RssWidget/plugin.json b/plugins/RssWidget/plugin.json new file mode 100644 index 0000000000..ba44ad733c --- /dev/null +++ b/plugins/RssWidget/plugin.json @@ -0,0 +1,15 @@ +{ + "name": "RssWidget", + "description": "Piwik Platform showcase: how to create a new widget that displays a user submitted RSS feed.", + "version": "1.0", + "keywords": ["example", "feed", "widget"], + "homepage": "http://piwik.org", + "license": "GPL v3+", + "authors": [ + { + "name": "Piwik", + "email": "hello@piwik.org", + "homepage": "http://piwik.org" + } + ] +}
\ No newline at end of file diff --git a/plugins/RssWidget/stylesheets/rss.less b/plugins/RssWidget/stylesheets/rss.less new file mode 100644 index 0000000000..11f4d9dbbe --- /dev/null +++ b/plugins/RssWidget/stylesheets/rss.less @@ -0,0 +1,33 @@ +.rss ul { + list-style: none outside none; + padding: 0; +} + +.rss li { + line-height: 140%; + margin: 0.5em 0 1em; +} + +.rss-title, .rss-date { + float: left; + font-size: 14px; + line-height: 140%; +} + +.rss-title { + color: #2583AD; + margin: 0 0.5em 0.2em 0; + font-weight: bold; +} + +.rss-date { + color: #999999; + margin: 0; +} + +.rss-content, .rss-description { + clear: both; + line-height: 1.5em; + font-size: 13px; + color: #333333; +} |