]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/openid.pm
allow misctemplate callers to pass params to suppress actions etc
[ikiwiki.git] / IkiWiki / Plugin / openid.pm
index e722c68ba8e49f2c5969d0d524acaf16cf1a0f3d..e10e21f4d6f9eed60be8cfa8650b9ddf9391b1a6 100644 (file)
@@ -9,7 +9,6 @@ use IkiWiki 3.00;
 sub import {
        add_underlay("openid-selector");
        hook(type => "checkconfig", id => "openid", call => \&checkconfig);
-       hook(type => "getopt", id => "openid", call => \&getopt);
        hook(type => "getsetup", id => "openid", call => \&getsetup);
        hook(type => "auth", id => "openid", call => \&auth);
        hook(type => "formbuilder_setup", id => "openid",
@@ -23,9 +22,9 @@ sub checkconfig () {
                # 
                # When other auth hooks are registered, give the selector
                # a reference to the normal signin form.
+               require IkiWiki::CGI;
                my $real_cgi_signin;
                if (keys %{$IkiWiki::hooks{auth}} > 1) {
-                       require IkiWiki::CGI;
                        $real_cgi_signin=\&IkiWiki::cgi_signin;
                }
                inject(name => "IkiWiki::cgi_signin", call => sub ($$) {
@@ -34,13 +33,6 @@ sub checkconfig () {
        }
 }
 
-sub getopt () {
-       eval q{use Getopt::Long};
-       error($@) if $@;
-       Getopt::Long::Configure('pass_through');
-       GetOptions("openidsignup=s" => \$config{openidsignup});
-}
-
 sub getsetup () {
        return
                plugin => {
@@ -48,13 +40,6 @@ sub getsetup () {
                        rebuild => 0,
                        section => "auth",
                },
-               openidsignup => {
-                       type => "string",
-                       example => "http://myopenid.com/",
-                       description => "an url where users can signup for an OpenID",
-                       safe => 1,
-                       rebuild => 0,
-               },
 }
 
 sub openid_selector {
@@ -68,6 +53,7 @@ sub openid_selector {
        if (! load_openid_module()) {
                if ($real_cgi_signin) {
                        $real_cgi_signin->($q, $session);
+                       exit;
                }
                error(sprintf(gettext("failed to load openid module: "), @_));
        }
@@ -76,18 +62,13 @@ sub openid_selector {
                        $openid_error=shift;
                });
        }
-       elsif ($q->param("do") eq "signin" && $real_cgi_signin) {
-               $real_cgi_signin->($q, $session);
-               exit;
-       }
 
        my $template=IkiWiki::template("openid-selector.tmpl");
        $template->param(
                cgiurl => $config{cgiurl},
                (defined $openid_error ? (openid_error => $openid_error) : ()),
                (defined $openid_url ? (openid_url => $openid_url) : ()),
-               ($real_cgi_signin ? (nonopenidurl => IkiWiki::cgiurl(do => "signin")) : ()),
-               loginlabel => loginlabel(),
+               ($real_cgi_signin ? (nonopenidform => $real_cgi_signin->($q, $session, 1)) : ()),
        );
 
        IkiWiki::printheader($session);
@@ -107,7 +88,7 @@ sub formbuilder_setup (@) {
                $form->field(name => "openid_identifier", disabled => 1,
                        label => htmllink("", "", "ikiwiki/OpenID", noimageinline => 1),
                        value => $session->param("name"), 
-                       size => 50, force => 1,
+                       size => length($session->param("name")), force => 1,
                        fieldset => "login");
                $form->field(name => "email", type => "hidden");
        }
@@ -258,8 +239,4 @@ sub load_openid_module {
        return 1;
 }
 
-sub loginlabel {
-       return gettext("Log in with")." ".htmllink("", "", "ikiwiki/OpenID", noimageinline => 1);
-}
-
 1