package Kwiki::Edit::RequireUserName; use warnings; use strict; use Kwiki::Plugin '-Base'; use mixin 'Kwiki::Installer'; our $VERSION = '0.02'; const class_id => 'EditRequireUserName'; const class_title => 'Require UserName to edit'; sub register { my $registry = shift; $registry->add(action => 'edit_noUserName'); $registry->add(hook => 'edit:edit', pre => 'require_username'); } sub require_username { my $hook = pop; my $req_username_obj = $self->hub->load_class('EditRequireUserName'); my $page = $self->pages->current; if (! $req_username_obj->have_UserName) { my $page_uri = $page->uri; $hook->cancel(); # don't bother calling Kwiki::Edit::edit return $self->redirect("action=edit_noUserName&page_name=$page_uri"); } } sub have_UserName { my $current_name = $self->hub->users->current->name || die "Can't determine current UserName"; my $anonymous_name = $self->config->user_default_name || die "Can't determine local name of anonymous user"; # set in # config/user.yaml return ($current_name ne $anonymous_name); } sub edit_noUserName { return $self->render_screen( content_pane => 'edit_noUserName.html', ); } 1; __DATA__ =head1 NAME Kwiki::Edit::RequireUserName - Replaces Kwiki::Edit in order to require a user name to edit =head1 SYNOPSIS This plugin helps reduce WikiSpam by requiring that the user have a user name before editing. The idea is that SpamBots won't take the trouble to do this. Of course this won't prevent spam created manually. =head1 REQUIRES Kwiki 0.37 (new hooking mechanism) Kwiki::UserName (adds user name functionality to Kwiki) Kwiki::UserPreferences (adds the ability to change user names) =head1 INSTALLATION perl Makefile.PL make make test make install cd ~/where/your/kwiki/is/located vi plugins Add the line Kwiki::Edit::RequireUserName If you don't already have them add the following also Kwiki::UserName Kwiki::UserPreferences Then run kwiki -update =head1 UPGRADING The previous version of Kwiki::Edit::RequireUserName subclassed Kwik::Edit, so the old documentation asked you to remove Kwiki::Edit from your list of plugins. This new version of Kwiki::Edit::RequireUserName no longer subclasses Kwiki::Edit, so you should put that line back in. =head1 AUTHOR James Peregrino, C<< >> =head1 ACKNOWLEDGEMENTS This plugin was inspired by the techniques used in Kwiki::Scode by Kang-min Liu. =head1 BUGS Please report any bugs or feature requests to C, or through the web interface at L. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. =head1 Copyright & License Copyright 2004 James Peregrino, All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut __template/tt2/edit_noUserName.html__

This web site does not allow anonymous editing. Please go to User Preferences button and create a UserName for yourself.

__template/tt2/edit_button.html__ [% IF hub.pages.current.is_writable %] [% rev_id = hub.have_plugin('revisions') ? hub.revisions.revision_id : 0 %] [% INCLUDE edit_button_icon.html %] [% END %]