diff options
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | ikiwiki.setup | 16 | ||||
-rw-r--r-- | ikiwiki_admin.setup | 266 | ||||
-rw-r--r-- | perl/IkiWiki/Plugin/farbar.pm | 53 | ||||
-rw-r--r-- | perl/IkiWiki/Plugin/topbar.pm | 53 |
5 files changed, 387 insertions, 5 deletions
@@ -9,10 +9,10 @@ ikiwiki_MODULES = templates basewiki smiley directives #ikiwiki_POMODULES = basewiki smiley directives #ikiwiki_POLOCALES = da -#dummy_MODULES = content_dummy +dummy_MODULES = content_dummy # uncomment this when ikiwiki.setup is configured for the local environment -#CONFIGS = ikiwiki.setup +#CONFIGS = ikiwiki_admin.setup ikiwiki.setup # Everything after this is generic diff --git a/ikiwiki.setup b/ikiwiki.setup index a5fab91..460f109 100644 --- a/ikiwiki.setup +++ b/ikiwiki.setup @@ -15,7 +15,7 @@ use IkiWiki::Setup::Standard { # users who are banned from the wiki banned_users => [], # where the source of the wiki is located - srcdir => $ENV{'HOME'} . '/private_webdata/samplewiki/content', + srcdir => $ENV{'HOME'} . '/private_webdata/samplewiki/content_dummy', # where to build the wiki destdir => $ENV{'HOME'} . '/public_websites/wiki.example.org', # base url to the wiki @@ -33,9 +33,12 @@ use IkiWiki::Setup::Standard { # plugins to disable disable_plugins => [], # location of template files - templatedir => $ENV{'HOME'} . '/private_webdata/samplewiki/templates', + templatedir => $ENV{'HOME'} . '/private_webdata/samplewiki/templates_nonedit', # base wiki source location - underlaydir => $ENV{'HOME'} . '/private_webdata/samplewiki/basewiki', + underlaydirs => [ + $ENV{'HOME'} . "/private_webdata/samplewiki/content", + ], + underlaydir => $ENV{'HOME'} . '/private_webdata/samplewiki/basewiki_nonedit', # display verbose messages when building? #verbose => 1, # log to syslog? @@ -256,4 +259,11 @@ use IkiWiki::Setup::Standard { #websetup_force_plugins => [], # show unsafe settings, read-only, in web interface? #websetup_show_unsafe => 1, + + # varioki plugin (strings are eval'ed: double-quote actual strings!) + #varioki => { + # 'branding_logo_text' => '"Example Website"', + # 'branding_logo' => '"logo.png"', + # 'branding_logo_tagline' => '"Yet another ikiwiki site!"', + #}, } diff --git a/ikiwiki_admin.setup b/ikiwiki_admin.setup new file mode 100644 index 0000000..73e648c --- /dev/null +++ b/ikiwiki_admin.setup @@ -0,0 +1,266 @@ +#!/usr/bin/perl +# Setup file for ikiwiki. +# +# Passing this to ikiwiki --setup will make ikiwiki generate +# wrappers and build the wiki. +# +# Remember to re-run ikiwiki --setup any time you edit this file. +use IkiWiki::Setup::Standard { + # name of the wiki + wikiname => 'MyWiki', + # contact email for wiki + #adminemail => 'me@example.org', + # users who are wiki admins + adminuser => [], + # users who are banned from the wiki + banned_users => [], + # where the source of the wiki is located + srcdir => $ENV{'HOME'} . '/private_webdata/samplewiki/content', + # where to build the wiki + destdir => $ENV{'HOME'} . '/public_websites/admin.wiki.example.org', + # base url to the wiki + url => 'http://admin.wiki.example.org', + # url to the ikiwiki.cgi + cgiurl => 'http://admin.wiki.example.org/ikiwiki.cgi', + # cgi wrapper to generate + cgi_wrapper => $ENV{'HOME'} . '/public_cgi/admin.wiki.example.org/ikiwiki.cgi', + # mode for cgi_wrapper (can safely be made suid) + cgi_wrappermode => '06755', + # rcs backend to use + rcs => '', + # plugins to add to the default configuration + add_plugins => [], + # plugins to disable + disable_plugins => [], + # location of template files + templatedir => $ENV{'HOME'} . '/private_webdata/samplewiki/templates', + # base wiki source location + underlaydir => $ENV{'HOME'} . '/private_webdata/samplewiki/basewiki', + # display verbose messages when building? + #verbose => 1, + # log to syslog? + #syslog => 1, + # create output files named page/index.html? + usedirs => 1, + # use '!'-prefixed preprocessor directives? + prefix_directives => 1, + # use page/index.mdwn source files + indexpages => 0, + # enable Discussion pages? + discussion => 1, + # only send cookies over SSL connections? + sslcookie => 0, + # extension to use for new pages + default_pageext => 'mdwn', + # extension to use for html files + htmlext => 'html', + # strftime format string to display date + timeformat => '%c', + # UTF-8 locale to use + #locale => 'en_US.UTF-8', + # put user pages below specified page + userdir => '', + # how many backlinks to show before hiding excess (0 to show all) + numbacklinks => 10, + # attempt to hardlink source files? (optimisation for large files) + hardlink => 0, + # force ikiwiki to use a particular umask + #umask => 022, + # extra library and plugin directory + libdir => $ENV{'HOME'} . '/private_webdata/samplewiki/perl', + # environment variables + ENV => {}, + # regexp of source files to ignore + #exclude => '\\.wav$', + # specifies the characters that are allowed in source filenames + wiki_file_chars => '-[:alnum:]+/.:_', + # allow symlinks in the path leading to the srcdir (potentially insecure) + allow_symlinks_before_srcdir => 0, + + # aggregate plugin + # enable aggregation to internal pages? + #aggregateinternal => 0, + # allow aggregation to be triggered via the web? + #aggregate_webtrigger => 0, + + # amazon_s3 plugin + # public access key id + #amazon_s3_key_id => 'XXXXXXXXXXXXXXXXXXXX', + # file holding secret key (must not be readable by others!) + #amazon_s3_key_id => $ENV{'HOME'} . '/secret_webdata/s3_key', + # globally unique name of bucket to store wiki in + #amazon_s3_bucket => 'mywiki', + # a prefix to prepend to each page name + #amazon_s3_prefix => 'wiki/', + # which S3 datacenter to use (leave blank for default) + #amazon_s3_location => 'EU', + # store each index file twice? (allows urls ending in "/index.html" and "/") + #amazon_s3_dupindex => 0, + + # anonok plugin + # PageSpec to limit which pages anonymous users can edit + #anonok_pagespec => '*/discussion', + + # attachment plugin + # enhanced PageSpec specifying what attachments are allowed + #allowed_attachments => 'virusfree() and mimetype(image/*) and maxsize(50kb)', + # virus checker program (reads STDIN, returns nonzero if virus found) + #virus_checker => 'clamdscan -', + + # bzr plugin + # bzr post-commit hook to generate + #bzr_wrapper => '', + # mode for bzr_wrapper (can safely be made suid) + #bzr_wrappermode => '06755', + # url to show file history, using loggerhead ([[file]] substituted) + #historyurl => '', + # url to view a diff, using loggerhead ([[file]] and [[r2]] substituted) + #diffurl => 'http://example.org/revision?start_revid=[[r2]]#[[file]]-s', + + # calendar plugin + # base of the archives hierarchy + #archivebase => 'archives', + + # git plugin + # git hook to generate + #git_wrapper => $ENV{'HOME'} . '/public_websites/git.example.org/samplewiki_content.git/hooks/post-update-ikiwiki-admin', + # mode for git_wrapper (can safely be made suid) + #git_wrappermode => '06755', + # gitweb url to show file history ([[file]] substituted) + #historyurl => 'http://git.example.org/gitweb.cgi?p=wiki.git;a=history;f=[[file]]', # ;hb=master + # gitweb url to show a diff ([[sha1_to]], [[sha1_from]], [[sha1_parent]], and [[file]] substituted) + #diffurl => 'http://git.example.org/gitweb.cgi?p=wiki.git;a=blobdiff;h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_parent]];f=[[file]]', + # where to pull and push changes (set to empty string to disable) + #gitorigin_branch => 'samplewiki', + # branch that the wiki is stored in + #gitmaster_branch => 'master', + + # htmlscrubber plugin + # PageSpec specifying pages not to scrub + #htmlscrubber_skip => '!*/Discussion', + + # inline plugin + # enable rss feeds by default? + #rss => 0, + # enable atom feeds by default? + #atom => 0, + # allow rss feeds to be used? + #allowrss => 0, + # allow atom feeds to be used? + #allowatom => 0, + # urls to ping (using XML-RPC) on feed update + #pingurl => 'http://rpc.technorati.com/rpc/ping', + + # listdirectives plugin + # directory in srcdir that contains directive descriptions + #directive_description_dir => 'ikiwiki/directive', + + # lockedit plugin + # PageSpec controlling which pages are locked + #locked_pages => '!*/Discussion', + + # mdwn plugin + # enable multimarkdown features? + #multimarkdown => 0, + + # mercurial plugin + # mercurial post-commit hook to generate + #mercurial_wrapper => '', + # mode for mercurial_wrapper (can safely be made suid) + #mercurial_wrappermode => '06755', + # url to hg serve'd repository, to show file history ([[file]] substituted) + #historyurl => 'http://example.org:8000/log/tip/[[file]]', + # url to hg serve'd repository, to show diff ([[file]] and [[r2]] substituted) + #diffurl => 'http://localhost:8000/?fd=[[r2]];file=[[file]]', + + # mirrorlist plugin + # list of mirrors + #mirrorlist => {}, + + # openid plugin + # an url where users can signup for an OpenID + #openidsignup => 'http://myopenid.com/', + + # passwordauth plugin + # a password that must be entered when signing up for an account + #account_creation_password => 's3cr1t', + # cost of generating a password using Authen::Passphrase::BlowfishCrypt + #password_cost => 8, + + # pinger plugin + # how many seconds to try pinging before timing out + #pinger_timeout => 15, + + # prettydate plugin + # format to use to display date + #prettydateformat => '%X, %B %o, %Y', + + # recentchanges plugin + # name of the recentchanges page + #recentchangespage => 'recentchanges', + # number of changes to track + #recentchangesnum => 100, + + # search plugin + # path to the omega cgi program + #omega_cgi => '/usr/lib/cgi-bin/omega/omega', + + # svn plugin + # subversion repository location + #svnrepo => '/svn/wiki', + # path inside repository where the wiki is located + #svnpath => 'trunk', + # svn post-commit hook to generate + #svn_wrapper => '/svn/wikirepo/hooks/post-commit', + # mode for svn_wrapper (can safely be made suid) + #svn_wrappermode => '04755', + # viewvc url to show file history ([[file]] substituted) + #historyurl => 'http://svn.example.org/trunk/[[file]]', + # viewvc url to show a diff ([[file]], [[r1]], and [[r2]] substituted) + #diffurl => 'http://svn.example.org/trunk/[[file]]?root=wiki&r1=[[r1]]&r2=[[r2]]', + + # tag plugin + # parent page tags are located under + #tagbase => 'tag', + + # teximg plugin + # Should teximg use dvipng to render, or dvips and convert? + #teximg_dvipng => '', + # LaTeX prefix for teximg plugin + #teximg_prefix => '\\documentclass{article} + #\\usepackage{amsmath} + #\\usepackage{amsfonts} + #\\usepackage{amssymb} + #\\pagestyle{empty} + #\\begin{document} + #', + # LaTeX postfix for teximg plugin + #teximg_postfix => '\\end{document}', + + # tla plugin + # tla post-commit hook to generate + #tla_wrapper => '', + # mode for tla_wrapper (can safely be made suid) + #tla_wrappermode => '06755', + # url to show file history ([[file]] substituted) + #historyurl => '', + # url to show a diff ([[file]] and [[rev]] substituted) + #diffurl => '', + + # typography plugin + # Text::Typography attributes value + #typographyattributes => '3', + + # websetup plugin + # list of plugins that cannot be enabled/disabled via the web interface + #websetup_force_plugins => [], + # show unsafe settings, read-only, in web interface? + #websetup_show_unsafe => 1, + + # varioki plugin (strings are eval'ed: double-quote actual strings!) + #varioki => { + # 'branding_logo_text' => '"Example Website"', + # 'branding_logo' => '"logo.png"', + # 'branding_logo_tagline' => '"Yet another ikiwiki site!"', + #}, +} diff --git a/perl/IkiWiki/Plugin/farbar.pm b/perl/IkiWiki/Plugin/farbar.pm new file mode 100644 index 0000000..ab4390a --- /dev/null +++ b/perl/IkiWiki/Plugin/farbar.pm @@ -0,0 +1,53 @@ +#!/usr/bin/perl +# Farbar plugin. +# by Jonas Smedegaard <dr@jones.dk> +# Heavily based on Sidebar by Tuomo Valkonen <tuomov at iki dot fi> + +package IkiWiki::Plugin::farbar; + +use warnings; +use strict; +use IkiWiki 2.00; + +sub import { #{{{ + hook(type => "pagetemplate", id => "farbar", call => \&pagetemplate); +} # }}} + +sub farbar_content ($) { #{{{ + my $page=shift; + + my $farbar_page=bestlink($page, "farbar") || return; + my $farbar_file=$pagesources{$farbar_page} || return; + my $farbar_type=pagetype($farbar_file); + + if (defined $farbar_type) { + # FIXME: This isn't quite right; it won't take into account + # adding a new farbar page. So adding such a page + # currently requires a wiki rebuild. + add_depends($page, $farbar_page); + + my $content=readfile(srcfile($farbar_file)); + return unless length $content; + return IkiWiki::htmlize($farbar_page, $page, $farbar_type, + IkiWiki::linkify($farbar_page, $page, + IkiWiki::preprocess($farbar_page, $page, + IkiWiki::filter($farbar_page, $page, $content)))); + } + +} # }}} + +sub pagetemplate (@) { #{{{ + my %params=@_; + + my $page=$params{page}; + my $template=$params{template}; + + if ($template->query(name => "farbar")) { + my $content=farbar_content($page); + if (defined $content && length $content) { + $template->param(farbar => $content); + } + } +} # }}} + +1 diff --git a/perl/IkiWiki/Plugin/topbar.pm b/perl/IkiWiki/Plugin/topbar.pm new file mode 100644 index 0000000..aa62a11 --- /dev/null +++ b/perl/IkiWiki/Plugin/topbar.pm @@ -0,0 +1,53 @@ +#!/usr/bin/perl +# Topbar plugin. +# by Jonas Smedegaard <dr@jones.dk> +# Heavily based on Sidebar by Tuomo Valkonen <tuomov at iki dot fi> + +package IkiWiki::Plugin::topbar; + +use warnings; +use strict; +use IkiWiki 2.00; + +sub import { #{{{ + hook(type => "pagetemplate", id => "topbar", call => \&pagetemplate); +} # }}} + +sub topbar_content ($) { #{{{ + my $page=shift; + + my $topbar_page=bestlink($page, "topbar") || return; + my $topbar_file=$pagesources{$topbar_page} || return; + my $topbar_type=pagetype($topbar_file); + + if (defined $topbar_type) { + # FIXME: This isn't quite right; it won't take into account + # adding a new topbar page. So adding such a page + # currently requires a wiki rebuild. + add_depends($page, $topbar_page); + + my $content=readfile(srcfile($topbar_file)); + return unless length $content; + return IkiWiki::htmlize($topbar_page, $page, $topbar_type, + IkiWiki::linkify($topbar_page, $page, + IkiWiki::preprocess($topbar_page, $page, + IkiWiki::filter($topbar_page, $page, $content)))); + } + +} # }}} + +sub pagetemplate (@) { #{{{ + my %params=@_; + + my $page=$params{page}; + my $template=$params{template}; + + if ($template->query(name => "topbar")) { + my $content=topbar_content($page); + if (defined $content && length $content) { + $template->param(topbar => $content); + } + } +} # }}} + +1 |