package Kwiki::Search; use Kwiki::Plugin -Base; use mixin 'Kwiki::Installer'; use Kwiki ':char_classes'; our $VERSION = '0.12'; const class_id => 'search'; const cgi_class => 'Kwiki::Search::CGI'; const css_file => 'search.css'; sub register { my $registry = shift; $registry->add(action => 'search'); $registry->add(toolbar => 'search_box', template => 'search_box.html', ); } sub search { my $pages = $self->perform_search; my $term = $self->cgi->search_term; my $num = @$pages; my $screen_title = length($term) ? "$num Pages Matching '$term'" : "All $num Pages"; $self->render_screen( screen_title => $screen_title, pages => $pages, ); } sub perform_search { my $search = $self->cgi->search_term; $search =~ s/[^$WORD\ \-\.\^\$\*\|\:]//g; [ grep { ($_->id =~ m{$search}i || $_->content =~ m{$search}i ) and $_->active } $self->pages->all ] } package Kwiki::Search::CGI; use Kwiki::CGI -base; cgi search_term => -utf8; package Kwiki::Search; __DATA__ =head1 NAME Kwiki::Search - Kwiki Search Plugin =head1 SYNOPSIS =head1 DESCRIPTION =head1 AUTHOR Brian Ingerson =head1 COPYRIGHT Copyright (c) 2004. Brian Ingerson. All rights reserved. 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 =cut __template/tt2/search_box.html__
__template/tt2/search_content.html__ [% FOR page = pages %] [% END %] __css/search.css__ table.search { width: 100%; } table.search td { white-space: nowrap; padding: .2em 1em .2em 1em; } table.search td.page_name { text-align: left; } table.search td.edit_by { text-align: center; } table.search td.edit_time { text-align: right; }