X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fblosxom-plugins.git;a=blobdiff_plain;f=gavinc%2Fhcard;fp=gavinc%2Fhcard;h=b02dfc1d59eaa451be39b8777c0bafbd978cd886;hp=0000000000000000000000000000000000000000;hb=2c18c54630ee453b3074c153a92438ebdec8e726;hpb=b4d0840a866dec5cdc609b4a7feddf4f74bc182d diff --git a/gavinc/hcard b/gavinc/hcard new file mode 100644 index 0000000..b02dfc1 --- /dev/null +++ b/gavinc/hcard @@ -0,0 +1,143 @@ +# Blosxom Plugin: hcard +# Author(s): Gavin Carr +# Version: 0.001000 +# Documentation: 'perldoc hcard' +# Requires: metaclear, metamail, uf_hcard_meta + +package hcard; + +use strict; +use IO::File; + +# Uncomment next line to enable debug output (don't uncomment debug() lines) +#use Blosxom::Debug debug_level => 1; + +# --- Configuration defaults ----- + +my %config = ( + + # Where is the hcard metadata? + hcard_meta_file => "$blosxom::datadir/hcard.yml", + +); + +# -------------------------------- + +use vars qw($hcard); +$hcard = ''; + +sub start { + # Check $hcard_meta_file exists + unless (-f $config{hcard_meta_file}) { + warn "(hcard) cannot find hcard_meta_file file '$config{hcard_meta_file}' - aborting\n"; + return 0; + } + return 1; +} + +sub skip { + my $hcard_fh = IO::File->new( $config{hcard_meta_file}, 'r' ) + or warn "(hcard) cannot open hcard_meta_file file '$config{hcard_meta_file}': $! - aborting\n" + and return 0; + my @hcard_data = <$hcard_fh>; + my $hcard_title = $hcard_data[0]; + chomp $hcard_title; + my $hcard_body = join '', @hcard_data[ 1 .. $#hcard_data ]; + $hcard_fh->close; + # debug(1, "hcard_body: $hcard_body"); + + unless ($hcard_body) { + warn "(hcard) no data found in hcard_meta_file file '$config{hcard_meta_file}' - aborting\n"; + return 0; + } + + # Fake story calls to metaclear, metamail and uf_hcard_meta to render the hcard + my @story_args = ( undef, undef, undef, undef, \$hcard_title, \$hcard_body ); + metaclear::story( @story_args ); + metamail::story( @story_args ); + uf_hcard_meta::story( @story_args ); + + $hcard = $uf_hcard_meta::hcard; + + return 0; +} + +1; + +__END__ + +=head1 NAME + +hcard - blosxom plugin to set a global $hcard::hcard variable for use in templates + +=head1 DESCRIPTION + +L is a blosxom plugin to set a global $hcard::hcard variable for use in +templates. It is intended to allow you to set up a global hcard for yourself +to be displayed somewhere in your blog template. + +To use, simply define the set of hcard data you want to use in the 'hcard_meta_file' +file ($blosxom::datadir/hcard.yml, by default). + +=head1 EXAMPLES + +Here's an example hcard.yml for me: + + Name: Gavin Carr + Organisation: Open Fusion + Role: Chief Geek + Email: gavin@openfusion.com.au + URL: http://www.openfusion.net/ + Suburb: Wahroonga + State: NSW + Postcode: 2076 + Country: Australia + Latitude: -33.717718 + Longitude: 151.117158 + HCard-Class: nodisplay + HCard-Style: div-span + +=head1 USAGE + +L requires the L, L, and L plugins, +but has no particular ordering requirements with respect to them. + +=head1 SEE ALSO + +L, L, L. + +Microformats.org: http://www.microformats.org/, http://microformats.org/wiki/hcard. + +Blosxom: http://blosxom.sourceforge.net/ + +=head1 AUTHOR + +Gavin Carr , http://www.openfusion.net/ + +=head1 LICENSE + +Copyright 2007, Gavin Carr. + +This plugin is licensed under the same terms as blosxom itself i.e. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +=cut + +# vim:ft=perl:sw=4