| Kwiki-Infobox documentation | Contained in the Kwiki-Infobox distribution. |
Kwiki::Infobox - Slash-like Infobox plugin for Kwiki
Kwiki::Infobox is a Kwiki plugin that provide slash-like infoboxes around your page countent. User can use either wafl-block or wafl-phrase syntax to freely add infoboxes. Like:
{infobox: CommonInfoBox}
This wafl-phrase would use the content of the page CommonInfoBox , render it, and place into infobox. If you want to instantly add some text into infobox only for this page, use wafl-block like this:
.infoblock
Some quick content here.
.infoblock
For site admins, beside installing this plugin, please add
[% hub.infobox.html %]
somewhere in your kwiki_screen.html. And of course you'll have to setup css so that your new page looks neat. These issues will probabally be worked out someday in the future, so far I have no good idea about how to do this magically. Please discuss with me.
Copyright 2004 by Kang-min Liu <gugod@gugod.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See <http://www.perl.com/perl/misc/Artistic.html>
| Kwiki-Infobox documentation | Contained in the Kwiki-Infobox distribution. |
package Kwiki::Infobox;
use Kwiki::Plugin -Base; our $VERSION = '0.03'; const class_id => 'infobox'; const class_title => 'Kwiki Infobox'; sub register { my $registry = shift; $registry->add(wafl => infoblock => 'Kwiki::Infobox::WaflBlock'); $registry->add(wafl => infoblock_right => 'Kwiki::Infobox::WaflBlockRight'); $registry->add(wafl => infobox => 'Kwiki::Infobox::WaflPhrase'); $registry->add(wafl => infobox_right => 'Kwiki::Infobox::WaflPhraseRight'); } sub html { my $content = $self->pages->current->content; my $html; while($content =~ /{infobox:\s*(.+)\s*}/g) { my $boxpage = $self->pages->new_page($1)->content; $html .= "<div class=\"infobox\">". $self->hub->formatter->text_to_html($boxpage) . "</div>"; } while($content =~ /\n.infoblock\n(.+\n).infoblock/sg) { $html .= "<div class=\"infoblock\">" . $self->hub->formatter->text_to_html($1) . "</div>"; } return $html; } sub left { $self->html(@_) }; sub right { my $content = $self->pages->current->content; my $html; my ($box) = $content =~ /{infobox_right:\s*(.+)\s*}/; if($box) { my $boxpage = $self->pages->new_page($box)->content; $html .= "<div class=\"infobox\">". $self->hub->formatter->text_to_html($boxpage) . "</div>"; } my ($block) = $content =~ /\n.infoblock_right\n(.+\n).infoblock/s; if($block) { $html .= "<div class=\"infoblock\">" . $self->hub->formatter->text_to_html($block) . "</div>"; } return $html; } package Kwiki::Infobox::WaflPhrase; use base 'Spoon::Formatter::WaflPhrase'; sub to_html {'';} package Kwiki::Infobox::WaflPhraseRight; use base 'Spoon::Formatter::WaflPhrase'; sub to_html {'';} package Kwiki::Infobox::WaflBlock; use base 'Spoon::Formatter::WaflBlock'; sub to_html {'';} package Kwiki::Infobox::WaflBlockRight; use base 'Spoon::Formatter::WaflBlock'; sub to_html {'';}