X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/18d24036477223794e8319428cd7ba971129c29c..b4471d44184a03180ad19a98673d52752ce73b46:/doc/todo/online_configuration.mdwn diff --git a/doc/todo/online_configuration.mdwn b/doc/todo/online_configuration.mdwn index 94c4c66f8..02a8c6e5f 100644 --- a/doc/todo/online_configuration.mdwn +++ b/doc/todo/online_configuration.mdwn @@ -7,60 +7,22 @@ In theory, every setting could be configured there. In practice, some settings, like `srcdir` and `destdir` are ones you want to keep far away from editing via the web. -Currently admin prefs are per-admin, and are stored in the userdb. -That seems like a bad choice in the context of this idea. Instead, admin -setup should be configured on a separate page than the regular user prefs -page, and should be shared amoung all admins, and the ideal storage would be -another ikiwiki setup file, which could be loaded in, and written back out. +The underlying work has been done to privide metadata about all options via +getsetup hooks, so it's just a matter of writing a web interface plugin. -If `ikiwiki-makerepo` were extended a little bit to generate the stub setup -file that's enough to get `ikiwiki.cgi` working, and that sets values for -all the dangerous options, leaving only safe ones 'undef', then users could -set up ikiwiki using it, and configure the rest with the web interface, -without ever needing to edit a setup file. +The plugin could have these config options: -The setup page could `require` every available plugin, and then call a -`getsetup` function, which would look something like: + # list of options to include in web setup (safe = all things with safe = 1) + websetup_include => [qw{safe}], + # list of options to exclude from web setup + websetup_exclude => [qw{option_baz}], + # list of plugins that cannot be enabled/disabled via the web + # interface + websetup_force_plugins => [qw{git svn bzr mercurial monotone tla}] - sub getsetup () { - eval q{use Some::Thing}; - die $@ if $@; +Leaning toward just making it write out to the same setup file, rather than +writing to a subsidiary setup file. However, this would mean that any +comments in the file would be lost, and that it couldn't be used if the +setup file had weird stuff (perl code, etc). - return option_foo => { - safe => 1, - rebuild => 1, - type => "boolean", - default => 0, - description => gettext("Enable foo."), - }, - option_bar => { - safe => 0, - rebuild => 0, - type => "password", - default => "", - description => gettext("Password for bar."), - }; - } - -The types would be: boolean, string, password, filename, other. -This would be the type of the leaf fields; if a value in `%config` is an -array or hash, the type specifies the type of values that go into it. - -From this info, a form can be built, that has core setup values at the -top, followed by each plugin whose `getsetup` succeeded, with a check box -to enable/disable that plugin, and all of its setup options listed after -it. - -The main setup file could control what options are read from the -online setup file: - - online_setup_include => 'safe', # all things with safe = 1 - online_setup_exclude => [qw{option_baz}], - -Note that posting the setup form would sometimes need to cause a rebuild -of the whole wiki. This could be done with output streamed to the admin in -the web browser. The `rebuild` fields would be set to 1 for values that -require a wiki rebuild when changed, and to 0 for values that only need the -wrappers to be refreshed. - -[[!tag wishlist]] +[[!tag wishlist done]]