This patch allows disabling the edit and preferences link in the config file. It is backwards compatible (so peoples edit and preferences links won't suddenly vanish).
To disable edit or prefs respectively, add the following to the config file:
'edit' => 0, 'prefs' => 0,
Patch:
--- /usr/share/perl5/IkiWiki/Render.pm.orig 2008-12-23 16:49:00.000000000 +1300 +++ /usr/share/perl5/IkiWiki/Render.pm 2008-12-23 16:55:40.000000000 +1300 @@ -80,8 +80,10 @@ my $actions=0; if (length $config{cgiurl}) { - $template->param(editurl => cgiurl(do => "edit", page => $page)); - $template->param(prefsurl => cgiurl(do => "prefs")); + $template->param(editurl => cgiurl(do => "edit", page => $page)) + if ! defined $config{edit} || (defined $config{edit} && $config{edit} == 1); + $template->param(prefsurl => cgiurl(do => "prefs")) + if ! defined $config{prefs} || (defined $config{prefs} && $config{prefs} == 1); $actions++; }
On irc, you said, "That was to allow the hack to of using wikistatedir to allow me to generate two websites, one with inline editting, the other a static page for public consumption."
The edit and preferences links can already be disabled by editing
page.tmpl
. (Look for PREFSURL and EDITURL).More to the point though, disabling those links does not disable anyone consticting the urls by hand and logging in and editing a page. So you'd really want to disable the editpage plugin in the setup file for the public, static wiki. Sounds like you might also want to turn off cgi entirely for that build. --Joey
I want to retain the same page.tmpl for both sites (different templates will just increase the maintenance hell), so disabling the links in the config for one public site works better in my case.
I do have the editpage plugin disabled for the public static wiki, but the link still appears on the site. I want to keep the cgi on, so that the site is still searchable. --?puck
For me, disabling the editpage plugin does make the "Edit" link disappear (this is with 3.03) but as far as I can tell, "Preferences" is not controlled by any plugin. It would be nice if it were; I am trying to achieve a configuration where the only action supported via CGI is blog-style comments. --Zack
Like ?puck, I'd like to keep search available but I want to disable all login facitilities and thus disable the "Preferences" link.
After digging a little bit in the source code, my first attempt was to make the "Preferences" link appear only if there is
sessioncgi
hooks registered. But this will not work as the inline plugin also defines it.Looking for
auth
hooks currently would not work as at least passwordauth does not register one.Adding a new
canlogin
hook looks like overkill to me. Joey, how about making registration of theauth
hook mandatory for all plugins making sense of the "Preferences" link? --?LunarHmm, using the
auth
hook existance does seem like a nice solution. While splitting the preferences code out into its own plugin is easily enough done, it has the minor problem of being yet another file nearly all ikiwikis will have to load, and also, prefs would have to be disabled manually. So I like that using the hook would cause it to auto-disable if nothing uses it. It's a bit ugly that passwordauth doesn't need an auth hook (it could be reorged to use it instead of formbuilder, maybe) and would probably just have an empty one. Thanks for the idea. --Joey doneThanks for implementing it! --?Lunar