Added Flattr to feeds (issue #11)

This commit is contained in:
Matthias Gutjahr 2012-08-02 23:02:44 +02:00
parent 887b85cfac
commit 02965f1adf
4 changed files with 53 additions and 3 deletions

View file

@ -20,6 +20,7 @@
@define('PLUGIN_FLATTR_DSC', 'Flattr-Beschreibung (standardmäßig Artikeltext)');
@define('PLUGIN_FLATTR_TAG', 'Flattr-Schlagwörter (standardmäßig vom Artikel-Tags-Plugin, falls verwendet)');
@define('PLUGIN_FLATTR_POPOUT', 'Popout anzeigen, wenn die Maus über den Flattr-Button fährt');
@define('PLUGIN_FLATTR_ADD_TO_FEED', 'Flattr-Button zum RSS-/ATOM-Feed hinzufügen?');
@define('PLUGIN_FLATTR_ACTIVE', 'Flattr aktivieren');

View file

@ -19,8 +19,9 @@
@define('PLUGIN_FLATTR_LANG', 'Flattr-Sprache');
@define('PLUGIN_FLATTR_DSC', 'Flattr-Beschreibung (standardmäßig Artikeltext)');
@define('PLUGIN_FLATTR_TAG', 'Flattr-Schlagwörter (standardmäßig vom Artikel-Tags-Plugin, falls verwendet)');
@define('PLUGIN_FLATTR_ADD_TO_FEED', 'Flattr-Button zum RSS-/ATOM-Feed hinzufügen?');
@define('PLUGIN_FLATTR_ACTIVE', 'Flattr aktivieren');
// Next lines were translated on 2011/11/22
@define('PLUGIN_FLATTR_BUTTON_DESC', 'Wird etwas anderes als "default" oder "compact" eingetragen, dann wird dieser Text für den Button verwendet. Z.B. kann hier "Klicke hier um zu Flattern" eingetragen werden.');
@define('PLUGIN_FLATTR_BUTTON_DESC', 'Wird etwas anderes als "default" oder "compact" eingetragen, dann wird dieser Text für den Button verwendet. Z.B. kann hier "Klicke hier um zu Flattern" eingetragen werden.');

View file

@ -15,6 +15,7 @@
@define('PLUGIN_FLATTR_DSC', 'Flattr posting description (defaults to entry body)');
@define('PLUGIN_FLATTR_TAG', 'Flattr posting tags (defaults to freetag plugin, if used)');
@define('PLUGIN_FLATTR_POPOUT', 'Show popout when hovering mouse over Flattr button');
@define('PLUGIN_FLATTR_ADD_TO_FEED', 'Add Flattr button to RSS-/ATOM-Feed?');
@define('PLUGIN_FLATTR_ACTIVE', 'Enable flattr');

View file

@ -40,6 +40,11 @@ class serendipity_event_flattr extends serendipity_event {
'backend_publish' => true,
'backend_save' => true,
'frontend_header' => true,
'frontend_display:rss-2.0:per_entry' => true,
'frontend_display:rss-2.0:namespace' => true,
'frontend_display:rss-1.0:per_entry' => true,
'frontend_display:rss-1.0:namespace' => true,
'frontend_display:atom-1.0:per_entry' => true,
);
$propbag->add('name', PLUGIN_FLATTR_NAME);
$propbag->add('description', PLUGIN_FLATTR_DESC);
@ -52,6 +57,7 @@ class serendipity_event_flattr extends serendipity_event {
'flattr_cat',
'flattr_lng',
'flattr_pop',
'add_to_feed',
));
$propbag->add('author', 'Garvin Hicking, Joachim Breitner', 'Matthias Gutjahr');
$propbag->add('version', '1.10');
@ -211,6 +217,13 @@ class serendipity_event_flattr extends serendipity_event {
$propbag->add('description', '');
$propbag->add('default', false);
break;
case 'add_to_feed':
$propbag->add('type', 'boolean');
$propbag->add('name', PLUGIN_FLATTR_ADD_TO_FEED);
$propbag->add('description', '');
$propbag->add('default', false);
break;
}
return true;
@ -223,7 +236,7 @@ class serendipity_event_flattr extends serendipity_event {
* @param mixed $addData
* @return bool
*/
function event_hook($event, &$bag, &$eventData, $addData = null) {
function event_hook($event, &$bag, &$eventData, &$addData) {
global $serendipity;
switch ($event) {
@ -404,6 +417,40 @@ class serendipity_event_flattr extends serendipity_event {
}
break;
}
case 'frontend_display:rss-1.0:namespace':
case 'frontend_display:rss-2.0:namespace':
if ($this->get_config('add_to_feed')) {
$eventData['display_dat'] .= '
xmlns:atom="http://www.w3.org/2005/Atom"';
}
return true;
break;
case 'frontend_display:rss-1.0:per_entry':
case 'frontend_display:rss-2.0:per_entry':
if ($this->get_config('add_to_feed')) {
$flattr_uid = $this->_addslashes($this->get_config('userid'));
$flattr_uid = substr($flattr_uid, 0, 500);
$flattr_url = $this->_addslashes(serendipity_archiveURL($eventData['id'], $eventData['title'], 'baseURL', true, array('timestamp' => $eventData['timestamp'])));
$flattr_url = substr($flattr_url, 0, 2048);
$eventData['display_dat'] .= '
<atom:link rel="payment" href="https://flattr.com/submit/auto?url=' . urlencode($flattr_url) . '&amp;user_id=' . $flattr_uid . '" type="text/html" />';
}
return true;
break;
case 'frontend_display:atom-1.0:per_entry':
if ($this->get_config('add_to_feed')) {
$flattr_uid = $this->_addslashes($this->get_config('userid'));
$flattr_uid = substr($flattr_uid, 0, 500);
$flattr_url = $this->_addslashes(serendipity_archiveURL($eventData['id'], $eventData['title'], 'baseURL', true, array('timestamp' => $eventData['timestamp'])));
$flattr_url = substr($flattr_url, 0, 2048);
$eventData['display_dat'] .= '
<link rel="payment" href="https://flattr.com/submit/auto?url=' . $flattr_url . '&amp;user_id=' . $flattr_uid . '" type="text/html" />';
}
return true;
break;
}
}
}