Add link to hooks definition in cgi highlevel description.
parent
8c2415d4d1
commit
c6c9c21391
|
@ -59,33 +59,39 @@ an example.
|
||||||
|
|
||||||
Alice browses to a page and clicks Edit.
|
Alice browses to a page and clicks Edit.
|
||||||
|
|
||||||
* Ikiwiki is run as a cgi. It assigns Alice a session cookie, and,
|
* Ikiwiki is run as a cgi. It assigns Alice a session cookie, and, by calling
|
||||||
by calling the `auth` hooks, sees that she is not yet logged in.
|
the [[`auth`|plugins/write#auth]] hooks, sees that she is not yet logged in.
|
||||||
* The `sessioncgi` hooks are then called, and one of them,
|
* The [[`sessioncgi`|plugins/write#sessioncgi]] hooks are then called, and one
|
||||||
from the [[editpage]] plugin, notices that the cgi has been told "do=edit".
|
of them, from the [[editpage]] plugin, notices that the cgi has been told
|
||||||
* The [[editpage]] plugin calls the `canedit` hook to check if this
|
"do=edit".
|
||||||
page edit is allowed. The [[signinedit]] plugin has a hook that says not:
|
* The [[editpage]] plugin calls the [[`canedit`|plugins/write#canedit]] hook
|
||||||
Alice is not signed in.
|
to check if this page edit is allowed. The [[signinedit]] plugin has a hook
|
||||||
* The [[signinedit]] plugin then launches the signin process. A signin
|
that says not: Alice is not signed in.
|
||||||
page is built by calling the `formbuilder_setup` hook.
|
* The [[signinedit]] plugin then launches the signin process. A signin page is
|
||||||
|
built by calling the [[`formbuilder_setup`|plugins/write#formbuilder]]
|
||||||
|
hook.
|
||||||
|
|
||||||
Alice signs in with her openid.
|
Alice signs in with her openid.
|
||||||
|
|
||||||
* The [[openid]] plugin's `formbuilder` hook sees that an openid was
|
* The [[openid]] plugin's [[`formbuilder`|plugins/write#formbuilder]] hook
|
||||||
entered in the signin form, and redirects to Alice's openid provider.
|
sees that an openid was entered in the signin form, and redirects to Alice's
|
||||||
* Alice's openid provider calls back to ikiwiki. The [[openid]] plugin
|
openid provider.
|
||||||
has an `auth` hook that finishes the openid signin process.
|
* Alice's openid provider calls back to ikiwiki. The [[openid]] plugin has an
|
||||||
|
[[`auth`|plugins/write#auth]] hook that finishes the openid signin process.
|
||||||
* Signin complete, ikiwiki returns to what Alice was doing before; editing
|
* Signin complete, ikiwiki returns to what Alice was doing before; editing
|
||||||
a page.
|
a page.
|
||||||
* Now all the `canedit` hooks are happy. The [[editpage]] plugin calls
|
* Now all the [[`canedit`|plugins/write#canedit]] hooks are happy. The
|
||||||
`formbuilder_setup` to display the page editing form.
|
[[editpage]] plugin calls
|
||||||
|
[[`formbuilder_setup`|plugins/write#formbuilder]] to display the page
|
||||||
|
editing form.
|
||||||
|
|
||||||
Alice saves her change to the page.
|
Alice saves her change to the page.
|
||||||
|
|
||||||
* The [[editpage]] plugin's `formbuilder` hook sees that the Save button
|
* The [[editpage]] plugin's [[`formbuilder`|plugins/write#formbuilder]] hook
|
||||||
was pressed, and calls the `checkcontent` and `editcontent` hooks.
|
sees that the Save button was pressed, and calls the
|
||||||
Then it saves the page to disk, and branches into the compiler part
|
[[`checkcontent`|plugins/write#checkcontent]] and
|
||||||
of ikiwiki to refresh the wiki.
|
[[`editcontent`|plugins/write#editcontent]] hooks. Then it saves the page
|
||||||
|
to disk, and branches into the compiler part of ikiwiki to refresh the wiki.
|
||||||
|
|
||||||
## Types of plugins
|
## Types of plugins
|
||||||
|
|
||||||
|
@ -416,7 +422,7 @@ parameters, and if it will handle this CGI request, output a page
|
||||||
Note that cgi hooks are called as early as possible, before any ikiwiki
|
Note that cgi hooks are called as early as possible, before any ikiwiki
|
||||||
state is loaded, and with no session information.
|
state is loaded, and with no session information.
|
||||||
|
|
||||||
### auth
|
### <a name="auth">auth</a>
|
||||||
|
|
||||||
hook(type => "auth", id => "foo", call => \&auth);
|
hook(type => "auth", id => "foo", call => \&auth);
|
||||||
|
|
||||||
|
@ -429,7 +435,7 @@ object's "name" parameter to the authenticated user's name. Note that
|
||||||
if the name is set to the name of a user who is not registered,
|
if the name is set to the name of a user who is not registered,
|
||||||
a basic registration of the user will be automatically performed.
|
a basic registration of the user will be automatically performed.
|
||||||
|
|
||||||
### sessioncgi
|
### <a name="sessioncgi">sessioncgi</a>
|
||||||
|
|
||||||
hook(type => "sessioncgi", id => "foo", call => \&sessioncgi);
|
hook(type => "sessioncgi", id => "foo", call => \&sessioncgi);
|
||||||
|
|
||||||
|
@ -438,7 +444,7 @@ is only run once a session object is available. It is passed both a CGI
|
||||||
object and a session object. To check if the user is in fact signed in, you
|
object and a session object. To check if the user is in fact signed in, you
|
||||||
can check if the session object has a "name" parameter set.
|
can check if the session object has a "name" parameter set.
|
||||||
|
|
||||||
### canedit
|
### <a name="canedit">canedit</a>
|
||||||
|
|
||||||
hook(type => "canedit", id => "foo", call => \&canedit);
|
hook(type => "canedit", id => "foo", call => \&canedit);
|
||||||
|
|
||||||
|
@ -478,7 +484,7 @@ bypass it). It works exactly like the `canedit` hook,
|
||||||
but is passed the named parameters `cgi` (a CGI object), `session` (a
|
but is passed the named parameters `cgi` (a CGI object), `session` (a
|
||||||
session object), `src`, `srcfile`, `dest` and `destfile`.
|
session object), `src`, `srcfile`, `dest` and `destfile`.
|
||||||
|
|
||||||
### checkcontent
|
### <a name="checkcontent">checkcontent</a>
|
||||||
|
|
||||||
hook(type => "checkcontent", id => "foo", call => \&checkcontent);
|
hook(type => "checkcontent", id => "foo", call => \&checkcontent);
|
||||||
|
|
||||||
|
@ -499,7 +505,7 @@ should return a message stating what the problem is, or a function
|
||||||
that can be run to perform whatever action is necessary to allow the user
|
that can be run to perform whatever action is necessary to allow the user
|
||||||
to post the content.
|
to post the content.
|
||||||
|
|
||||||
### editcontent
|
### <a name="editcontent">editcontent</a>
|
||||||
|
|
||||||
hook(type => "editcontent", id => "foo", call => \&editcontent);
|
hook(type => "editcontent", id => "foo", call => \&editcontent);
|
||||||
|
|
||||||
|
@ -510,7 +516,7 @@ user, the page name, a `CGI` object, and the user's `CGI::Session`.
|
||||||
|
|
||||||
It can modify the content as desired, and should return the content.
|
It can modify the content as desired, and should return the content.
|
||||||
|
|
||||||
### formbuilder
|
### <a name="formbuilder">formbuilder</a>
|
||||||
|
|
||||||
hook(type => "formbuilder_setup", id => "foo", call => \&formbuilder_setup);
|
hook(type => "formbuilder_setup", id => "foo", call => \&formbuilder_setup);
|
||||||
hook(type => "formbuilder", id => "foo", call => \&formbuilder);
|
hook(type => "formbuilder", id => "foo", call => \&formbuilder);
|
||||||
|
|
Loading…
Reference in New Issue