flattr: New plugin.
Thanks to jaywalk for the initial implementation at a flattr plugin! This one is less configurable, but simpler.master
parent
a68241838b
commit
80102c042d
|
@ -0,0 +1,97 @@
|
|||
#!/usr/bin/perl
|
||||
package IkiWiki::Plugin::flattr;
|
||||
|
||||
use warnings;
|
||||
use strict;
|
||||
use IkiWiki 3.00;
|
||||
|
||||
sub import {
|
||||
hook(type => "getsetup", id => "flattr", call => \&getsetup);
|
||||
hook(type => "preprocess", id => "flattr", call => \&preprocess);
|
||||
hook(type => "format", id => "flattr", call => \&format);
|
||||
}
|
||||
|
||||
sub getsetup () {
|
||||
return
|
||||
plugin => {
|
||||
safe => 1,
|
||||
rebuild => undef,
|
||||
},
|
||||
flattr_userid => {
|
||||
type => "string",
|
||||
example => 'joeyh',
|
||||
description => "userid or user name to use by default for Flattr buttons",
|
||||
advanced => 0,
|
||||
safe => 1,
|
||||
rebuild => undef,
|
||||
},
|
||||
}
|
||||
|
||||
my %flattr_pages;
|
||||
|
||||
sub preprocess (@) {
|
||||
my %params=@_;
|
||||
|
||||
$flattr_pages{$params{destpage}}=1;
|
||||
|
||||
my $url=$params{url};
|
||||
if (! defined $url) {
|
||||
$url=urlto($params{page}, "", 1);
|
||||
}
|
||||
|
||||
my @fields;
|
||||
foreach my $field (qw{language uid button hidden category tags}) {
|
||||
if (exists $params{$field}) {
|
||||
push @fields, "$field:$params{$field}";
|
||||
}
|
||||
}
|
||||
|
||||
return '<a class="FlattrButton" href="'.$url.'"'.
|
||||
(exists $params{title} ? ' title="'.$params{title}.'"' : '').
|
||||
' rev="flattr;'.join(';', @fields).';"'.
|
||||
'>'.
|
||||
(exists $params{description} ? $params{description} : '').
|
||||
'</a>';
|
||||
}
|
||||
|
||||
sub format (@) {
|
||||
my %params=@_;
|
||||
|
||||
# Add flattr's javascript to pages with flattr buttons.
|
||||
if ($flattr_pages{$params{page}}) {
|
||||
if (! ($params{content}=~s!^(<body[^>]*>)!$1.flattrjs()!em)) {
|
||||
# no <body> tag, probably in preview mode
|
||||
$params{content}=flattrjs().$params{content};
|
||||
}
|
||||
}
|
||||
return $params{content};
|
||||
}
|
||||
|
||||
my $js_cached;
|
||||
sub flattrjs {
|
||||
return $js_cached if defined $js_cached;
|
||||
|
||||
my $js_url='https://api.flattr.com/js/0.5.0/load.js?mode=auto';
|
||||
if (defined $config{flattr_userid}) {
|
||||
my $userid=$config{flattr_userid};
|
||||
$userid=~s/[^-A-Za-z0-9_]//g; # sanitize for inclusion in javascript
|
||||
$js_url.="&uid=$userid";
|
||||
}
|
||||
|
||||
# This is Flattr's standard javascript snippet to include their
|
||||
# external javascript file, asynchronously.
|
||||
return $js_cached=<<"EOF";
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
(function() {
|
||||
var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
|
||||
s.type = 'text/javascript';
|
||||
s.async = true;
|
||||
s.src = '$js_url';
|
||||
t.parentNode.insertBefore(s, t);
|
||||
})();//--><!]]>
|
||||
</script>
|
||||
EOF
|
||||
}
|
||||
|
||||
1
|
|
@ -2,6 +2,8 @@ ikiwiki (3.20100805) UNRELEASED; urgency=low
|
|||
|
||||
* filecheck: Fall back to using the file command if the freedesktop
|
||||
magic file cannot identify a file.
|
||||
* flattr: New plugin. (Thanks to jaywalk for the initial implementation
|
||||
at a flattr plugin! This one is less configurable, but simpler.)
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Mon, 09 Aug 2010 13:18:28 -0400
|
||||
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
The `flattr` directive is supplied by the [[!iki plugins/flattr desc=flattr]] plugin.
|
||||
|
||||
This directive allows easily inserting Flattr buttons onto wiki pages.
|
||||
|
||||
Flattr supports both static buttons and javascript buttons. This directive
|
||||
only creates dynamic javascript buttons. If you want to insert a static
|
||||
Flattr button, you can simply copy the html code for it from Flattr, instead.
|
||||
Note that this directive inserts javascript code into the page, that
|
||||
loads more javascript code from Flattr.com. So only use it if you feel
|
||||
comfortable with that.
|
||||
|
||||
The directive can be used to display a button for a thing you have already
|
||||
manually submitted to Flattr. In this mode, the only parameter you need to
|
||||
include is the exact url to the thing that was submitted to Flattr.
|
||||
(If the button is for the current page, you can leave that out.) For
|
||||
example, this is the Flattr button for ikiwiki. Feel free to add it to all
|
||||
your pages. ;)
|
||||
|
||||
\[[!flattr url="http://ikiwiki.info/" button=compact]]
|
||||
|
||||
The directive can also be used to create a button that automatically
|
||||
submits a page to Flattr when a user clicks on it. In this mode you
|
||||
need to include parameters to specify your uid, and a title, category, tags,
|
||||
and description for the page. For example, this is a Flattr button for
|
||||
a blog post:
|
||||
|
||||
\[[!flattr uid=25634 title="my new blog post" category=text
|
||||
tags="blog,example" description="This is a post on my blog."]]
|
||||
|
||||
Here are all possible parameters you can pass to the Flattr directive.
|
||||
|
||||
* `button` - Set to "compact" for a small button.
|
||||
* `url` - The url to the thing to be Flattr'd. If omitted, defaults
|
||||
to the url of the current page.
|
||||
* `uid` - Your numeric Flattr userid. Not needed if the flattr plugin
|
||||
has been configured with a global `flattr_userid`.
|
||||
* `title` - A short title for the thing, to show on its Flattr page.
|
||||
* `description` - A description of the thing, to show on its Flattr
|
||||
page.
|
||||
* `category` - One of: text, images, video, audio, software, rest.
|
||||
* `tags` - A list of tags separated by a comma.
|
||||
* `language` - A language code.
|
||||
* `hidden` - Set to 1 to hide the button from listings on Flattr.com.
|
||||
|
||||
[[!meta robots="noindex, follow"]]
|
|
@ -10,6 +10,9 @@ I wrote some notes on [jonatan.walck.se](http://jonatan.walck.se/software/ikiwik
|
|||
|
||||
This plugin is licensed under [CC0](http://creativecommons.org/publicdomain/zero/1.0/) (public domain).
|
||||
|
||||
Note that there is now a [[plugins/flattr]] plugin bundled with ikiwiki. It
|
||||
is less configurable, not supporting static buttons, but simpler to use.
|
||||
|
||||
# Usage #
|
||||
|
||||
# [[!flattr args]] where args are in the form of arg=value.
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
[[!template id=plugin name=flattr author="[[Joey]]"]]
|
||||
[[!tag type/web]]
|
||||
|
||||
[Flattr](http://flattr.com/) is a social micropayment platform.
|
||||
This plugin allows easily adding Flattr buttons to pages,
|
||||
using the [[ikiwiki/directive/flattr]] directive.
|
||||
|
||||
This plugin has a configuration setting. `flattr_userid` can be set
|
||||
to either your numeric flatter userid, or your flattr username.
|
|
@ -449,6 +449,10 @@ li.L8 { list-style: upper-alpha; }
|
|||
background: #ff9900;
|
||||
}
|
||||
|
||||
.FlattrButton {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* openid selector */
|
||||
#openid_choice {
|
||||
display: none;
|
||||
|
|
Loading…
Reference in New Issue