From 5bbbdbecbbe1e68b65baf35c3d8b8a371c9341b2 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 6 Aug 2010 08:12:11 +0000 Subject: update docs for new version --- doc/plugins/contrib/ymlfront.mdwn | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'doc/plugins/contrib') diff --git a/doc/plugins/contrib/ymlfront.mdwn b/doc/plugins/contrib/ymlfront.mdwn index 6dd8ed532..a2c649044 100644 --- a/doc/plugins/contrib/ymlfront.mdwn +++ b/doc/plugins/contrib/ymlfront.mdwn @@ -13,18 +13,21 @@ IkiWiki::Plugin::ymlfront - add YAML-format data to a page ## DESCRIPTION This plugin provides a way of adding arbitrary meta-data (data fields) to any -page by prefixing the page with a YAML-format document. This provides a way to -create per-page structured data, where each page is treated like a record, and -the structured data are fields in that record. This can include the meta-data -for that page, such as the page title. +page by prefixing the page with a YAML-format document. This also provides +the [[ikiwiki/directive/ymlfront]] directive, which enables one to put +YAML-formatted data inside a standard IkiWiki [[ikiwiki/directive]]. + +This is a way to create per-page structured data, where each page is +treated like a record, and the structured data are fields in that record. This +can include the meta-data for that page, such as the page title. This plugin is meant to be used in conjunction with the [[field]] plugin. ## DETAILS -The YAML-format data in a page must be placed at the start of the page -and delimited by lines containing precisely three dashes. The "normal" -content of the page then follows. +If one is not using the ymlfront directive, the YAML-format data in a page +must be placed at the start of the page and delimited by lines containing +precisely three dashes. The "normal" content of the page then follows. For example: @@ -42,7 +45,7 @@ That will be htmlized using the page-type of the page-file. ### Accessing the Data -There are a few ways to access the data given in the YAML section. +There are a few ways to access the given YAML data. * [[getfield]] plugin -- cgit v1.2.3 From f78357348a028fe97037429f4712d511d2921b14 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 6 Aug 2010 08:13:48 +0000 Subject: ymlfront now provides a ymlfront directive --- doc/plugins/contrib/ikiwiki/directive/ymlfront.mdwn | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 doc/plugins/contrib/ikiwiki/directive/ymlfront.mdwn (limited to 'doc/plugins/contrib') diff --git a/doc/plugins/contrib/ikiwiki/directive/ymlfront.mdwn b/doc/plugins/contrib/ikiwiki/directive/ymlfront.mdwn new file mode 100644 index 000000000..bb4a58fc6 --- /dev/null +++ b/doc/plugins/contrib/ikiwiki/directive/ymlfront.mdwn @@ -0,0 +1,17 @@ +The `ymlfront` directive is supplied by the [[!iki plugins/contrib/ymlfront desc=ymlfront]] plugin. + +This directive allows the user to define arbitrary meta-data in YAML format. + + \[[!ymlfront data=""" + foo: fooness + bar: The Royal Pigeon + baz: 2 + """]] + +There is one argument to this directive. + +* **data:** + The YAML-format data. This should be enclosed inside triple-quotes to preserve the data correctly. + +If more than one ymlfront directive is given per page, the result is undefined. +Likewise, it is inadvisable to try to mix the "---" ymlfront format with the directive form of the data. -- cgit v1.2.3 From 0497b6379285df3c505c701ddfc9886922e85054 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 6 Aug 2010 08:19:06 +0000 Subject: Should I remove the old ymlfront format now that it recognises directives? --- doc/plugins/contrib/ymlfront/discussion.mdwn | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) (limited to 'doc/plugins/contrib') diff --git a/doc/plugins/contrib/ymlfront/discussion.mdwn b/doc/plugins/contrib/ymlfront/discussion.mdwn index b5c08fedd..3f7f0a337 100644 --- a/doc/plugins/contrib/ymlfront/discussion.mdwn +++ b/doc/plugins/contrib/ymlfront/discussion.mdwn @@ -1,13 +1,5 @@ -My field-etc branch in git://git.pseudorandom.co.uk/git/smcv/ikiwiki.git (gitweb: -) -has some fixes for compatibility with old YAML modules, mostly done by imitating -Joey's code in IkiWiki::Setup::Yaml. Please consider merging :-) --[[smcv]] +Now that I have implemented a \[[!ymlfront ...]] directive, I would like to remove support for the old "---" delimited format, because +* it is fragile (easily breakable) +* it is non-standard -> I would if I could *find* it. I checked out the "field-etc" branch, but I can't find the plugins in question under IkiWiki/Plugin; am I looking in the wrong place, or what? -> --[[KathrynAndersen]] - ->> Sorry, I accidentally removed `field-etc` by pushing with `--mirror` from a ->> different checkout. I've put it back; it's a branch from your `ikiplugins.git`, ->> so yes, the code should be in `IkiWiki/Plugin`. --[[smcv]] - ->>> Done a while back, but now I've actually pushed to my repo. --[[KathrynAndersen]] +Any objections? -- cgit v1.2.3 From d2b50c37b44972e60d08854e9e780a09481872d5 Mon Sep 17 00:00:00 2001 From: "http://kerravonsen.dreamwidth.org/" Date: Fri, 6 Aug 2010 08:19:39 +0000 Subject: formatting --- doc/plugins/contrib/ymlfront/discussion.mdwn | 1 + 1 file changed, 1 insertion(+) (limited to 'doc/plugins/contrib') diff --git a/doc/plugins/contrib/ymlfront/discussion.mdwn b/doc/plugins/contrib/ymlfront/discussion.mdwn index 3f7f0a337..b1fd65fff 100644 --- a/doc/plugins/contrib/ymlfront/discussion.mdwn +++ b/doc/plugins/contrib/ymlfront/discussion.mdwn @@ -1,4 +1,5 @@ Now that I have implemented a \[[!ymlfront ...]] directive, I would like to remove support for the old "---" delimited format, because + * it is fragile (easily breakable) * it is non-standard -- cgit v1.2.3 From 80102c042d0f2fd194222cd233a7bfd0e8bd467f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 12 Aug 2010 16:53:52 -0400 Subject: flattr: New plugin. Thanks to jaywalk for the initial implementation at a flattr plugin! This one is less configurable, but simpler. --- IkiWiki/Plugin/flattr.pm | 97 +++++++++++++++++++++++++++++++++++++++ debian/changelog | 2 + doc/ikiwiki/directive/flattr.mdwn | 45 ++++++++++++++++++ doc/plugins/contrib/flattr.mdwn | 3 ++ doc/plugins/flattr.mdwn | 9 ++++ doc/style.css | 4 ++ 6 files changed, 160 insertions(+) create mode 100644 IkiWiki/Plugin/flattr.pm create mode 100644 doc/ikiwiki/directive/flattr.mdwn create mode 100644 doc/plugins/flattr.mdwn (limited to 'doc/plugins/contrib') diff --git a/IkiWiki/Plugin/flattr.pm b/IkiWiki/Plugin/flattr.pm new file mode 100644 index 000000000..3aee1eb93 --- /dev/null +++ b/IkiWiki/Plugin/flattr.pm @@ -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 ''. + (exists $params{description} ? $params{description} : ''). + ''; +} + +sub format (@) { + my %params=@_; + + # Add flattr's javascript to pages with flattr buttons. + if ($flattr_pages{$params{page}}) { + if (! ($params{content}=~s!^(]*>)!$1.flattrjs()!em)) { + # no 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"; + +EOF +} + +1 diff --git a/debian/changelog b/debian/changelog index 440bee34f..f90fd8855 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 Mon, 09 Aug 2010 13:18:28 -0400 diff --git a/doc/ikiwiki/directive/flattr.mdwn b/doc/ikiwiki/directive/flattr.mdwn new file mode 100644 index 000000000..5083005ce --- /dev/null +++ b/doc/ikiwiki/directive/flattr.mdwn @@ -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"]] diff --git a/doc/plugins/contrib/flattr.mdwn b/doc/plugins/contrib/flattr.mdwn index f8f005c31..e9b4bf857 100644 --- a/doc/plugins/contrib/flattr.mdwn +++ b/doc/plugins/contrib/flattr.mdwn @@ -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. diff --git a/doc/plugins/flattr.mdwn b/doc/plugins/flattr.mdwn new file mode 100644 index 000000000..5da279518 --- /dev/null +++ b/doc/plugins/flattr.mdwn @@ -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. diff --git a/doc/style.css b/doc/style.css index 8dd3b1c15..66d962bd6 100644 --- a/doc/style.css +++ b/doc/style.css @@ -449,6 +449,10 @@ li.L8 { list-style: upper-alpha; } background: #ff9900; } +.FlattrButton { + display: none; +} + /* openid selector */ #openid_choice { display: none; -- cgit v1.2.3