diff options
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | README | 3 | ||||
m--------- | basewiki | 0 | ||||
-rw-r--r-- | ikiwiki_nb.setup | 16 | ||||
-rw-r--r-- | ikiwiki_nb_admin.setup | 286 | ||||
m--------- | javascript | 0 | ||||
m--------- | openid-selector | 0 | ||||
-rw-r--r-- | perl/IkiWiki/Plugin/farbar.pm | 110 | ||||
-rw-r--r-- | perl/IkiWiki/Plugin/topbar.pm | 110 | ||||
m--------- | smiley | 0 | ||||
m--------- | templates | 0 |
11 files changed, 525 insertions, 4 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_nb_admin.setup ikiwiki_nb.setup # Everything after this is generic @@ -8,6 +8,9 @@ the following locales: * danish (da) by Jonas Smedegaard <dr@jones.dk> +Additionally, the configuration has been simplified to not mention non-Git VCS +systems, and deprecated placeholder files has been removed from basewiki. + Getting the source ------------------ diff --git a/basewiki b/basewiki -Subproject 6b53960c5bbcf6a43f2e48b0b37a94e1f909b52 +Subproject d298a5fe6aa3f3308377635adb64f67834433ea diff --git a/ikiwiki_nb.setup b/ikiwiki_nb.setup index d8010b9..6ea0bf9 100644 --- a/ikiwiki_nb.setup +++ b/ikiwiki_nb.setup @@ -33,7 +33,7 @@ use IkiWiki::Setup::Standard { # users who are banned from the wiki banned_users => [], # where the source of the wiki is located - srcdir => 'content', + srcdir => 'content_dummy', # where to build the wiki destdir => $webdir, # base url to the wiki @@ -51,10 +51,15 @@ use IkiWiki::Setup::Standard { }], # plugins to disable disable_plugins => [qw{ + editpage }], # location of template files templatedir => 'templates', # base wiki source location + underlaydirs => [ + 'content', + ], + # Some plugins (smiley in particular) need non-localized master underlay underlaydir => 'basewiki', # display verbose messages when building? #verbose => 1, @@ -63,7 +68,7 @@ use IkiWiki::Setup::Standard { # create output files named page/index.html? usedirs => 1, # use '!'-prefixed preprocessor directives? - prefix_directives => 0, + prefix_directives => 1, # use page/index.mdwn source files indexpages => 0, # enable Discussion pages? @@ -276,4 +281,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_nb_admin.setup b/ikiwiki_nb_admin.setup new file mode 100644 index 0000000..c895e8d --- /dev/null +++ b/ikiwiki_nb_admin.setup @@ -0,0 +1,286 @@ +#!/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. + +our $libdir; +our $adminwebdir; +our $admincgidir; +our $gitdir; +our $adminwebhost; +our $githost; +our $gitrepo; +BEGIN { + $libdir = $ENV{'PWD'} . '/perl'; + $adminwebdir = 'build/html-admin'; + $admincgidir = 'build/cgi-admin'; + $gitdir = 'build/git'; + $adminwebhost = 'admin.wiki.example.org'; + $githost = 'git.example.org'; + $gitrepo = 'wiki'; +} + +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 => 'content', + # where to build the wiki + destdir => $adminwebdir, + # base url to the wiki + url => 'http://' . $adminwebhost . '/', + # url to the ikiwiki.cgi + cgiurl => 'http://' . $adminwebhost . '/ikiwiki.cgi', + # cgi wrapper to generate + cgi_wrapper => $admincgidir . '/ikiwiki.cgi', + # mode for cgi_wrapper (can safely be made suid) + cgi_wrappermode => '00755', + # rcs backend to use + rcs => 'git', + # plugins to add to the default configuration + add_plugins => [qw{ + }], + # plugins to disable + disable_plugins => [qw{ + }], + # location of template files + templatedir => 'templates', + # base wiki source location + underlaydir => '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 => 'nb_NO.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 => $libdir, + # 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 => '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 => $gitdir . '/post-update-ikiwiki-nb-admin', + # mode for git_wrapper (can safely be made suid) + git_wrappermode => '06755', + # gitweb url to show file history ([[file]] substituted) + historyurl => 'http://' . $githost . '/gitweb.cgi?p=' . $gitrepo . '.git;a=history;f=[[file]];hb=master-nb', + # gitweb url to show a diff ([[sha1_to]], [[sha1_from]], [[sha1_parent]], and [[file]] substituted) + diffurl => 'http://' . $githost . '/gitweb.cgi?p=' . $gitrepo . '.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-nb', + + # 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/javascript b/javascript -Subproject dea1eff3d9e9781e5b92a326ad7df17d3ba8ba1 +Subproject 9bf18ddbcb122e0f0005c06870c3b792bf7d9b0 diff --git a/openid-selector b/openid-selector -Subproject b4852ae1f1905a285d69947d6352b6898303324 +Subproject 517a71e93b14812d722f000ab42a6e61cb7b402 diff --git a/perl/IkiWiki/Plugin/farbar.pm b/perl/IkiWiki/Plugin/farbar.pm new file mode 100644 index 0000000..37f1013 --- /dev/null +++ b/perl/IkiWiki/Plugin/farbar.pm @@ -0,0 +1,110 @@ +#!/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 3.00; + +sub import { + hook(type => "getsetup", id => "farbar", call => \&getsetup); + hook(type => "preprocess", id => "farbar", call => \&preprocess); + hook(type => "pagetemplate", id => "farbar", call => \&pagetemplate); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 1, + }, + global_farbars => { + type => "boolean", + example => 1, + description => "show farbar page on all pages?", + safe => 1, + rebuild => 1, + }, +} + +my %pagefarbar; + +sub preprocess (@) { + my %params=@_; + + my $page=$params{page}; + return "" unless $page eq $params{destpage}; + + if (! defined $params{content}) { + $pagefarbar{$page}=undef; + } + else { + my $file = $pagesources{$page}; + my $type = pagetype($file); + + $pagefarbar{$page}= + IkiWiki::htmlize($page, $page, $type, + IkiWiki::linkify($page, $page, + IkiWiki::preprocess($page, $page, $params{content}))); + } + + return ""; +} + +my $oldfile; +my $oldcontent; + +sub farbar_content ($) { + my $page=shift; + + return delete $pagefarbar{$page} if defined $pagefarbar{$page}; + + return if ! exists $pagefarbar{$page} && + defined $config{global_farbars} && ! $config{global_farbars}; + + 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; + if (defined $oldfile && $farbar_file eq $oldfile) { + $content=$oldcontent; + } + else { + $content=readfile(srcfile($farbar_file)); + $oldcontent=$content; + $oldfile=$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 $template=$params{template}; + if ($params{destpage} eq $params{page} && + $template->query(name => "farbar")) { + my $content=farbar_content($params{destpage}); + 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..2705161 --- /dev/null +++ b/perl/IkiWiki/Plugin/topbar.pm @@ -0,0 +1,110 @@ +#!/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 3.00; + +sub import { + hook(type => "getsetup", id => "topbar", call => \&getsetup); + hook(type => "preprocess", id => "topbar", call => \&preprocess); + hook(type => "pagetemplate", id => "topbar", call => \&pagetemplate); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 1, + }, + global_topbars => { + type => "boolean", + example => 1, + description => "show topbar page on all pages?", + safe => 1, + rebuild => 1, + }, +} + +my %pagetopbar; + +sub preprocess (@) { + my %params=@_; + + my $page=$params{page}; + return "" unless $page eq $params{destpage}; + + if (! defined $params{content}) { + $pagetopbar{$page}=undef; + } + else { + my $file = $pagesources{$page}; + my $type = pagetype($file); + + $pagetopbar{$page}= + IkiWiki::htmlize($page, $page, $type, + IkiWiki::linkify($page, $page, + IkiWiki::preprocess($page, $page, $params{content}))); + } + + return ""; +} + +my $oldfile; +my $oldcontent; + +sub topbar_content ($) { + my $page=shift; + + return delete $pagetopbar{$page} if defined $pagetopbar{$page}; + + return if ! exists $pagetopbar{$page} && + defined $config{global_topbars} && ! $config{global_topbars}; + + 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; + if (defined $oldfile && $topbar_file eq $oldfile) { + $content=$oldcontent; + } + else { + $content=readfile(srcfile($topbar_file)); + $oldcontent=$content; + $oldfile=$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 $template=$params{template}; + if ($params{destpage} eq $params{page} && + $template->query(name => "topbar")) { + my $content=topbar_content($params{destpage}); + if (defined $content && length $content) { + $template->param(topbar => $content); + } + } +} + +1 diff --git a/smiley b/smiley -Subproject 30dd469765c2396ded03355876af391e922e89b +Subproject 60c3fee2d6e48ebd094b59be3385bcb8cf9ea9c diff --git a/templates b/templates -Subproject 5df058b2b3dc6e565ad3b3604263f487ef65f2a +Subproject a4e4a6599526eff20be43f8c4db8051c5954e6a |