]> sipb.mit.edu Git - ikiwiki.git/commitdiff
Merge tag '3.20120202' into trail3-integrated
authorSimon McVittie <smcv@debian.org>
Sun, 18 Mar 2012 15:31:41 +0000 (15:31 +0000)
committerSimon McVittie <smcv@debian.org>
Sun, 18 Mar 2012 15:31:41 +0000 (15:31 +0000)
245 files changed:
IkiWiki/Plugin/comments.pm [changed mode: 0755->0644]
doc/bugs/Encoding_problem_in_calendar_plugin.mdwn [new file with mode: 0644]
doc/bugs/Running_on_an_alternative_port_fails.mdwn [new file with mode: 0644]
doc/bugs/Sub-Discussion_pages_have_a_broken___34__FormattingHelp__34___link.mdwn [new file with mode: 0644]
doc/bugs/UTF-8_in_attachment_filenames.mdwn [new file with mode: 0644]
doc/bugs/W3MMode_still_uses_http:__47____47__localhost__63__.mdwn [new file with mode: 0644]
doc/bugs/backlink__40__.__41___doesn__39__t_work.mdwn [new file with mode: 0644]
doc/bugs/blogspam__95__options_whitelist_vs._IPv6__63__.mdwn [new file with mode: 0644]
doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn [new file with mode: 0644]
doc/bugs/octal_umask_setting_is_unintuitive.mdwn [new file with mode: 0644]
doc/bugs/resized_img_with_only_width_or_height_breaks_ie.mdwn [new file with mode: 0644]
doc/examples/blog/posts/Discussion.mdwn [deleted file]
doc/forum/Are_these_revisions_legit_or_accidentally_committed_jiberish__63__.mdwn [new file with mode: 0644]
doc/forum/Are_these_revisions_legit_or_accidentally_committed_jiberish__63__/comment_1_b425823f800fba82ad2aaaa0dbe6686a._comment [new file with mode: 0644]
doc/forum/Broken_after_upgrading_Ikiwiki.mdwn [new file with mode: 0644]
doc/forum/Broken_after_upgrading_Ikiwiki/comment_1_3d0588a845c58b3aedc35970e8dcc811._comment [new file with mode: 0644]
doc/forum/Broken_after_upgrading_Ikiwiki/comment_2_fd65d4b87a735b67543bb0cf4053b652._comment [new file with mode: 0644]
doc/forum/Broken_after_upgrading_Ikiwiki/comment_3_7c8b46eabdb25cbc01c56c7b53ed3b91._comment [new file with mode: 0644]
doc/forum/Calendar:_listing_multiple_entries_per_day.mdwn [new file with mode: 0644]
doc/forum/Calendar:_listing_multiple_entries_per_day/comment_1_d3dd0b97c63d615e3dee22ceacaa5a30._comment [new file with mode: 0644]
doc/forum/Calendar:_listing_multiple_entries_per_day/comment_2_2311b96483bb91dc25d5e3695bbca513._comment [new file with mode: 0644]
doc/forum/Calendar:_listing_multiple_entries_per_day/comment_3_d23f0cedd0b9e937eaf200eef55ac457._comment [new file with mode: 0644]
doc/forum/Can_I_have_different_favicons_for_each_folder__63__.mdwn [new file with mode: 0644]
doc/forum/Can_I_have_different_favicons_for_each_folder__63__/comment_1_a01112ba235e2f44a7655c36ef680e7e._comment [new file with mode: 0644]
doc/forum/Can_Ikiwiki_recognize_multimarkdown_meta_tags__63__.mdwn [new file with mode: 0644]
doc/forum/Can__39__t_login_using_Google__44___or_openID__44___but_can_use_Ikiwiki_login.mdwn [new file with mode: 0644]
doc/forum/Can__39__t_login_using_Google__44___or_openID__44___but_can_use_Ikiwiki_login/comment_1_79127e3c09a1d798146088dee5a67708._comment [new file with mode: 0644]
doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__.mdwn [new file with mode: 0644]
doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_1_5e916c8fa90470909064ea73531f79d4._comment [new file with mode: 0644]
doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_2_2fa15f0eaf8c860b82e366130c8563c7._comment [new file with mode: 0644]
doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_3_c5af589dcdfe4f91dba50243762065e5._comment [new file with mode: 0644]
doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_4_3090da7bafbf92a825edec8ffc45af20._comment [new file with mode: 0644]
doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit.mdwn [new file with mode: 0644]
doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit/comment_1_ac6bda46ad00bfe980bc76c4a39aa796._comment [new file with mode: 0644]
doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit/comment_3_10a46f8ee23c8935e20c70842671cee4._comment [new file with mode: 0644]
doc/forum/Disable_account_creation_for_new_users.mdwn [new file with mode: 0644]
doc/forum/Disable_account_creation_for_new_users/comment_1_adafddb0aff7c2c1f4574101c4cf9073._comment [new file with mode: 0644]
doc/forum/Disable_account_creation_for_new_users/comment_2_865591f77966f1657a9a4b2426318c51._comment [new file with mode: 0644]
doc/forum/Disable_account_creation_for_new_users/comment_3_05193e563682f634f13691ee0a8359db._comment [new file with mode: 0644]
doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn [new file with mode: 0644]
doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_.mdwn [new file with mode: 0644]
doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_/comment_1_64146f306ec8c10614521359b6de4f82._comment [new file with mode: 0644]
doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_/comment_2_ed2b4b8f7122b42bbde1189fbd2969dd._comment [new file with mode: 0644]
doc/forum/Help_with_tag__95__autocreate.mdwn [new file with mode: 0644]
doc/forum/How_to_allow_.markdown_and_.md_at_the_same_time_as_valid_extensions_for_source_files__63__.mdwn [new file with mode: 0644]
doc/forum/How_to_change_registration_page.mdwn [new file with mode: 0644]
doc/forum/How_to_change_registration_page/comment_1_43758a232e4360561bc84f710862ff40._comment [new file with mode: 0644]
doc/forum/How_to_configure_po_plugin__63__.mdwn [new file with mode: 0644]
doc/forum/How_to_configure_po_plugin__63__/comment_1_5e0cc4cdfd126f2f4af64104f02102d6._comment [new file with mode: 0644]
doc/forum/How_to_create_first_translation_page_using_po_plugin__63__.mdwn [new file with mode: 0644]
doc/forum/How_to_use___126____47__bin__47__multimarkdown_instead_of_Text::MultiMarkdown.mdwn [new file with mode: 0644]
doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__.mdwn [new file with mode: 0644]
doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_1_a66fd9d7ab4359784a5420cd899a1057._comment [new file with mode: 0644]
doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_2_3351ff773fea3f640f4036bb8c7c7efd._comment [new file with mode: 0644]
doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_3_273b2b63a9af2bc4eeb030e026436687._comment [new file with mode: 0644]
doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_4_546771c13ea1b550301586e187d82cb5._comment [new file with mode: 0644]
doc/forum/Last_visited_pages.mdwn [new file with mode: 0644]
doc/forum/Last_visited_pages/comment_1_e34650064dd645b35da98e80c0311df9._comment [new file with mode: 0644]
doc/forum/Last_visited_pages/comment_2_2a0c4e844da1deaa2c286e87c8eab84d._comment [new file with mode: 0644]
doc/forum/Let__39__s_just_rely_on_backlinks_for_this__63__.mdwn [deleted file]
doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated.mdwn [new file with mode: 0644]
doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_2_b44a492c7f10395a31f3c0830ef33f0c._comment [new file with mode: 0644]
doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_2_f9240b217b2d1ee8d51dada9cb1186b3._comment [new file with mode: 0644]
doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_3_c3c5c41a4c220793c6d16f3fd6132272._comment [new file with mode: 0644]
doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_4_1f6f9e3939a454c1eb8d2fb29bd519de._comment [new file with mode: 0644]
doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_5_8611fc62797e70a0d2a61d94fcb03170._comment [new file with mode: 0644]
doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__/comment_1_e5ce524c5d34b1d4218172296bd99100._comment [new file with mode: 0644]
doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__/comment_3_65c4a4895f6541ff0ff2d094ff447bba._comment [new file with mode: 0644]
doc/forum/Need_some_help_on_starting_to_use_po_plugin_for_creating_pages_in_multiple_languages.mdwn [new file with mode: 0644]
doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__.mdwn [new file with mode: 0644]
doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_bf1bec748d6ab419276a73a7001024cf._comment [new file with mode: 0644]
doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_2_14a1b269be6dbcc9b2068d3e18b55711._comment [new file with mode: 0644]
doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog.mdwn [new file with mode: 0644]
doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog/comment_1_45ecaf6efa2065837fa54a42737f0a66._comment [new file with mode: 0644]
doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog/comment_2_45ca7ef4190c281d703c8c7ca6979298._comment [new file with mode: 0644]
doc/forum/Recent_changes_on_main_site_or_on_a_sidebar.mdwn [new file with mode: 0644]
doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_1_018b977ff7ee59fc53838e0c20c3a9a7._comment [new file with mode: 0644]
doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment [new file with mode: 0644]
doc/forum/Run_script_on_markdown_source.mdwn [new file with mode: 0644]
doc/forum/Should_files_in_.ikiwiki_be_committed_and_pushed__63__.mdwn [new file with mode: 0644]
doc/forum/Should_files_in_.ikiwiki_be_committed_and_pushed__63__/comment_1_8e65d7d8298e3c31d2a16446a71c8049._comment [new file with mode: 0644]
doc/forum/Split_a_wiki.mdwn [new file with mode: 0644]
doc/forum/Split_a_wiki/comment_1_1599c26891b2071a2f1ca3fd90627fc4._comment [new file with mode: 0644]
doc/forum/Split_a_wiki/comment_2_1c54d3594f0350340f8dfb3e95c29ffd._comment [new file with mode: 0644]
doc/forum/Split_a_wiki/comment_3_9eac1d1b93df27d849acc574b1f0f26d._comment [new file with mode: 0644]
doc/forum/Split_a_wiki/comment_4_e193ba447c0188f72ba589180b5d529e._comment [new file with mode: 0644]
doc/forum/Xapian_search:_empty_postlist_table.mdwn [new file with mode: 0644]
doc/forum/Xapian_search:_empty_postlist_table/comment_1_de9a7c94beec2707eda0924ca58be9df._comment [new file with mode: 0644]
doc/forum/Xapian_search:_empty_postlist_table/comment_2_55f191e4b1306a318a30319f01802229._comment [new file with mode: 0644]
doc/forum/Xapian_search:_empty_postlist_table/comment_3_0bd424a89c3a52ff393a1e7e00c806be._comment [new file with mode: 0644]
doc/forum/ikiwiki_generates_html_files_with_600_permission..mdwn [new file with mode: 0644]
doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_1_6d73d412a9cc6f6ae426b62885c1f157._comment [new file with mode: 0644]
doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_2_1392fcde369d11a264f31f6b8993ccec._comment [new file with mode: 0644]
doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_3_962306f22ceb17afb4150e766e9a05b3._comment [new file with mode: 0644]
doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_4_8b988d85cfde123798238d0348764c79._comment [new file with mode: 0644]
doc/forum/index_attachments.mdwn [new file with mode: 0644]
doc/forum/index_attachments/comment_1_18b9531d273292b45051eef6a306ca26._comment [new file with mode: 0644]
doc/forum/index_attachments/comment_2._comment [new file with mode: 0644]
doc/forum/index_attachments/comment_3_050e5847641a27e0c14232632f3e700a._comment [new file with mode: 0644]
doc/forum/index_attachments/comment_4._comment [new file with mode: 0644]
doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn [new file with mode: 0644]
doc/forum/w3mmode___91__Save_Page__93___results_in_403.mdwn [new file with mode: 0644]
doc/news/version_3.20110711.mdwn [deleted file]
doc/news/version_3.20110712.mdwn [deleted file]
doc/news/version_3.20110715.mdwn [deleted file]
doc/news/version_3.20110905.mdwn [deleted file]
doc/news/version_3.20111107.mdwn [new file with mode: 0644]
doc/news/version_3.20111229.mdwn [new file with mode: 0644]
doc/news/version_3.20120109.mdwn [new file with mode: 0644]
doc/news/version_3.20120115.mdwn [new file with mode: 0644]
doc/plugins/contrib/ikiwiki/directive/album.mdwn [new file with mode: 0644]
doc/plugins/contrib/ikiwiki/directive/albumimage.mdwn [new file with mode: 0644]
doc/plugins/contrib/ikiwiki/directive/albumsection.mdwn [new file with mode: 0644]
doc/plugins/contrib/ikiwiki/directive/jssearchfield.mdwn [new file with mode: 0644]
doc/plugins/contrib/ikiwiki/directive/trailinline.mdwn [new file with mode: 0644]
doc/plugins/contrib/ikiwiki/directive/trailitem.mdwn [new file with mode: 0644]
doc/plugins/contrib/ikiwiki/directive/trailitems.mdwn [new file with mode: 0644]
doc/plugins/contrib/ikiwiki/directive/traillink.mdwn [new file with mode: 0644]
doc/plugins/contrib/ikiwiki/directive/trailoptions.mdwn [new file with mode: 0644]
doc/plugins/contrib/jssearchfield.mdwn [new file with mode: 0644]
doc/plugins/contrib/newpage.mdwn [new file with mode: 0644]
doc/plugins/contrib/newpage/discussion.mdwn [new file with mode: 0644]
doc/plugins/contrib/pagespec_alias.mdwn [new file with mode: 0644]
doc/sandbox/Test_it.mdwn [new file with mode: 0644]
doc/sandbox/sandbocen.mdwn [new file with mode: 0644]
doc/tips/Adding_Disqus_to_your_wiki/discussion.mdwn [new file with mode: 0644]
doc/todo/Improve_markdown_speed.mdwn [new file with mode: 0644]
doc/todo/Modern_standard_layout.mdwn [new file with mode: 0644]
doc/todo/Render_multiple_destinations_from_one_source.mdwn [new file with mode: 0644]
doc/todo/Split_plugins_with_external_dependencies_into_separate_Debian_packages.mdwn [new file with mode: 0644]
doc/todo/Wikilink_to_a_symbolic_link.mdwn [new file with mode: 0644]
doc/todo/hyphenation.mdwn [new file with mode: 0644]
doc/todo/mdwn_preview/discussion.mdwn [new file with mode: 0644]
doc/todo/sorting_by_path.mdwn [new file with mode: 0644]
doc/todo/submodule_support.mdwn [new file with mode: 0644]
doc/todo/test_coverage.mdwn [new file with mode: 0644]
doc/todo/themes_should_ship_with_templates.mdwn [new file with mode: 0644]
doc/todo/websetup_should_link_to_plugin_descriptions.mdwn [new file with mode: 0644]
doc/todo/wmd_editor_live_preview.mdwn [new file with mode: 0644]
doc/users/Erkan_Yilmaz.mdwn [new file with mode: 0644]
doc/users/NeilSmithline.mdwn [new file with mode: 0644]
doc/users/fil.mdwn [new file with mode: 0644]
doc/users/pelle.mdwn [new file with mode: 0644]
doc/users/tjgolubi.mdwn [moved from doc/users/Terry_Golubiewski.mdwn with 75% similarity]

index a823623174f9f23b8260fe9431517bed8fb733ff..0059362507117ed9ae9dc92ea38ac1a312b4c06f 100644 (file)
@@ -16,7 +16,7 @@ perl -MCPAN -e 'install Bundle::IkiWiki'
 =head1 CONTENTS
@@ -28,7 +28,7 @@ CGI::Session
index 3d13cb106650308500656492c7fe857b36b15f41..2a83777e6574ec74e9ebb878f0964a88b0118639 100644 (file)
@@ -20,7 +20,7 @@ use Exporter q{import};
 our @EXPORT = qw(hook debug error htmlpage template template_depends
        deptype add_depends pagespec_match pagespec_match_list bestlink
        htmllink readfile writefile pagetype srcfile pagename
-       displaytime will_render gettext ngettext urlto targetpage
+       displaytime strftime_utf8 will_render gettext ngettext urlto targetpage
        add_underlay pagetitle titlepage linkpage newpagefile
        inject add_link add_autofile
        %config %links %pagestate %wikistate %renderedfiles
@@ -305,9 +305,9 @@ sub getsetup () {
                rebuild => 0,
        umask => {
-               type => "integer",
-               example => "022",
-               description => "force ikiwiki to use a particular umask",
+               type => "string",
+               example => "public",
+               description => "force ikiwiki to use a particular umask (keywords public, group or private, or a number)",
                advanced => 1,
                safe => 0, # paranoia
                rebuild => 0,
@@ -587,7 +587,23 @@ sub checkconfig () {
                unless exists $config{wikistatedir} && defined $config{wikistatedir};
        if (defined $config{umask}) {
-               umask(possibly_foolish_untaint($config{umask}));
+               my $u = possibly_foolish_untaint($config{umask});
+               if ($u =~ m/^\d+$/) {
+                       umask($u);
+               }
+               elsif ($u eq 'private') {
+                       umask(077);
+               }
+               elsif ($u eq 'group') {
+                       umask(027);
+               }
+               elsif ($u eq 'public') {
+                       umask(022);
+               }
+               else {
+                       error(sprintf(gettext("unsupported umask setting %s"), $u));
+               }
        run_hooks(checkconfig => sub { shift->() });
@@ -1132,9 +1148,19 @@ sub formattime ($;$) {
+       return strftime_utf8($format, localtime($time));
+my $strftime_encoding;
+sub strftime_utf8 {
        # strftime doesn't know about encodings, so make sure
-       # its output is properly treated as utf8
-       return decode_utf8(POSIX::strftime($format, localtime($time)));
+       # its output is properly treated as utf8.
+       # Note that this does not handle utf-8 in the format string.
+       ($strftime_encoding) = POSIX::setlocale(&POSIX::LC_TIME) =~ m#\.([^@]+)#
+               unless defined $strftime_encoding;
+       $strftime_encoding
+               ? Encode::decode($strftime_encoding, POSIX::strftime(@_))
+               : POSIX::strftime(@_);
 sub date_3339 ($) {
@@ -2631,8 +2657,14 @@ sub match_link ($$;@) {
 sub match_backlink ($$;@) {
-       my $ret=match_link($_[1], $_[0], @_);
-       $ret->influences($_[1] => $IkiWiki::DEPEND_LINKS);
+       my $page=shift;
+       my $testpage=shift;
+       my %params=@_;
+       if ($testpage eq '.') {
+               $testpage = $params{'location'}
+       }
+       my $ret=match_link($testpage, $page, @_);
+       $ret->influences($testpage => $IkiWiki::DEPEND_LINKS);
        return $ret;
index fd4096edf7de153ef01145f310c459f255e3fffc..5a180cd5cf3c3eaac5282ef267982327e49eba8d 100644 (file)
@@ -272,6 +272,7 @@ sub attachments_save {
        my @attachments;
        my $dir=attachment_holding_location($form->field('page'));
        foreach my $filename (glob("$dir/*")) {
+               $filename=Encode::decode_utf8($filename);
                next unless -f $filename;
                my $destdir=$config{srcdir}."/".
@@ -345,6 +346,7 @@ sub attachment_list ($) {
        my $dir=attachment_holding_location($page);
        my $heldmsg=gettext("this attachment is not yet saved");
        foreach my $file (glob("$dir/*")) {
+               $file=Encode::decode_utf8($file);
                next unless -f $file;
                my $base=IkiWiki::basename($file);
                my $f=$loc.$base;
index c7d2b7c01d8943f26e34e43231cc4ee26e0b6847..fc497b3c7351ea2151bfb14092568dbb687c3eb2 100644 (file)
@@ -22,7 +22,6 @@ use warnings;
 use strict;
 use IkiWiki 3.00;
 use Time::Local;
-use POSIX ();
 my $time=time;
 my @now=localtime($time);
@@ -123,10 +122,10 @@ sub format_month (@) {
        # Find out month names for this, next, and previous months
-       my $monthabbrev=POSIX::strftime("%b", @monthstart);
-       my $monthname=POSIX::strftime("%B", @monthstart);
-       my $pmonthname=POSIX::strftime("%B", localtime(timelocal(0,0,0,1,$pmonth-1,$pyear-1900)));
-       my $nmonthname=POSIX::strftime("%B", localtime(timelocal(0,0,0,1,$nmonth-1,$nyear-1900)));
+       my $monthabbrev=strftime_utf8("%b", @monthstart);
+       my $monthname=strftime_utf8("%B", @monthstart);
+       my $pmonthname=strftime_utf8("%B", localtime(timelocal(0,0,0,1,$pmonth-1,$pyear-1900)));
+       my $nmonthname=strftime_utf8("%B", localtime(timelocal(0,0,0,1,$nmonth-1,$nyear-1900)));
        my $archivebase = 'archives';
        $archivebase = $config{archivebase} if defined $config{archivebase};
@@ -182,7 +181,7 @@ EOF
        my %dowabbr;
        for my $dow ($week_start_day..$week_start_day+6) {
                my @day=localtime(timelocal(0,0,0,$start_day++,$params{month}-1,$params{year}-1900));
-               my $downame = POSIX::strftime("%A", @day);
+               my $downame = strftime_utf8("%A", @day);
                my $dowabbr = substr($downame, 0, 1);
                $downame{$dow % 7}=$downame;
                $dowabbr{$dow % 7}=$dowabbr;
@@ -329,8 +328,8 @@ EOF
        for (my $month = 1; $month <= 12; $month++) {
                my @day=localtime(timelocal(0,0,0,15,$month-1,$params{year}-1900));
                my $murl;
-               my $monthname = POSIX::strftime("%B", @day);
-               my $monthabbr = POSIX::strftime("%b", @day);
+               my $monthname = strftime_utf8("%B", @day);
+               my $monthabbr = strftime_utf8("%b", @day);
                $calendar.=qq{\t<tr>\n}  if ($month % $params{months_per_row} == 1);
                my $tag;
                my $mtag=sprintf("%02d", $month);
old mode 100755 (executable)
new mode 100644 (file)
index 3ad2a0e..91a482e
@@ -9,7 +9,6 @@ use warnings;
 use strict;
 use IkiWiki 3.00;
 use Encode;
-use POSIX qw(strftime);
 use constant PREVIEW => "Preview";
 use constant POST_COMMENT => "Post comment";
@@ -460,7 +459,7 @@ sub editcomment ($$) {
        $content .= " subject=\"$subject\"\n";
-       $content .= " date=\"" . decode_utf8(strftime('%Y-%m-%dT%H:%M:%SZ', gmtime)) . "\"\n";
+       $content .= " date=\"" . strftime_utf8('%Y-%m-%dT%H:%M:%SZ', gmtime) . "\"\n";
        my $editcontent = $form->field('editcontent');
        $editcontent="" if ! defined $editcontent;
index 71566d212ba71ea3b8c2296ffeb46c0101bea92d..0a6cbfaf6358f7a53014260f71c69ae5820641dc 100644 (file)
@@ -35,10 +35,14 @@ use IkiWiki;
 use File::chdir;
 sub import {
-       hook(type => "genwrapper", id => "cvs", call => \&genwrapper);
        hook(type => "checkconfig", id => "cvs", call => \&checkconfig);
        hook(type => "getsetup", id => "cvs", call => \&getsetup);
+       hook(type => "genwrapper", id => "cvs", call => \&genwrapper);
        hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
        hook(type => "rcs", id => "rcs_prepedit", call => \&rcs_prepedit);
        hook(type => "rcs", id => "rcs_commit", call => \&rcs_commit);
@@ -52,17 +56,6 @@ sub import {
        hook(type => "rcs", id => "rcs_getmtime", call => \&rcs_getmtime);
-sub genwrapper () {
-       return <<EOF;
-       {
-               int j;
-               for (j = 1; j < argc; j++)
-                       if (strstr(argv[j], "New directory") != NULL)
-                               exit(0);
-       }
 sub checkconfig () {
        if (! defined $config{cvspath}) {
@@ -132,39 +125,22 @@ sub getsetup () {
-sub cvs_info ($$) {
-       my $field=shift;
-       my $file=shift;
-       local $CWD = $config{srcdir};
-       my $info=`cvs status $file`;
-       my ($ret)=$info=~/^\s*$field:\s*(\S+)/m;
-       return $ret;
+sub genwrapper () {
+       return <<EOF;
+       {
+               int j;
+               for (j = 1; j < argc; j++)
+                       if (strstr(argv[j], "New directory") != NULL)
+                               exit(0);
+       }
-sub cvs_runcvs(@) {
-       my @cmd = @_;
-       unshift @cmd, 'cvs', '-Q';
-       local $CWD = $config{srcdir};
-       open(my $savedout, ">&STDOUT");
-       open(STDOUT, ">", "/dev/null");
-       my $ret = system(@cmd);
-       open(STDOUT, ">&", $savedout);
-       return ($ret == 0) ? 1 : 0;
-sub cvs_is_controlling {
-       my $dir=shift;
-       $dir=$config{srcdir} unless defined($dir);
-       return (-d "$dir/CVS") ? 1 : 0;
 sub rcs_update () {
-       return unless cvs_is_controlling;
+       return unless cvs_is_controlling();
        cvs_runcvs('update', '-dP');
@@ -175,7 +151,7 @@ sub rcs_prepedit ($) {
        # The file is relative to the srcdir.
        my $file=shift;
-       return unless cvs_is_controlling;
+       return unless cvs_is_controlling();
        # For cvs, return the revision of the file when
        # editing begins.
@@ -183,31 +159,13 @@ sub rcs_prepedit ($) {
        return defined $rev ? $rev : "";
-sub commitmessage (@) {
-       my %params=@_;
-       if (defined $params{session}) {
-               if (defined $params{session}->param("name")) {
-                       return "web commit by ".
-                               $params{session}->param("name").
-                               (length $params{message} ? ": $params{message}" : "");
-               }
-               elsif (defined $params{session}->remote_addr()) {
-                       return "web commit from ".
-                               $params{session}->remote_addr().
-                               (length $params{message} ? ": $params{message}" : "");
-               }
-       }
-       return $params{message};
 sub rcs_commit (@) {
        # Tries to commit the page; returns undef on _success_ and
        # a version of the page with the rcs's conflict markers on failure.
        # The file is relative to the srcdir.
        my %params=@_;
-       return unless cvs_is_controlling;
+       return unless cvs_is_controlling();
        # Check to see if the page has been changed by someone
        # else since rcs_prepedit was called.
@@ -250,9 +208,6 @@ sub rcs_add ($) {
        my $parent=IkiWiki::dirname($file);
        my @files_to_add = ($file);
-       eval q{use File::MimeInfo};
-       error($@) if $@;
        until ((length($parent) == 0) || cvs_is_controlling("$config{srcdir}/$parent")){
                push @files_to_add, $parent;
                $parent = IkiWiki::dirname($parent);
@@ -261,15 +216,8 @@ sub rcs_add ($) {
        while ($file = pop @files_to_add) {
                if (@files_to_add == 0) {
                        # file
-                       my $filemime = File::MimeInfo::default($file);
-                       if (defined($filemime) && $filemime eq 'text/plain') {
-                               cvs_runcvs('add', $file) ||
-                                       warn("cvs add $file failed\n");
-                       }
-                       else {
-                               cvs_runcvs('add', '-kb', $file) ||
-                                       warn("cvs add binary $file failed\n");
-                       }
+                       cvs_runcvs('add', cvs_keyword_subst_args($file)) ||
+                               warn("cvs add $file failed\n");
                else {
                        # directory
@@ -283,7 +231,7 @@ sub rcs_remove ($) {
        # filename is relative to the root of the srcdir
        my $file=shift;
-       return unless cvs_is_controlling;
+       return unless cvs_is_controlling();
        cvs_runcvs('rm', '-f', $file) ||
                warn("cvs rm $file failed\n");
@@ -293,7 +241,7 @@ sub rcs_rename ($$) {
        # filenames relative to the root of the srcdir
        my ($src, $dest)=@_;
-       return unless cvs_is_controlling;
+       return unless cvs_is_controlling();
        local $CWD = $config{srcdir};
@@ -309,7 +257,7 @@ sub rcs_recentchanges ($) {
        my $num = shift;
        my @ret;
-       return unless cvs_is_controlling;
+       return unless cvs_is_controlling();
        eval q{use Date::Parse};
        error($@) if $@;
@@ -493,4 +441,74 @@ sub rcs_getmtime ($) {
        error "rcs_getmtime is not implemented for cvs\n"; # TODO
+sub commitmessage (@) {
+       my %params=@_;
+       if (defined $params{session}) {
+               if (defined $params{session}->param("name")) {
+                       return "web commit by ".
+                               $params{session}->param("name").
+                               (length $params{message} ? ": $params{message}" : "");
+               }
+               elsif (defined $params{session}->remote_addr()) {
+                       return "web commit from ".
+                               $params{session}->remote_addr().
+                               (length $params{message} ? ": $params{message}" : "");
+               }
+       }
+       return $params{message};
+sub cvs_info ($$) {
+       my $field=shift;
+       my $file=shift;
+       local $CWD = $config{srcdir};
+       my $info=`cvs status $file`;
+       my ($ret)=$info=~/^\s*$field:\s*(\S+)/m;
+       return $ret;
+sub cvs_is_controlling {
+       my $dir=shift;
+       $dir=$config{srcdir} unless defined($dir);
+       return (-d "$dir/CVS") ? 1 : 0;
+sub cvs_keyword_subst_args ($) {
+       my $file = shift;
+       local $CWD = $config{srcdir};
+       eval q{use File::MimeInfo};
+       error($@) if $@;
+       my $filemime = File::MimeInfo::default($file);
+       # if (-T $file) {
+       if (defined($filemime) && $filemime eq 'text/plain') {
+               return ($file);
+       }
+       else {
+               return ('-kb', $file);
+       }
+sub cvs_runcvs(@) {
+       my @cmd = @_;
+       unshift @cmd, 'cvs', '-Q';
+       local $CWD = $config{srcdir};
+       open(my $savedout, ">&STDOUT");
+       open(STDOUT, ">", "/dev/null");
+       my $ret = system(@cmd);
+       open(STDOUT, ">&", $savedout);
+       return ($ret == 0) ? 1 : 0;
index a5c29a352788b37c70a6a56614e95152d36f069d..54051c58c2cf836e258c110d0ec4a47d6ff1e0a2 100644 (file)
@@ -231,7 +231,7 @@ sub cgi_editpage ($$) {
                                        if ! $form->submitted && lc($page) ne $page;
                        elsif (lc $page eq lc $config{discussionpage}) {
-                               @page_locs=$best_loc=$page="$from/".lc($page);
+                               @page_locs=$best_loc="$from/".lc($page);
                        else {
                                my $dir=$from."/";
index 4ed8b89f165847832762408c05b0abedc21aaf6c..b9f997e04b123a11a50aa9dddac82d982fb2fbf7 100644 (file)
@@ -10,7 +10,8 @@ use IPC::Open2;
 sub import {
        hook(type => "getsetup", id => "graphviz", call => \&getsetup);
-       hook(type => "preprocess", id => "graph", call => \&graph);
+       hook(type => "needsbuild", id => "version", call => \&needsbuild);
+       hook(type => "preprocess", id => "graph", call => \&graph, scan => 1);
 sub getsetup () {
@@ -26,66 +27,117 @@ my %graphviz_programs = (
        "dot" => 1, "neato" => 1, "fdp" => 1, "twopi" => 1, "circo" => 1
+sub needsbuild {
+       my $needsbuild=shift;
+       foreach my $page (keys %pagestate) {
+               if (exists $pagestate{$page}{graph} &&
+                   exists $pagesources{$page} &&
+                   grep { $_ eq $pagesources{$page} } @$needsbuild) {
+                       # remove state, will be re-added if
+                       # the graph is still there during the rebuild
+                       delete $pagestate{$page}{graph};
+               }
+       }       
+       return $needsbuild;
 sub render_graph (\%) {
        my %params = %{(shift)};
-       my $src = "$params{type} g {\n";
-       $src .= "charset=\"utf-8\";\n";
+       my $src = "charset=\"utf-8\";\n";
        $src .= "ratio=compress;\nsize=\"".($params{width}+0).", ".($params{height}+0)."\";\n"
                if defined $params{width} and defined $params{height};
        $src .= $params{src};
        $src .= "}\n";
-       # Use the sha1 of the graphviz code as part of its filename.
+       # Use the sha1 of the graphviz code as part of its filename,
+       # and as a unique identifier for its imagemap.
        eval q{use Digest::SHA};
        error($@) if $@;
-       my $dest=$params{page}."/graph-".
-               IkiWiki::possibly_foolish_untaint(Digest::SHA::sha1_hex($src)).
-               ".png";
+       my $sha=IkiWiki::possibly_foolish_untaint(Digest::SHA::sha1_hex($params{type}.$src));
+       $src = "$params{type} graph$sha {\n".$src;
+       my $dest=$params{page}."/graph-".$sha.".png";
        will_render($params{page}, $dest);
-       if (! -e "$config{destdir}/$dest") {
+       my $map=$pagestate{$params{destpage}}{graph}{$sha};
+       if (! -e "$config{destdir}/$dest" || ! defined $map) {
+               # Use ikiwiki's function to create the image file, this makes
+               # sure needed subdirs are there and does some sanity checking.
+               writefile($dest, $config{destdir}, "");
                my $pid;
                my $sigpipe=0;
                $SIG{PIPE}=sub { $sigpipe=1 };
-               $pid=open2(*IN, *OUT, "$params{prog} -Tpng");
+               $pid=open2(*IN, *OUT, "$params{prog} -Tpng -o '$config{destdir}/$dest' -Tcmapx");
                # open2 doesn't respect "use open ':utf8'"
+               binmode (IN, ':utf8');
                binmode (OUT, ':utf8');
                print OUT $src;
                close OUT;
-               my $png;
-               {
-                       local $/ = undef;
-                       $png = <IN>;
-               }
+               local $/ = undef;
+               $map=$pagestate{$params{destpage}}{graph}{$sha}=<IN>;
                close IN;
                waitpid $pid, 0;
-               error gettext("failed to run graphviz") if $sigpipe;
-               if (! $params{preview}) {
-                       writefile($dest, $config{destdir}, $png, 1);
-               }
-               else {
-                       # in preview mode, embed the image in a data uri
-                       # to avoid temp file clutter
-                       eval q{use MIME::Base64};
-                       error($@) if $@;
-                       return "<img src=\"data:image/png;base64,".
-                               encode_base64($png)."\" />";
-               }
+               error gettext("failed to run graphviz") if ($sigpipe || $?);
-       return "<img src=\"".urlto($dest, $params{destpage})."\" />\n";
+       return "<img src=\"".urlto($dest, $params{destpage}).
+               "\" usemap=\"#graph$sha\" />\n".
+               $map;
 sub graph (@) {
        my %params=@_;
-       $params{src} = "" unless defined $params{src};
+       # Support wikilinks in the graph source.
+       my $src=$params{src};
+       $src="" unless defined $src;
+       $src=IkiWiki::linkify($params{page}, $params{destpage}, $params{src});
+       return unless defined wantarray; # scan mode short-circuit
+       if ($src ne $params{src}) {
+               # linkify makes html links, but graphviz wants plain
+               # urls. This is, frankly a hack: Process source as html,
+               # throw out everything inside tags that is not a href.
+               my $s;
+               my $nested=0;
+               use HTML::Parser;
+               error $@ if $@;
+               my $p=HTML::Parser->new(api_version => 3);
+               $p->handler(start => sub {
+                       my %attrs=%{shift()};
+                       if (exists $attrs{href}) {
+                               if ($s=~/href\s*=\s*"$/) {
+                                       $s.=$attrs{href};
+                               }
+                               elsif ($s=~/href\s*=\s*$/) {
+                                       $s.="\"$attrs{href}\"";
+                               }
+                               else {
+                                       $s.="href=\"$attrs{href}\"";
+                               }
+                       }
+                       $nested++;
+               }, "attr");
+               $p->handler(end => sub {
+                       $nested--;
+               });
+               $p->handler(default => sub {
+                       $s.=join("", @_) unless $nested;
+               }, "text");
+               $p->parse($src);
+               $p->eof;
+               $params{src}=$s;
+       }
+       else {
+               $params{src}=$src;
+       }
        $params{type} = "digraph" unless defined $params{type};
        $params{prog} = "dot" unless defined $params{prog};
        error gettext("prog not a valid graphviz program") unless $graphviz_programs{$params{prog}};
index 33d136fbf44c0277d2a540f77b9615bc2eb6ddcc..4e86207f101224cfb216dfbff8609ac5973bdbd5 100644 (file)
@@ -52,7 +52,7 @@ sub getsetup () {
 sub checkconfig () {
        eval q{use highlight};
-       if (highlight::DataDir->can('new')){
+       if (highlight::DataDir->can('new')) {
                $data_dir=new highlight::DataDir();
        } else {
index b98e843d436b1aed68ca13a12da94ee44a74dd06..b92e24cc06fb93d8d88adcf1517903e46e49dc25 100644 (file)
@@ -118,7 +118,6 @@ sub preprocess (@) {
                                error sprintf(gettext("failed to read %s: %s"), $outfile, $r) if $r;
                        else {
-                               ($dwidth, $dheight)=($w, $h);
                                $r = $im->Resize(geometry => "${w}x${h}");
                                error sprintf(gettext("failed to resize: %s"), $r) if $r;
@@ -132,9 +131,10 @@ sub preprocess (@) {
                                        $imglink = $file;
-                       $dwidth = $im->Get("width") unless defined $dwidth;
-                       $dheight = $im->Get("height") unless defined $dheight;
+                       # always get the true size of the resized image
+                       $dwidth  = $im->Get("width"); 
+                       $dheight = $im->Get("height");
        else {
index b892eabee29be50387fa493baafd5dbd6d1024a8..430194bffdcc6444f34036709d9dc3767187af85 100644 (file)
@@ -25,6 +25,13 @@ sub getsetup () {
                        safe => 1,
                        rebuild => 1,
+               nodiscount => {
+                       type => "boolean",
+                       example => 0,
+                       description => "disable use of markdown discount?",
+                       safe => 1,
+                       rebuild => 1,
+               },
 my $markdown_sub;
@@ -50,6 +57,25 @@ sub htmlize (@) {
+               if (! defined $markdown_sub &&
+                   (! exists $config{nodiscount} || ! $config{nodiscount})) {
+                       eval q{use Text::Markdown::Discount};
+                       if (! $@) {
+                               $markdown_sub=sub {
+                                       my $t=shift;
+                                       # Workaround for discount binding bug
+                                       # https://rt.cpan.org/Ticket/Display.html?id=73657
+                                       return "" if $t=~/^\s*$/;
+                                       # Workaround for discount's eliding
+                                       # of <style> blocks.
+                                       # https://rt.cpan.org/Ticket/Display.html?id=74016
+                                       $t=~s/<style/<elyts/ig;
+                                       my $r=Text::Markdown::Discount::markdown($t);
+                                       $r=~s/<elyts/<style/ig;
+                                       return $r;
+                               }
+                       }
+               }
                if (! defined $markdown_sub) {
                        eval q{use Text::Markdown};
                        if (! $@) {
index 71297572d7b74a5042e18fd93128a4dca773e170..41882279331f8b1a2171bb98197602197ba64190 100644 (file)
@@ -31,13 +31,21 @@ sub pagetemplate (@) {
                my @lines=IkiWiki::rcs_diff($params{rev}, $maxlines+1);
                if (@lines) {
                        my $diff;
+                       my $trunc=0;
                        if (@lines > $maxlines) {
-                               $diff=join("", @lines[0..($maxlines-1)])."\n".
-                                       gettext("(Diff truncated)");
+                               $diff=join("", @lines[0..($maxlines-1)]);
+                               $trunc=1;
                        else {
                                $diff=join("", @lines);
+                       if (length $diff > 102400) {
+                               $diff=substr($diff, 0, 10240);
+                               $trunc=1;
+                       }
+                       if ($trunc) {
+                               $diff.="\n".gettext("(Diff truncated)");
+                       }
                        # escape html
                        $diff = encode_entities($diff);
                        # escape links and preprocessor stuff
index 096c92616aa76e2414775b6ed67f8ef9fecd24bf..605f415994e73bee121faab9fb7e5e64f1a02182 100644 (file)
@@ -201,7 +201,7 @@ sub pagetemplate (@) {
                if (defined $tags && %$tags) {
                        eval q{use HTML::Entities};
                        $template->param(categories =>
-                               [map { category => HTML::Entities::encode_entities(tagname($_)) },
+                               [map { category => HTML::Entities::encode_entities_numeric(tagname($_)) },
                                        sort keys %$tags]);
index c73adfbbb84b34462eaa474ca315570aba85cc44..5908e09f953ad09cb576cae6c956230be497d6df 100644 (file)
@@ -35,10 +35,17 @@ EOF
                        "u != $uid";
                } @{$config{untrusted_committers}}).
-               ") exit(0);\n";
+               ") {\n";
+                       /* Trusted user.
+                        * Consume all stdin before exiting, as git may
+                        * otherwise be unhappy. */
+                       char buf[256];
+                       while (read(0, &buf, 256) != 0) {}
+                       exit(0);
+               }
                asprintf(&s, "CALLER_UID=%i", u);
index c8506930475a0c28ead9e613e7cde64d982b6db9..ea7d763bbd26435c9dfb9462e1930f4cf7920b7a 100644 (file)
@@ -14,7 +14,10 @@ sub import {
 sub gendump ($@) {
        my $class=shift;
-       "#!/usr/bin/perl",
+       my $thisperl = eval q{use Config; $Config{perlpath}};
+       error($@) if $@;
+       "#!$thisperl",
        (map { "# $_" } @_),
        "use IkiWiki::Setup::Standard {",
index 6da93bb644bb5f639dd6871b492782cfa059345d..6bf20f480d523ad5144dc6d1b61ec03d1f0118b5 100644 (file)
@@ -11,10 +11,8 @@ sub loaddump ($$) {
        my $class=shift;
        my $content=shift;
-       eval q{use YAML::Any};
-       eval q{use YAML} if $@;
+       eval q{use YAML::XS};
        die $@ if $@;
-       $YAML::Syck::ImplicitUnicode=1;
@@ -35,12 +33,12 @@ sub dumpline ($$$$) {
        my $type=shift;
        my $prefix=shift;
-       eval q{use YAML::Old};
-       eval q{use YAML} if $@;
+       eval q{use YAML::XS};
        die $@ if $@;
-       $YAML::UseHeader=0;
+       $YAML::XS::QuoteNumericStrings=0;
-       my $dump=Dump({$key => $value});
+       my $dump=decode_utf8(Dump({$key => $value}));
+       $dump=~s/^---\n//; # yaml header, we don't want
        chomp $dump;
        if (length $prefix) {
                $dump=join("\n", map { $prefix.$_ } split(/\n/, $dump));
index b19636c60c90ad5fbc0db4bbb0b7c0ba0904fa5d..69ba5e5ef6260130fb9a2fd2c4514ae86d409dd3 100755 (executable)
@@ -19,11 +19,14 @@ SED?=sed
 # Additional configurable path variables.
 tflag=$(shell if [ -n "$$NOTAINT" ] && [ "$$NOTAINT" != 1 ]; then printf -- "-T"; fi)
 extramodules=$(shell if [ "$$PROFILE" = 1 ]; then printf -- "-d:NYTProf"; fi)
 outprogs=ikiwiki.out ikiwiki-transition.out ikiwiki-calendar.out
 scripts=ikiwiki-update-wikilist ikiwiki-makerepo
+sysconfdir_scripts=ikiwiki-mass-rebuild ikiwiki-update-wikilist
        if [ "$(INSTALLDIRS)" = "perl" ]; then \\
@@ -42,7 +45,7 @@ PROBABLE_INST_LIB=$(shell \\
        HOME=/home/me $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.in -dumpsetup ikiwiki.setup
-extra_build: $(outprogs) ikiwiki.setup docwiki
+extra_build: $(outprogs) ikiwiki.setup docwiki sysconfdir
        ./mdwn2man ikiwiki 1 doc/usage.mdwn > ikiwiki.man
        ./mdwn2man ikiwiki-mass-rebuild 8 doc/ikiwiki-mass-rebuild.mdwn > ikiwiki-mass-rebuild.man
        ./mdwn2man ikiwiki-makerepo 1 doc/ikiwiki-makerepo.mdwn > ikiwiki-makerepo.man
@@ -50,12 +53,15 @@ extra_build: $(outprogs) ikiwiki.setup docwiki
        ./mdwn2man ikiwiki-update-wikilist 1 doc/ikiwiki-update-wikilist.mdwn > ikiwiki-update-wikilist.man
        ./mdwn2man ikiwiki-calendar 1 doc/ikiwiki-calendar.mdwn > ikiwiki-calendar.man
        $(MAKE) -C po
-       $(SED) -i.bkp "s/Version:.*/Version: $(VER)/" ikiwiki.spec
+       $(PERL) -pi.bkp -e "s/Version:.*/Version: $(VER)/" ikiwiki.spec
        rm -f ikiwiki.spec.bkp
        $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.in -setup docwiki.setup -refresh
+       $(PERL) -pi -e "s|/etc/ikiwiki|$(SYSCONFDIR)|g" $(sysconfdir_scripts)
        $(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.in -setup docwiki.setup -clean
        rm -f *.man $(outprogs) ikiwiki.setup plugins/*.pyc
@@ -70,7 +76,7 @@ underlay_install:
        for dir in `cd underlays && $(FIND) . -follow -type d`; do \
                install -d $(DESTDIR)$(PREFIX)/share/ikiwiki/$$dir; \
                for file in `$(FIND) underlays/$$dir -follow -maxdepth 1 -type f -not -name \\*.full.js -not -name \\*.full.css`; do \
-                       cp -aL $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$dir 2>/dev/null || \
+                       cp -pRL $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$dir 2>/dev/null || \
                        install -m 644 $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$dir; \
                done; \
@@ -79,7 +85,7 @@ underlay_install:
        install -d $(DESTDIR)$(PREFIX)/share/ikiwiki/directives/ikiwiki/directive
        for file in doc/ikiwiki/directive/*; do \
                if [ -f "$$file" ]; then \
-                       cp -aL $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/directives/ikiwiki/directive 2>/dev/null || \
+                       cp -pRL $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/directives/ikiwiki/directive 2>/dev/null || \
                        install -m 644 $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/directives/ikiwiki/directive; \
                fi \
@@ -94,7 +100,7 @@ underlay_install:
                        elif echo "$$file" | grep -q base.css; then \
                                :; \
                        elif [ -f "$$file" ]; then \
-                               cp -aL $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$file 2>/dev/null || \
+                               cp -pRL $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$file 2>/dev/null || \
                                install -m 644 $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$file; \
                        fi \
                done; \
@@ -106,7 +112,7 @@ extra_install: underlay_install
                install -d $(DESTDIR)$(PREFIX)/share/ikiwiki/examples/$$dir; \
        for file in `cd doc/examples; $(FIND) . -type f ! -regex '.*discussion.*'`; do \
-               cp -aL doc/examples/$$file $(DESTDIR)$(PREFIX)/share/ikiwiki/examples/$$file 2>/dev/null || \
+               cp -pRL doc/examples/$$file $(DESTDIR)$(PREFIX)/share/ikiwiki/examples/$$file 2>/dev/null || \
                install -m 644 doc/examples/$$file $(DESTDIR)$(PREFIX)/share/ikiwiki/examples/$$file; \
@@ -125,15 +131,15 @@ extra_install: underlay_install
                install -m 755 $$file $(DESTDIR)$(PREFIX)/lib/ikiwiki/plugins; \
-       install -d $(DESTDIR)$(PREFIX)/share/man/man1
-       install -m 644 ikiwiki.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki.1
-       install -m 644 ikiwiki-makerepo.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki-makerepo.1
-       install -m 644 ikiwiki-transition.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki-transition.1
-       install -m 644 ikiwiki-update-wikilist.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki-update-wikilist.1
-       install -m 644 ikiwiki-calendar.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki-calendar.1
+       install -d $(DESTDIR)$(MANDIR)/man1
+       install -m 644 ikiwiki.man $(DESTDIR)$(MANDIR)/man1/ikiwiki.1
+       install -m 644 ikiwiki-makerepo.man $(DESTDIR)$(MANDIR)/man1/ikiwiki-makerepo.1
+       install -m 644 ikiwiki-transition.man $(DESTDIR)$(MANDIR)/man1/ikiwiki-transition.1
+       install -m 644 ikiwiki-update-wikilist.man $(DESTDIR)$(MANDIR)/man1/ikiwiki-update-wikilist.1
+       install -m 644 ikiwiki-calendar.man $(DESTDIR)$(MANDIR)/man1/ikiwiki-calendar.1
-       install -d $(DESTDIR)$(PREFIX)/share/man/man8
-       install -m 644 ikiwiki-mass-rebuild.man $(DESTDIR)$(PREFIX)/share/man/man8/ikiwiki-mass-rebuild.8
+       install -d $(DESTDIR)$(MANDIR)/man8
+       install -m 644 ikiwiki-mass-rebuild.man $(DESTDIR)$(MANDIR)/man8/ikiwiki-mass-rebuild.8
        install -d $(DESTDIR)$(PREFIX)/sbin
        install ikiwiki-mass-rebuild $(DESTDIR)$(PREFIX)/sbin
@@ -150,10 +156,10 @@ extra_install: underlay_install
        # These might fail if a regular user is installing into a home
        # directory.
-       -install -d $(DESTDIR)/etc/ikiwiki
-       -install -m 0644 wikilist $(DESTDIR)/etc/ikiwiki
-       -install -m 0644 auto.setup $(DESTDIR)/etc/ikiwiki
-       -install -m 0644 auto-blog.setup $(DESTDIR)/etc/ikiwiki
+       -install -d $(DESTDIR)$(SYSCONFDIR)
+       -install -m 0644 wikilist $(DESTDIR)$(SYSCONFDIR)
+       -install -m 0644 auto.setup $(DESTDIR)$(SYSCONFDIR)
+       -install -m 0644 auto-blog.setup $(DESTDIR)$(SYSCONFDIR)
 # The git/hg plugins want to chdir; so does Devel::Cover. Skip those tests
 # to stop them hurting each other.
index f8de0d3e91b3b8cc2cdfdfd43206e8bee391d288..c8db76966c97c4cd156d0227219b5b35c7f8f54b 100644 (file)
@@ -1,3 +1,62 @@
+ikiwiki (3.20120202) unstable; urgency=low
+  * mdwn: Added nodiscount setting, which can be used to avoid using the
+    markdown discount engine, when maximum compatability is needed.
+  * Switch to YAML::XS to work around insanity in YAML::Mo. Closes: #657533
+  * cvs: Ensure text files are added in non-binary mode. (Amitai Schlair)
+  * cvs: Various cleanups and testing. (Amitai Schlair)
+  * calendar: Fix strftime encoding bug.
+  * shortcuts: Fixed a broken shortcut to wikipedia (accidentially
+    made into a shortcut to wikiMedia).
+  * Various portability improvements. (Amitai Schlair)
+ -- Joey Hess <joeyh@debian.org>  Thu, 02 Feb 2012 21:42:40 -0400
+ikiwiki (3.20120115) unstable; urgency=low
+  * Make backlink(.) work. Thanks, Giuseppe Bilotta.
+  * mdwn: Workaround discount's eliding of <style> blocks.
+  * attachment: Fix utf-8 display bug.
+ -- Joey Hess <joeyh@debian.org>  Sun, 15 Jan 2012 16:19:25 -0400
+ikiwiki (3.20120109) unstable; urgency=low
+  * mdwn: Can use the discount markdown library, via the
+    Text::Markdown::Discount perl module. This is preferred if available
+    since it's the fastest currently supported markdown library, speeding up
+    ikiwiki's markdown rendering by a factor of 40.
+    (However, when multimarkdown is enabled, Text::Markdown::Multimarkdown
+    is still used.)
+  * On Debian, depend on libtext-markdown-discount.
+ -- Joey Hess <joeyh@debian.org>  Mon, 09 Jan 2012 11:49:14 -0400
+ikiwiki (3.20111229) unstable; urgency=low
+  * Consume all stdin when rcs_receive short-circuits,
+    to avoid git SIGPIPE race.
+  * Add path and path_natural sort orders (smcv)
+  * Test coverage can be checked with `make coverage` (smcv)
+  * tag: encode categories using numeric values. (tango)
+ -- Joey Hess <joeyh@debian.org>  Thu, 29 Dec 2011 12:00:53 -0400
+ikiwiki (3.20111107) unstable; urgency=low
+  * img: Bugfix to width/height tags for scaled down image when only
+    one dimension was provided. Thanks, Per Carlson.
+  * editpage: Fix FormattingHelp link on Discussion pages.
+  * The umask setting can now be set to private, group, or public,
+    avoiding the need to enter octal correctly which is particularly
+    difficult in yaml setup files. (smcv)
+  * graphviz: Support urls embedded in the graph, by having graphviz
+    generate an imagemap.
+  * graphviz: Support wikilinks embedded in the graph.
+    (Sponsored by The TOVA Company.)
+ -- Joey Hess <joeyh@debian.org>  Wed, 30 Nov 2011 16:31:48 -0400
 ikiwiki (3.20111106) unstable; urgency=low
   * searchquery.tmpl: Track escaping change in upstream template.
index 03b3ea8b386afc4a60a175d7e7cf71be9812a621..9403dfb442fdd5a45d5aeaebaad21fb87e9497f6 100644 (file)
@@ -3,27 +3,26 @@ Section: web
 Priority: optional
 Build-Depends: perl, debhelper (>= 7.0.50)
 Build-Depends-Indep: dpkg-dev (>= 1.9.0), libxml-simple-perl,
-  libtext-markdown-perl | markdown, 
+  libtext-markdown-discount-perl,
   libtimedate-perl, libhtml-template-perl,
   libhtml-scrubber-perl, wdg-html-validator,
   libhtml-parser-perl, liburi-perl (>= 1.36), perlmagick, po4a (>= 0.34),
-  libfile-chdir-perl, libyaml-perl, python-support
+  libfile-chdir-perl, libyaml-libyaml-perl, python-support
 Maintainer: Joey Hess <joeyh@debian.org>
 Uploaders: Josh Triplett <josh@freedesktop.org>
 Standards-Version: 3.9.2
 Homepage: http://ikiwiki.info/
 Vcs-Git: git://git.ikiwiki.info/
-Vcs-Browser: http://git.ikiwiki.info/?p=ikiwiki
 Package: ikiwiki
 Architecture: all
 Depends: ${misc:Depends}, ${perl:Depends}, ${python:Depends}, 
-  libtext-markdown-perl | markdown,
+  libtext-markdown-discount-perl,
   libhtml-scrubber-perl, libhtml-template-perl,
-  libhtml-parser-perl, liburi-perl (>= 1.36), libyaml-perl, libjson-perl
+  libhtml-parser-perl, liburi-perl (>= 1.36), libyaml-libyaml-perl, libjson-perl
 Recommends: gcc | c-compiler, 
   libc6-dev | libc-dev,
-  subversion | git-core (>= 1:1.5.0) | git (>= 1:1.7) | tla | bzr (>= 0.91) | mercurial | monotone (>= 0.38) | darcs,
+  git (>= 1:1.7) | git-core (>= 1:1.5.0) | subversion | tla | bzr (>= 0.91) | mercurial | monotone (>= 0.38) | darcs,
   libxml-simple-perl, libnet-openid-consumer-perl, libcrypt-ssleay-perl,
   liblwpx-paranoidagent-perl, libtimedate-perl,
   libcgi-formbuilder-perl (>= 3.05), libcgi-session-perl (>= 4.14-1),
index 72074d813fcea3085e1cae7ffcbc7b34f0918e5e..74418281dcf813c5686990c3b784cfdfdc28143b 100644 (file)
@@ -271,3 +271,21 @@ License: GPL-2+
  The full text of the GPL is distributed as doc/GPL in ikiwiki's source,
  and is distributed in /usr/share/common-licenses/GPL-2 on Debian systems.
+License: Expat
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+ .
index fed6cd0268f71f74e80993efefc105ab83b12509..902e4086f9733cce4e2d11536c5c4e8007b9d92b 100644 (file)
@@ -1,5 +1,5 @@
 I can't check the last changes in Ikiwiki using
-[gitweb](http://git.ikiwiki.info/?p=ikiwiki). It looks like XML
+gitweb. It looks like XML
 validation problem with HTML entity.
 When I click a appropriate link on a [[git]] page, then I can only
@@ -12,8 +12,8 @@ see the following error message. --[[Paweł|ptecza]]
 > as the diff links in RecentChanges, both seem to be working. --[[Joey]]
 >> Hm. It's strange. I really could see the error message like above
->> when I sent my report. It seems that <http://git.ikiwiki.info/?p=ikiwiki>
->> URL works now. So, we should be happy that it was self-fixed bug ;)
+>> when I sent my report. It seems that
+>> works now. So, we should be happy that it was self-fixed bug ;)
 >> --[[Paweł|ptecza]]
 >>> If it happens again, maybe take a full dump of the page? [[done]]
diff --git a/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn b/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn
new file mode 100644 (file)
index 0000000..80e9f2c
--- /dev/null
@@ -0,0 +1,73 @@
+I studied this [[guy's problem|forum/Encoding_problem_in_french_with_ikiwiki-calendar]] and I propose here a (dirty) hack to correct it.
+Bug summary: when using the [[calendar plugin|plugins/calendar]] in French (`LANG=fr_FR.UTF-8`), "Décembre" (French for "December") is rendered as "Décembre".
+I managed to track this problem down to an encoding problem of `POSIX::strftime` in `Ikiwiki/Plugin/calendar.pm`. I used [[this guy's solution|http://www.perlmonks.org/?node_id=857018]] to solve the problem (the diff is printed below).
+The problem is that I do not know Perl, encoding is one of the thing I would be happy not to dive into, and it is the first time I contribute to Ikiwiki: I copied and made a few changes to the code I found without understanding it. So I am not sure that my code is neat, or works in every situation. Feel free to (help me to) improve it!
+> Yes, this seems basically right. I've applied a modified version of this.
+> [[done]]
+> --[[Joey]] 
+    diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
+    index c7d2b7c..1345939 100644
+    --- a/IkiWiki/Plugin/calendar.pm
+    +++ b/IkiWiki/Plugin/calendar.pm
+    @@ -22,7 +22,14 @@ use warnings;
+     use strict;
+     use IkiWiki 3.00;
+     use Time::Local;
+    -use POSIX ();
+    +
+    +use POSIX qw/setlocale LC_TIME strftime/;
+    +use Encode;
+    +my ($strftime_encoding)= setlocale(LC_TIME)=~m#\.([^@]+)#;
+    +sub strftime_utf8 {
+    +# try to return an utf8 value from strftime
+    +  $strftime_encoding ? Encode::decode($strftime_encoding, &strftime) : &strftime;
+    +}
+     my $time=time;
+     my @now=localtime($time);
+    @@ -123,10 +130,10 @@ sub format_month (@) {
+       }
+       # Find out month names for this, next, and previous months
+    -  my $monthabbrev=POSIX::strftime("%b", @monthstart);
+    -  my $monthname=POSIX::strftime("%B", @monthstart);
+    -  my $pmonthname=POSIX::strftime("%B", localtime(timelocal(0,0,0,1,$pmonth-1,$pyear-1900)));
+    -  my $nmonthname=POSIX::strftime("%B", localtime(timelocal(0,0,0,1,$nmonth-1,$nyear-1900)));
+    +  my $monthabbrev=strftime_utf8("%b", @monthstart);
+    +  my $monthname=strftime_utf8("%B", @monthstart);
+    +  my $pmonthname=strftime_utf8("%B", localtime(timelocal(0,0,0,1,$pmonth-1,$pyear-1900)));
+    +  my $nmonthname=strftime_utf8("%B", localtime(timelocal(0,0,0,1,$nmonth-1,$nyear-1900)));
+       my $archivebase = 'archives';
+       $archivebase = $config{archivebase} if defined $config{archivebase};
+    @@ -182,7 +189,7 @@ EOF
+       my %dowabbr;
+       for my $dow ($week_start_day..$week_start_day+6) {
+               my @day=localtime(timelocal(0,0,0,$start_day++,$params{month}-1,$params{year}-1900));
+    -          my $downame = POSIX::strftime("%A", @day);
+    +          my $downame = strftime_utf8("%A", @day);
+               my $dowabbr = substr($downame, 0, 1);
+               $downame{$dow % 7}=$downame;
+               $dowabbr{$dow % 7}=$dowabbr;
+    @@ -329,8 +336,8 @@ EOF
+       for (my $month = 1; $month <= 12; $month++) {
+               my @day=localtime(timelocal(0,0,0,15,$month-1,$params{year}-1900));
+               my $murl;
+    -          my $monthname = POSIX::strftime("%B", @day);
+    -          my $monthabbr = POSIX::strftime("%b", @day);
+    +          my $monthname = strftime_utf8("%B", @day);
+    +          my $monthabbr = strftime_utf8("%b", @day);
+               $calendar.=qq{\t<tr>\n}  if ($month % $params{months_per_row} == 1);
+               my $tag;
+               my $mtag=sprintf("%02d", $month);
index aeeb9e21bae73ab8d8e0103fcf0bde35878a5753..eb95e99927abf1165b8effbd91da7de129213d73 100644 (file)
@@ -1,4 +1,4 @@
-The final `</div>` in [`recentchanges.tmpl`][tmpl] gets wrapped in a
+The final `</div>` in `recentchanges.tmpl` gets wrapped in a
 `<p>` tag for some reason, resulting in the following invalid XHTML at
 the end of the [[RecentChanges]] page
@@ -17,7 +17,6 @@ plugin should be disabled on [[RecentChanges]]?
 See the [validator output][validate] for more details.
- [tmpl]: http://git.ikiwiki.info/?p=ikiwiki;a=blob_plain;f=templates/recentchanges.tmpl;hb=HEAD
  [validate]: http://validator.w3.org/check?uri=http://ikiwiki.info/recentchanges/
 - - -
diff --git a/doc/bugs/Running_on_an_alternative_port_fails.mdwn b/doc/bugs/Running_on_an_alternative_port_fails.mdwn
new file mode 100644 (file)
index 0000000..942700b
--- /dev/null
@@ -0,0 +1,93 @@
+Can't appear to get 'wiki' functions (i.e. editing) running when ikiwiki is running on a port other than the default (port 80).  Somewhere in the processing it considers the base URL to exclude the port number and the websever throws back an error finding the page.
+For example if you run on 'http://my.gear.xxx:8080/' then after clicking login (using default password auth) it will process and try to redirect you to 'http://my.gear.xxx/cgi-bin/ikiwiki.cgi'.  I'm assuming that somewhere we've used the 'path' and the 'host' and dropped the remainder.  I can figure out where this is yet but I'll post back if I get lucky.
+ -- fergus
+NB: both the 'url' and the 'cgiurl' include the port and removing the port element provides the expected functionality.
+> I tried to reproduce this by making my laptop's web server use port
+> 8080. Set up ikiwiki to use that in cgiurl and url, and had
+> no problem with either openid or password auth login.
+> Ikiwiki has had some changes in this area in the past year; you don't say
+> what version you were using. It could also be a problem with your web
+> server, conceviably, if didn't correctly communicate the port to the cgi
+> program. --[[Joey]]
+>> I did think of that so threw a 'printenv' script to check the port was arriving 
+>>>     SERVER_PORT=8181  
+>>>     HTTP_HOST=zippy0.ie0.cobbled.net  
+[ ... ]
+>>>> In apache, `HTTP_HOST` includes the port. This is not part of the CGI
+>>>> spec it seems, but perl's `CGI` module seems to rely on it,
+>>>> in `virtual_port`:
+>>>>>     my $vh = $self->http('x_forwarded_host') || $self->http('host');
+>>>>>     my $protocol = $self->protocol;
+>>>>>     if ($vh) {
+>>>>>        return ($vh =~ /:(\d+)$/)[0] || ($protocol eq 'https' ? 443 : 80);
+>>>> The `CGI` module only looks at `SERVER_PORT` when there's no
+>>>> `HTTP_HOST`. So this is either a bug in perl's CGI or thttpd.
+>>>> --[[Joey]]
+[ ... ]
+>>>>> This is interesting.  If HTTP_HOST is wrong then
+>>>>> 0. the client header must be wrong (i.e. not including the PORT)
+>>>>> 0. `perl`'s doing something bad[tm] (or at least lazy)
+>>>>> 0. `apache` is adding it
+>>>>> 0. `thttpd` is stripping it
+>>>>> Quick hack shows that `thttpd` must be stripping the port
+number from the `Host:` header.  That can be fixed.
+>>>>> Thanks for the assist. -- fergus
+Patch for `thttpd-2.25b` for posterity and completeness
+[[!format patch """
+diff --git a/libhttpd.c b/libhttpd.c
+index 73689be..039b7e3 100644
+--- a/libhttpd.c
++++ b/libhttpd.c
+@@ -2074,9 +2074,6 @@ httpd_parse_request( httpd_conn* hc )
+               cp = &buf[5];
+               cp += strspn( cp, " \t" );
+               hc->hdrhost = cp;
+-              cp = strchr( hc->hdrhost, ':' );
+-              if ( cp != (char*) 0 )
+-                  *cp = '\0';
+               if ( strchr( hc->hdrhost, '/' ) != (char*) 0 || hc->hdrhost[0] == '.' )
+                   {
+                   httpd_send_err( hc, 400, httpd_err400title, "", httpd_err400form, "" );
+-- fergus
+I've gone ahead and filed a bug on CGI.pm too:
+<https://rt.cpan.org/Ticket/Display.html?id=72678> --[[Joey]] 
+That'll be an interesting discussion as I'd suggest that HTTP_ headers are defined in the CGI specification as client headers and thus what `thttpd` is doing is wrong (i.e. mangling the client's own representation).  Whether a CGI client should trust HTTP_ header over the server is probably already settled by convention.
+-- fergus
diff --git a/doc/bugs/Sub-Discussion_pages_have_a_broken___34__FormattingHelp__34___link.mdwn b/doc/bugs/Sub-Discussion_pages_have_a_broken___34__FormattingHelp__34___link.mdwn
new file mode 100644 (file)
index 0000000..8f87329
--- /dev/null
@@ -0,0 +1,3 @@
+For an example of what I mean, go to [[TourBusStop]]. Click the Discussion link. Click the <code>FormattingHelp</code> link. You'll be sent to [TourBusStop/ikiwiki/formatting](/TourBusStop/ikiwiki/formatting/) which of course doesn't exist.
+> A bug introduced in the last release. [[fixed|done]] --[[Joey]] 
diff --git a/doc/bugs/UTF-8_in_attachment_filenames.mdwn b/doc/bugs/UTF-8_in_attachment_filenames.mdwn
new file mode 100644 (file)
index 0000000..07fff88
--- /dev/null
@@ -0,0 +1,25 @@
+I have ikiwiki_3.20111229 installed on Debian Squeeze (Perl 5.10.1, UTF-8
+locale). The attachment plugin mangles UTF8-encoded attachment filenames if
+the name contains multibyte characters, e.g. "lää.png" becomes "lää.png".
+Apparently glob returns byte strings which are subject to implicit
+upgrading when concatenated with Perl strings. The following patch fixes
+the problem for me:
+    diff -r -U 1 a/attachment.pm b/attachment.pm
+    --- a/attachment.pm        2012-01-13 23:07:29.000000000 +0200
+    +++ b/attachment.pm        2012-01-13 23:33:07.000000000 +0200
+    @@ -274,2 +274,3 @@
+       foreach my $filename (glob("$dir/*")) {
+    +      $filename=Encode::decode_utf8($filename);
+               next unless -f $filename;
+    @@ -347,2 +348,3 @@
+       foreach my $file (glob("$dir/*")) {
+    +      $file = Encode::decode_utf8($file);
+               next unless -f $file;
+> Seems it only mangled display of the just-uploaded attachment's filename,
+> the attachment was otherwise saved to disk with a valid UTF-8 name, and
+> doing other stuff with it also was ok. In any case, I applied your patch,
+> thanks. [[done]] --[[Joey]]
diff --git a/doc/bugs/W3MMode_still_uses_http:__47____47__localhost__63__.mdwn b/doc/bugs/W3MMode_still_uses_http:__47____47__localhost__63__.mdwn
new file mode 100644 (file)
index 0000000..3c28e37
--- /dev/null
@@ -0,0 +1,24 @@
+My setup matches w3mmode [[w3mmode/ikiwiki.setup]] exactly.
+My doc/index.mdwn just has a line or two of plain text.
+When I try to edit that page in w3m, it works fine until I push [Save Page].
+Then I just get a page that only contains "403".
+ikiwiki version is 3.20110715ubuntu1.
+w3m is 0.5.3.
+-- [[terry|tjgolubi]]
+I made it work, though probably not completely, by renaming
+~/.ikiwiki/wrappers/ikiwiki.cgi to ikiwiki2.cgi and replacing it with:
+    #!/bin/bash
+    /home/tjgolubi/.ikiwiki/wrappers/ikiwiki2.cgi $* | sed -e 's,http://localhost,file://,g'
+I'm afraid that this hack may have bad side-effects, but I hope it points you to the cause/solution.
+Of course, the next time I rerun ikiwiki --setup, it will overwrite my wrapper-wrapper.
+-- [[terry|tjgolubi]]
+I made a logfile of all the args, env, and stdin/stdout to/from my wrapper.  If you're interested, I'll email it to you.  I wasn't able to attach it here.
+-- [[terry|tjgolubi]]
index 54f31a925a28be189f6db9afcea289a2c1fcf579..acfc60078e2ee7871bb84035f69fdef52e242e9c 100644 (file)
@@ -44,7 +44,7 @@ the error message like below:
 >>>>>>     $CGI::VERSION='3.15';
 >>>>> I've just checked in a fix that should work, can you test it?
->>>>> [diff](http://git.ikiwiki.info/?p=ikiwiki;a=commitdiff;h=71f10579c00a8ddc20ada1a1efd33aac25a3da7e) --[[Joey]]
+>>>>> 71f10579c00a8ddc20ada1a1efd33aac25a3da7e --[[Joey]]
 >>>>>> I've patched `attachment.pm` module, but the bug still occurs.
 >>>>>> However I can see a little progress. I changed invoking `error()`
@@ -63,7 +63,7 @@ the error message like below:
 >>>>>>> though. I've checked in a second try at dealing with things, can
 >>>>>>> you try it? --[[Joey]]
->>>>>>>> Do you mean that [diff](http://git.ikiwiki.info/?p=ikiwiki;a=commitdiff;h=66f35e30dcea03c631a293e2341771277543b4ae)?
+>>>>>>>> Do you mean that 66f35e30dcea03c631a293e2341771277543b4ae?
 >>>>>>>> If so, then it causes "Internal Server Error" for me:
 >>>>>>>>     Can't use string ("test.txt") as a symbol ref while "strict refs" in use at /usr/share/perl5/IkiWiki/Plugin/attachment.pm line 144.
diff --git a/doc/bugs/backlink__40__.__41___doesn__39__t_work.mdwn b/doc/bugs/backlink__40__.__41___doesn__39__t_work.mdwn
new file mode 100644 (file)
index 0000000..534e5a0
--- /dev/null
@@ -0,0 +1,57 @@
+It seems `backlink(.)` doesn't work, that is, it doesn't match pages linked
+to from the current page.
+If I have two test pages, `foo`, which links to `bar`, then (on the `foo`
+ * backlink(foo) lists 'bar'
+ * backlink(.) lists nothing
+tested with 3.20120109.
+— [[Jon]]
+> The attached patch should fix it:
+>> [[applied|done]] thanks --[[Joey]] 
+    From 30512ac5f6a724bafb1095ab246e0648999f7b6c Mon Sep 17 00:00:00 2001
+    From: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+    Date: Fri, 13 Jan 2012 11:02:11 +0100
+    Subject: [PATCH] backlink(.) should behave like backlink(<current page>)
+    Since commit c4d4cad3befbbd444d094cbeb0b6ebba3910a025, the single dot in
+    a pagespec can be used to mean the current page. While this worked
+    correctly in link() it didn't work in backlink(). Fix this by explicitly
+    checking the testpage in backlink against . and replacing it with the
+    current location if necessary.
+    ---
+     IkiWiki.pm |   10 ++++++++--
+     1 files changed, 8 insertions(+), 2 deletions(-)
+    diff --git a/IkiWiki.pm b/IkiWiki.pm
+    index 08e242a..bc56501 100644
+    --- a/IkiWiki.pm
+    +++ b/IkiWiki.pm
+    @@ -2647,8 +2647,14 @@ sub match_link ($$;@) {
+     }
+     sub match_backlink ($$;@) {
+    -  my $ret=match_link($_[1], $_[0], @_);
+    -  $ret->influences($_[1] => $IkiWiki::DEPEND_LINKS);
+    +  my $page=shift;
+    +  my $testpage=shift;
+    +  my %params=@_;
+    +  if ($testpage eq '.') {
+    +          $testpage = $params{'location'}
+    +  }
+    +  my $ret=match_link($testpage, $page, @_);
+    +  $ret->influences($testpage => $IkiWiki::DEPEND_LINKS);
+       return $ret;
+     }
+    -- 
+    1.7.8.rc2.253.gdbf3
+> (you need to re-make IkiWiki for it to work)
diff --git a/doc/bugs/blogspam__95__options_whitelist_vs._IPv6__63__.mdwn b/doc/bugs/blogspam__95__options_whitelist_vs._IPv6__63__.mdwn
new file mode 100644 (file)
index 0000000..f3a39c0
--- /dev/null
@@ -0,0 +1,4 @@
+This is possibly/probably due to my weird setup, which is that I have apache behind nginx, with the result that apache sees the client's IPv4 address as having been mapped to IPv6.  i.e.  <tt>::ffff:</tt>.  That being the case, I currently need to specify that (with the <tt>::ffff:</tt> prepended) if I want to whitelist (or more importantly blacklist) and IPv4 address.
+It strikes me that this is liable to become more of a problem as people finally start using IPv6, so it might be worth ensuring that the code that compares IP addresses be able to treat the two formats (with and without the ffff's) as equivalent. --[[fil]]
index 800e5ebb2e560214e093cee8c28f83e8aefd42e2..bf715a29e3936916415f2280b0c6dc44c8eac8aa 100644 (file)
@@ -1,4 +1,4 @@
-On [Line #46 of the `bzr` plugin](http://git.ikiwiki.info/?p=ikiwiki;a=blob;f=IkiWiki/Rcs/bzr.pm;h=526036bf36e0ce5ec6fab47cb8a46991d2ebe0b2;hb=HEAD#l46) there's a mistalke. Instead of:
+On Line #46 of the `bzr` plugin there's a mistalke. Instead of:
     my @cmdline = ("bzr", $config{srcdir}, "update");
index 364fae39426a70d9e5bb184469feeb2f0c9157a9..780e695c227c2f1e14d6be85ffc0f944a48a03ed 100644 (file)
@@ -1,4 +1,4 @@
-Example (from [here](http://git.ikiwiki.info/?p=ikiwiki;a=blobdiff;f=doc/todo/matching_different_kinds_of_links.mdwn;h=26c5a072bf3cb205b238a4e6fd0882583a0b7609;hp=1d7c78d9065d78307b43a1f58a53300cde4015fa;hb=9b4c83127fdef0ceb682c104db9bfb321b17022e;hpb=df4cc4c16ca230ee99b80c80043ba54fb95f6e71)):
 [[`\[[!taglink TAG\]\]`|plugins/tag]]
index 254ebac22dc9c97a06d3e212c0c706c10c7a0656..23b9fd2ccc3435ae143deb5aaaa9a28c01daa901 100644 (file)
@@ -28,7 +28,27 @@ reprocessed is done so in the same conditions as the original call.
 >> upstream.
 >> For what it's worth, I think that my post_scan hook mechanism would work
->> rather fine with your trail plugin. However, the case of the if
+>> rather fine with your trail plugin.
+>>> We discussed this on IRC, and I think it's actually more complicated
+>>> than that: the branch to sort by newest inlined entry wants a
+>>> "pagespecs now work" hook, whereas for trail I want a "sorting now
+>>> works" hook:
+>>> * scan
+>>> * pagespecs now work (post-scan)
+>>>   * Giuseppe's version of inline can decide what each inline
+>>>     contains, and thus decide where they go in `inline(mtime)`
+>>>     order
+>>> * pagespecs and sorting now work (pre-render)
+>>>   * my trail plugin can decide what each trail contains, and
+>>>     also sort them in the right order (which might be
+>>>     `inline(mtime)`, so might be undefined until pagespecs work)
+>>> * render
+>>> --[[smcv]]
+>> However, the case of the if
 >> directive is considerably more complicated, because the conditional
 >> can introduce a much stronger feedback effect in the pre/post scanning
 >> dependency. In fact, it's probably possible to build a couple of pages
index b7ae76aeb30ac1a4697d976719d16d3986da9639..566896ec328de870f4b698a4c55669f3aec7c8f0 100644 (file)
@@ -78,3 +78,9 @@ Brian May
 >>>>> explicitly removed", so if ikiwiki can preferentially find that 
 >>>>> installed, even with the above commit, `openid` won't be able to 
 >>>>> traverse a proxy. --[[schmonz]]
+[[!template id=gitbranch branch=schmonz/proxies author="[[schmonz]]"]]
+>>>>> I bollixed up my git, recloned, and reapplied the diffs, so
+>>>>> that commit won't exist anymore. My proxy-related changes are
+>>>>> now on a branch. --[[schmonz]]
diff --git a/doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn b/doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn
new file mode 100644 (file)
index 0000000..1e74fe8
--- /dev/null
@@ -0,0 +1,34 @@
+When an `ikiwiki` instance is holding a lock, a web user clicking on "add comment" (for example) will have to wait for the lock to be released.  However, all they are then presented with is a web form.  Perhaps CGI requests that are read-only (such as generating a comment form, or perhaps certain types of edits) should ignore locks? Of course, I'd understand that the submission would need to wait for a lock. — [[Jon]]
+> Ikiwiki has what I think of as the Big Wiki Lock (remembering the "Big
+> Kernel Lock"). It takes the exclusive lock before loading any state,
+> to ensure that any changes to that state are made safely.
+> A few CGI actions that don't need that info loaded do avoid taking the
+> lock.
+> In the case of showing the comment form, the comments
+> plugin needs CGI session information to be loaded, so it can check if
+> the user is logged in, and so it can add XSRF prevention tokens based on
+> the session ID. (Actually, it might be possible to rely on
+> `CGI::Session`'s own locking of the sessions file, and have a hook that
+> runs with a session but before the indexdb is loaded.)
+> But, the comment form also needs to load the indexdb, in order to call
+> `check_canedit`, which matches a pagespec, which can need to look things
+> up in the indexdb. (Though the pagespecs that can do that are unlikely
+> to be relevant when posting a comment.)
+> I've thought about trying to get rid of the Big Wiki Lock from time to
+> time. It's difficult though; if two ikiwikis are both making changes
+> to the stored state, it's hard to see a way to reconcile them. (There
+> could be a daemon that all changes are fed thru using a protocol, but
+> that's really complicated, and it'd almost be better to have a single
+> daemon that just runs ikiwiki; a major architectural change.)
+> One way that *almost* seems it could work is to have a entry path
+> that loads everything read-only, without a lock. And then in read-only
+> mode, `saveindex` would be an error to run. However, both the commenting
+> code and the page edit code currently have the same entry path for
+> drawing the form as is used for handling the posted form, so they would
+> need to be adapted to separate that into two code paths. --[[Joey]]
index c78465a37441b232483f12226d86c2d3178e0014..5eb4489b01814148fb23edbce1d447a22207a7ee 100644 (file)
@@ -5,7 +5,7 @@ embedded as `<p><img ...></p>`.  That's at least what I see on
 hand, CSS is supposed to be used instead, I guess.  (But how...  I forgot
 almost of my CSS foo again ;-) it seems.) --[[tschwinge]]
-> [[!img logo/ikiwiki.png align=right]]The [img tag doesn't create P tags](http://git.ikiwiki.info/?p=ikiwiki;a=blob;f=IkiWiki/Plugin/img.pm;h=32023fa97af8ba8e63192cacaff10a4677d20654;hb=HEAD), but if you have surrounded the img directive with newlines, they will result in paragraph tags.
+> [[!img logo/ikiwiki.png align=right]]The img tag doesn't create P tags, but if you have surrounded the img directive with newlines, they will result in paragraph tags.
 > I've edited the URL you provided to demonstrate this -- hope you don't mind! I've also added an inline, right-aligned image to this page.[[!tag done]]
 > -- [[Jon]]
index 66c763f588277d8c8de9949b9ad53fe13f28993b..20d5dc8e64407fd88a7b03b4b08049f1d15df47b 100644 (file)
@@ -23,3 +23,10 @@ Is this a problem on my site or does anyone else see this?
 >> \[[!map pages="path/to/page/* and ! ...
 >> This told me that [[plugins/autoindex]] is the bad guy. Deactivating this plugin helps out. Don't know if this is worth fixing... I can live without that plugin. --bacuh
+>>> The right fix would probably be for `do=create` to allow replacing a page
+>>> in the transient underlay without complaining (like the behaviour that
+>>> `do=edit` normally has). That wouldn't help you unless [[plugins/autoindex]]
+>>> defaulted to making transient pages (`autoindex_commit => 0`), but if we
+>>> can fix [[removal_of_transient_pages]] then maybe that default can change?
+>>> --[[smcv]]
diff --git a/doc/bugs/octal_umask_setting_is_unintuitive.mdwn b/doc/bugs/octal_umask_setting_is_unintuitive.mdwn
new file mode 100644 (file)
index 0000000..5cdefcf
--- /dev/null
@@ -0,0 +1,55 @@
+To make ikiwiki publish world-readable files (usually what you want)
+regardless of your umask, you override the `umask` setting to 022
+octal (which is 18 in decimal). So far so good.
+However, because it's interpreted as a plain number in Perl, the
+way you set it varies between formats. In `IkiWiki::Setup::Standard`
+you can use either
+    umask => 022
+or (less obviously) one of
+    umask => 18
+    umask => "18"
+but if you use
+    umask => "022"
+you get the less than helpful umask of 026 octal (22 decimal).
+Similarly, in `IkiWiki::Setup::Yaml` (the default for
+you have to use one of
+    umask: 18
+    umask: "18"
+and if you try to say 022 you'll get 22 decimal = 026 octal.
+[[!tag patch]]
+[[!template id=gitbranch branch=smcv/umask-keywords author="[[smcv]]"]]
+Perhaps the best way to solve this would be to have keywords
+for the few values of `umask` that are actually useful?
+* `private` (= 077 octal = 63 decimal)
+* `group` (= 027 octal = 23 decimal)
+* `public` (= 022 octal = 18 decimal)
+I don't think g+w is a good idea in any case, because as
+documented on [[security]], if ikiwiki makes its `srcdir`
+group-writeable then any member of the group can "cause
+trouble" (escalate privileges to those of the wiki user?)
+via a symlink attack. So I don't think we need keywords
+for those.
+> I support this change, but your git repository does not seem to have
+> that branch (or anything) in it today. --[[Joey]]
+>> git pushes have a restrictive umask, ironically... fixed. --[[smcv]]
+>>> [[done]] --[[Joey]] 
index e895459558a9b05779b685c8001273dd31ade7d0..df941af37951a18ee3d22db14d9e56f716a057e1 100644 (file)
@@ -20,7 +20,7 @@ But there is no error if I use `ikiwiki --rebuild` to regenerate the whole thing
 > or give any information to reproduce the bug.
 > My guess: A version older than 3.20100403, which  included
-> [this bugfix](http://git.ikiwiki.info/?p=ikiwiki;a=commitdiff;h=799b93d258bad917262ac160df74136f05d4a451),
+> 799b93d258bad917262ac160df74136f05d4a451,
 > which could lead to incorrect "syntax error in pagespec"
 > that only happened some of the time.
diff --git a/doc/bugs/resized_img_with_only_width_or_height_breaks_ie.mdwn b/doc/bugs/resized_img_with_only_width_or_height_breaks_ie.mdwn
new file mode 100644 (file)
index 0000000..a5a1c67
--- /dev/null
@@ -0,0 +1,9 @@
+When using the img directive while reducing the size of the image by only specifying either the width ("100x") or height ("x100"), the resulting HTML breaks/confuses IE (at least 8 and 9).
+In those cases img plugin do generate HTML with the missing attribute as "empty". For example, if the new size is specified as "100x", the resulting HTML will be &lt;img&nbsp;...&nbsp;width="100"&nbsp;height=""/&gt;. When IE encounters such empty attributes, the image is sort of compressed into a one (1!) pixel high (or wide) image, which is **not** what you expected.
+If we instead always get the resulting the width and height from the resized image, and uses those values in the img attrs, we make IE happy (and all other renders as well).
+A patch (tested and deployed) is sitting waiting in my git repository.
+> I've applied your patch. Thanks! [[done]] --[[Joey]] 
index e24973b69408ade82ea38341d61958fdddf0387c..19631ad478dbb0f732f5043f68791cd3e392afb1 100644 (file)
@@ -9,4 +9,4 @@ Each example is contained in its own subdirectory; just copy the source
 files into your wiki to start using one of the examples.
 The [[tips]] page has some other ideas for ways to use ikiwiki, and the
-[[css_market]] has some example stylesheets to change ikiwiki's look.
+[[css_market]] and [[theme market|themes]] has some example stylesheets to change ikiwiki's look.
diff --git a/doc/examples/blog/posts/Discussion.mdwn b/doc/examples/blog/posts/Discussion.mdwn
deleted file mode 100644 (file)
index f04a955..0000000
+++ /dev/null
@@ -1 +0,0 @@
-foo bar.
index 19ca9ed0b26fee4d023b5022c2876d25c3c3ff93..62b62a401f370475e090807c3857e9a0c7566580 100644 (file)
@@ -4,6 +4,7 @@ page fitting enough. Users of ikiwiki can ask questions here.
 Note that for more formal bug reports or todo items, you can also edit the
 [[bugs]] and [[todo]] pages.
 ## Current topics ##
 [[!inline pages="forum/*  and !forum/discussion and !forum/*/*" 
diff --git a/doc/forum/Are_these_revisions_legit_or_accidentally_committed_jiberish__63__.mdwn b/doc/forum/Are_these_revisions_legit_or_accidentally_committed_jiberish__63__.mdwn
new file mode 100644 (file)
index 0000000..ec9980c
--- /dev/null
@@ -0,0 +1,12 @@
+When rebuilding, I see
+    building recentchanges/change_63476fba3a519d42ee56c7611250ada41111356d._change, which depends on templates/page.tmpl
+    building recentchanges/change_bd07c4308d5eea2cd27ad067a502318dc0e9c8bb._change, which depends on templates/page.tmpl
+    building recentchanges/change_6c2a66b022276951d79f29c1221d22fe1592f67f._change, which depends on templates/page.tmpl
+    building recentchanges/change_f08669f128d618d0da460234b2cee555b0818584._change, which depends on templates/page.tmpl
+    building recentchanges/change_b0347df66da5c515dc0d1d612ecdfbe203a0a674._change, which depends on templates/page.tmpl
+    building recentchanges/change_0bb246c481e9ede8686f6caa4de40b9e94642e40._change, which depends on templates/page.tmpl
+    building recentchanges/change_511846ca75fb2e87fb90582ead282d104a5e13fc._change, which depends on templates/page.tmpl
+    ...
+Are these accidentally committed gibberish? If so, how to remove them properly?
diff --git a/doc/forum/Are_these_revisions_legit_or_accidentally_committed_jiberish__63__/comment_1_b425823f800fba82ad2aaaa0dbe6686a._comment b/doc/forum/Are_these_revisions_legit_or_accidentally_committed_jiberish__63__/comment_1_b425823f800fba82ad2aaaa0dbe6686a._comment
new file mode 100644 (file)
index 0000000..9326f73
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 1"
+ date="2011-12-30T18:13:18Z"
+ content="""
+They are little per-change pages that are inlined together to produce your RecentChanges page. 
+(They're not committed to git, only stored internally.)
diff --git a/doc/forum/Broken_after_upgrading_Ikiwiki.mdwn b/doc/forum/Broken_after_upgrading_Ikiwiki.mdwn
new file mode 100644 (file)
index 0000000..aea5fdb
--- /dev/null
@@ -0,0 +1,10 @@
+I upgraded my Debian server from 5 to 6, then I updated ikiwiki. Now I can't rebuild my Ikiwiki instance:
+    $ ikiwiki --setup ./pages.setup
+    Failed to load plugin IkiWiki::Plugin::scrubber: Can't locate IkiWiki/Plugin/scrubber.pm in @INC (@INC contains: /home/xyzfoobar/devel/ikiwiki/lib     /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at (eval 77) line 2.
+    BEGIN failed--compilation aborted at (eval 77) line 2.
+    $ ikiwiki --version
+    ikiwiki version 3.20100815.7
+What's the proper way to fix this?
diff --git a/doc/forum/Broken_after_upgrading_Ikiwiki/comment_1_3d0588a845c58b3aedc35970e8dcc811._comment b/doc/forum/Broken_after_upgrading_Ikiwiki/comment_1_3d0588a845c58b3aedc35970e8dcc811._comment
new file mode 100644 (file)
index 0000000..93360d1
--- /dev/null
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnZ0g2UAijV7RGrKtWPljCCAYHBJ3pwPvM"
+ nickname="Meng"
+ subject="comment 1"
+ date="2011-12-20T07:21:19Z"
+ content="""
+If I try to create new setup file
+    $ ikiwiki --dumpsetup newpages.setup
+    Traceback (most recent call last):
+       File \"/usr/lib/ikiwiki/plugins/rst\", line 18, in <module>
+         from docutils.core import publish_parts;
+    ImportError: No module named docutils.core
diff --git a/doc/forum/Broken_after_upgrading_Ikiwiki/comment_2_fd65d4b87a735b67543bb0cf4053b652._comment b/doc/forum/Broken_after_upgrading_Ikiwiki/comment_2_fd65d4b87a735b67543bb0cf4053b652._comment
new file mode 100644 (file)
index 0000000..47fa4ae
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 2"
+ date="2011-12-20T15:16:23Z"
+ content="""
+Your setup file seems to refer to a \"scrubber\" plugin, which has never existed in ikiwiki. Perhaps a typo of \"htmlscrubber\"?
+3.20100815.7 is an old version of ikiwiki. The current version avoids the rst docutils breakage. Installing python-docutils on Debian can work around that problem as well.
diff --git a/doc/forum/Broken_after_upgrading_Ikiwiki/comment_3_7c8b46eabdb25cbc01c56c7b53ed3b91._comment b/doc/forum/Broken_after_upgrading_Ikiwiki/comment_3_7c8b46eabdb25cbc01c56c7b53ed3b91._comment
new file mode 100644 (file)
index 0000000..72d38e7
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnZ0g2UAijV7RGrKtWPljCCAYHBJ3pwPvM"
+ nickname="Meng"
+ subject="comment 3"
+ date="2011-12-20T16:58:23Z"
+ content="""
+Thanks. That was exactly the issue. When editing my setup file, I accidentally splitted `htmlscrubber` to `html` and `scrubber`.
diff --git a/doc/forum/Calendar:_listing_multiple_entries_per_day.mdwn b/doc/forum/Calendar:_listing_multiple_entries_per_day.mdwn
new file mode 100644 (file)
index 0000000..51c3200
--- /dev/null
@@ -0,0 +1,17 @@
+I'd very much like to be able to list my blog posts on a daily basis (used for logging work) - rather than have the Calendar plugin return the first post only.
+There was some effort to do this as detailed here.
+I had a quick go at doing something similar on Debian Stable (Ikiwiki 3.0) but alas my Ikiwiki fu is not strong enough.
+I'm not sure how I go about swapping the link on the day number to a link to, I guess, a dynamically generated page of links?
+    $linkcach{"$year/$mtag/$mday"}{$p} = ${p}
+and a suitable whilst loop looks to be all that's needed...
+Any pointers appreciated.
diff --git a/doc/forum/Calendar:_listing_multiple_entries_per_day/comment_1_d3dd0b97c63d615e3dee22ceacaa5a30._comment b/doc/forum/Calendar:_listing_multiple_entries_per_day/comment_1_d3dd0b97c63d615e3dee22ceacaa5a30._comment
new file mode 100644 (file)
index 0000000..ca28758
--- /dev/null
@@ -0,0 +1,83 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnXybLxkPMYpP3yw4b_I6IdC3cKTD-xEdU"
+ nickname="Matt"
+ subject="comment 1"
+ date="2011-11-29T00:52:49Z"
+ content="""
+So I ported the original patch mentioned to the latest Debian version.  Well at least the bits that matter to me.  See below.  
+In doing so I realized that it does quite work how I imagined it would; instead of generating a dynamic page for a particular day with a list of links it actually fills in the calendar with the details of the posts (making for some ugly formatting).
+I'm hoping the tag generation pages will give me a clue how to alter this into what I want.
+diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
+index c7d2b7c..c931fe6 100644
+--- a/IkiWiki/Plugin/calendar.pm
++++ b/IkiWiki/Plugin/calendar.pm
+@@ -75,6 +75,8 @@ sub format_month (@) {   
+        my %params=@_;
+        my %linkcache;
++    my @list;
++    my $detail = 1;
+        foreach my $p (pagespec_match_list($params{page},
+                                \"creation_year($params{year}) and creation_month($params{month}) and ($params{pages})\",
+                                # add presence dependencies to update
+@@ -88,7 +90,7 @@ sub format_month (@) {   
+                my $mtag  = sprintf(\"%02d\", $month);
+                # Only one posting per day is being linked to.
+-               $linkcache{\"$year/$mtag/$mday\"} = $p;
++               $linkcache{\"$year/$mtag/$mday\"}{$p} = $IkiWiki::pagesources{$p};
+        }
+        my $pmonth = $params{month} - 1;   
+@@ -219,14 +221,38 @@ EOF
+                                $tag='month-calendar-day-this-day';
+                        }
+                        else {
+-                               $tag='month-calendar-day-link';
++                               if ( $detail == 0 ) {
++                                       $tag='month-calendar-day-link';
++                               }
++                               else{
++                                       $tag='month-calendar-day';
++                               }
+                        }
+                        $calendar.=qq{\t\t<td class=\"$tag $downame{$wday}\">};
+-                       $calendar.=htmllink($params{page}, $params{destpage},
+-                               $linkcache{$key},
+-                               noimageinline => 1,
+-                               linktext => $day,
+-                               title => pagetitle(IkiWiki::basename($linkcache{$key})));
++                       if ( $detail == 0 ) {
++                               $calendar.=htmllink($params{page}, $params{destpage},
++                                               $linkcache{$key},
++                                               noimageinline => 1,
++                                               linktext => $day,
++                                               title => pagetitle(IkiWiki::basename($linkcache{$key})));
++                       }
++                       else {
++                               my $day_label = qq{<span class=\"month-calendar-day-label\">$day</span>};
++                               $calendar.=qq{$day_label\n};
++                               my $srcpage; my $destpage;
++                               while(($srcpage,$destpage) = each(%{$linkcache{$key}})) {
++                                       my $title = IkiWiki::basename(pagename($srcpage));
++                                       if (exists $pagestate{$srcpage}{meta}{title} ) {
++                                               $title = $pagestate{$srcpage}{meta}{title};
++                                       }  
++                                       $calendar.=qq{\t\t<div class=\"$tag $downame{$wday}\">};
++                                       $calendar.=htmllink($params{page}, $params{destpage},
++                                                       pagename($destpage),
++                                                       linktext => $title);
++                                       push @list, pagename($linkcache{$key}{$srcpage});
++                                       $calendar.=qq{\t\t</div>};
++                               }
++                       }
+                        $calendar.=qq{</td>\n};
+                }
+                else {
diff --git a/doc/forum/Calendar:_listing_multiple_entries_per_day/comment_2_2311b96483bb91dc25d5e3695bbca513._comment b/doc/forum/Calendar:_listing_multiple_entries_per_day/comment_2_2311b96483bb91dc25d5e3695bbca513._comment
new file mode 100644 (file)
index 0000000..ef100b5
--- /dev/null
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnXybLxkPMYpP3yw4b_I6IdC3cKTD-xEdU"
+ nickname="Matt"
+ subject="comment 2"
+ date="2011-11-29T01:30:09Z"
+ content="""
+To revert the changes made above it is necessary not only to switch the detail level back down but to also regenerate the side-bar index.html file
+    ikiwiki --setup blog.setup
+should do it.
diff --git a/doc/forum/Calendar:_listing_multiple_entries_per_day/comment_3_d23f0cedd0b9e937eaf200eef55ac457._comment b/doc/forum/Calendar:_listing_multiple_entries_per_day/comment_3_d23f0cedd0b9e937eaf200eef55ac457._comment
new file mode 100644 (file)
index 0000000..2433967
--- /dev/null
@@ -0,0 +1,166 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnXybLxkPMYpP3yw4b_I6IdC3cKTD-xEdU"
+ nickname="Matt"
+ subject="comment 3"
+ date="2011-11-30T20:42:55Z"
+ content="""
+I got to grip with things to make a patch to do this. :-)
+Here it is in case of use to anyone.
+From f0554c5b61e1915086d5cf071f095ff233c2590d Mon Sep 17 00:00:00 2001
+From: Matt Ford <matt@dancingfrog.co.uk>
+Date: Wed, 30 Nov 2011 19:40:10 +0000
+Subject: [PATCH] Patch to allow daily archival generation and link to them in
+ the calendar
+ IkiWiki/Plugin/calendar.pm   |   17 ++++++++++++++++-
+ ikiwiki-calendar.in          |   34 +++++++++++++++++++++++++++++++---
+ templates/calendarday.tmpl   |    5 +++++
+ templates/calendarmonth.tmpl |    2 +-
+ templates/calendaryear.tmpl  |    2 +-
+ 5 files changed, 54 insertions(+), 6 deletions(-)
+ create mode 100644 templates/calendarday.tmpl
+diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
+index c7d2b7c..9999c03 100644
+--- a/IkiWiki/Plugin/calendar.pm
++++ b/IkiWiki/Plugin/calendar.pm
+@@ -47,6 +47,13 @@ sub getsetup () {
+                       safe => 1,
+                       rebuild => 1,
+               },
++              archiveday => {
++                      type => \"boolean\",
++                      example => 1,
++                      description => \"enable archiving on a daily basis (otherwise monthly)\",
++                      safe => 1,
++                      rebuild => 1,
++              },
+               archive_pagespec => {
+                       type => \"pagespec\",
+                       example => \"page(posts/*) and !*/Discussion\",
+@@ -222,11 +229,19 @@ EOF
+                               $tag='month-calendar-day-link';
+                       }
+                       $calendar.=qq{\t\t<td class=\"$tag $downame{$wday}\">};
+-                      $calendar.=htmllink($params{page}, $params{destpage}, 
++                      if (exists $pagesources{\"$archivebase/$params{year}/$params{month}/\".sprintf(\"%02d\",$day)}) {
++                              $calendar.=htmllink($params{page}, $params{destpage}, 
++                                              \"$archivebase/$params{year}/$params{month}/\".sprintf(\"%02d\",$day),
++                                              noimageinline => 1,
++                                              linktext => \"$day\",
++                                              title => \"$key\");
++                      }else{
++                              $calendar.=htmllink($params{page}, $params{destpage}, 
+                               $linkcache{$key},
+                               noimageinline => 1,
+                               linktext => $day,
+                               title => pagetitle(IkiWiki::basename($linkcache{$key})));
++                      }
+                       $calendar.=qq{</td>\n};
+               }
+               else {
+diff --git a/ikiwiki-calendar.in b/ikiwiki-calendar.in
+index 037ef7d..af22bc5 100755
+--- a/ikiwiki-calendar.in
++++ b/ikiwiki-calendar.in
+@@ -30,21 +30,44 @@ IkiWiki::checkconfig();
+ my $archivebase = 'archives';
+ $archivebase = $config{archivebase} if defined $config{archivebase};
++my $archiveday = 0;
++$archiveday = $config{archiveday} if defined $config{archiveday};
+ if (! defined $pagespec) {
+       $pagespec=$config{archive_pagespec} || \"*\";
+ }
+-sub writearchive ($$;$) {
++sub is_leap_year {
++      my $year=shift;
++      return ($year % 4 == 0 && (($year % 100 != 0) || $year % 400 == 0));
++sub month_days {
++      my $month=shift;
++        my $year=shift;
++      my $days_in_month = (31,28,31,30,31,30,31,31,30,31,30,31)[$month-1];
++      if ($month == 2 && is_leap_year($year)) {
++              $days_in_month++;
++      }
++      return $days_in_month;
++sub writearchive ($$;$;$) {
+       my $template=template(shift);
+       my $year=shift;
+       my $month=shift;
++        my $day=shift;
+-      my $page=defined $month ? \"$year/$month\" : $year;
++      my $page;
++        if (defined $year)  {$page = \"$year\"};
++        if (defined $month) {$page = \"$year/$month\"};
++        if (defined $day)   {$page = \"$year/$month/$day\"};
+       my $pagefile=newpagefile(\"$archivebase/$page\", $config{default_pageext});
+       $template->param(pagespec => $pagespec);
+       $template->param(year => $year);
+       $template->param(month => $month) if defined $month;
++      $template->param(day => $day) if defined $day;
+       if ($force || ! -e \"$config{srcdir}/$pagefile\") {
+               writefile($pagefile, $config{srcdir}, $template->output);
+@@ -54,8 +77,13 @@ sub writearchive ($$;$) {
+ foreach my $y ($startyear..$endyear) {
+       writearchive(\"calendaryear.tmpl\", $y);
+-      foreach my $m (qw{01 02 03 04 05 06 07 08 09 10 11 12}) {
++      foreach my $m (map {sprintf(\"%02d\",$_)} (1..12)) {
+               writearchive(\"calendarmonth.tmpl\", $y, $m);
++              if ($archiveday ) {
++                      foreach my $d (map {sprintf(\"%02d\",$_)} (1..month_days($m,$y))) {
++                              writearchive(\"calendarday.tmpl\", $y, $m, $d);
++                      }
++              }
+       }
+ }
+diff --git a/templates/calendarday.tmpl b/templates/calendarday.tmpl
+new file mode 100644
+index 0000000..ac963b9
+--- /dev/null
++++ b/templates/calendarday.tmpl
+@@ -0,0 +1,5 @@
++[[!sidebar content=\"\"\"
++[[!calendar type=month month=<TMPL_VAR MONTH> year=<TMPL_VAR YEAR> pages=\"<TMPL_VAR PAGESPEC>\"]]
++[[!inline pages=\"creation_day(<TMPL_VAR DAY>) and creation_month(<TMPL_VAR MONTH>) and creation_year(<TMPL_VAR YEAR>) and <TMPL_VAR PAGESPEC>\" archive=\"yes\" show=0 feeds=no reverse=yes]]
+diff --git a/templates/calendarmonth.tmpl b/templates/calendarmonth.tmpl
+index 23cd954..c998c16 100644
+--- a/templates/calendarmonth.tmpl
++++ b/templates/calendarmonth.tmpl
+@@ -2,4 +2,4 @@
+ [[!calendar type=month month=<TMPL_VAR MONTH> year=<TMPL_VAR YEAR> pages=\"<TMPL_VAR PAGESPEC>\"]]
+ \"\"\"]]
+-[[!inline pages=\"creation_month(<TMPL_VAR MONTH>) and creation_year(<TMPL_VAR YEAR>) and <TMPL_VAR PAGESPEC>\" show=0 feeds=no reverse=yes]]
++[[!inline pages=\"creation_month(<TMPL_VAR MONTH>) and creation_year(<TMPL_VAR YEAR>) and <TMPL_VAR PAGESPEC>\" archive=\"yes\" show=0 feeds=no reverse=yes]]
+diff --git a/templates/calendaryear.tmpl b/templates/calendaryear.tmpl
+index 714bd6d..b6e33c5 100644
+--- a/templates/calendaryear.tmpl
++++ b/templates/calendaryear.tmpl
+@@ -1 +1 @@
+-[[!calendar type=year year=<TMPL_VAR YEAR> pages=\"<TMPL_VAR PAGESPEC>\"]]
++[[!calendar type=year year=<TMPL_VAR YEAR> pages=\"<TMPL_VAR PAGESPEC>\" archive=\"yes\"]]
diff --git a/doc/forum/Can_I_have_different_favicons_for_each_folder__63__.mdwn b/doc/forum/Can_I_have_different_favicons_for_each_folder__63__.mdwn
new file mode 100644 (file)
index 0000000..0fefb35
--- /dev/null
@@ -0,0 +1 @@
+I would like to have different favicons for different parts (folders) of my Ikiwiki site, like you can have different CSS files via the localstyle plugin. Is this possible? If not, could it be made possible?
diff --git a/doc/forum/Can_I_have_different_favicons_for_each_folder__63__/comment_1_a01112ba235e2f44a7655c36ef680e7e._comment b/doc/forum/Can_I_have_different_favicons_for_each_folder__63__/comment_1_a01112ba235e2f44a7655c36ef680e7e._comment
new file mode 100644 (file)
index 0000000..dee6e61
--- /dev/null
@@ -0,0 +1,19 @@
+[[!comment format=mdwn
+ username="http://smcv.pseudorandom.co.uk/"
+ nickname="smcv"
+ subject="comment 1"
+ date="2011-11-21T11:37:02Z"
+ content="""
+You could use [[plugins/pagetemplate]] to override all of `page.tmpl`, but
+that's using a sledgehammer to crack a nut.
+Another way to do it would be to modify `IkiWiki/Plugins/favicon.pm`
+to use `bestlink` to find the favicon, like [[plugins/localstyle]] does.
+If you made it a config option (`localfavicon => 1` or something)
+it could probably be included in ikiwiki as part of the official
+[[plugins/favicon]] plugin?
+Another way would be to have a new `localfavicon` plugin which overrides
+the template variable from [[plugins/favicon]], using `last => 1` to
+make sure it \"wins\".
diff --git a/doc/forum/Can_Ikiwiki_recognize_multimarkdown_meta_tags__63__.mdwn b/doc/forum/Can_Ikiwiki_recognize_multimarkdown_meta_tags__63__.mdwn
new file mode 100644 (file)
index 0000000..3e5fc8b
--- /dev/null
@@ -0,0 +1,4 @@
+[[!meta author=tjgolubi]]
+It would be nice, if configured for multimarkdown, for ikiwiki to recognize and use/remove meta information from multimarkdown documents.
+Title, Author, and Date would be especially nice. -- [[tjgolubi]]
diff --git a/doc/forum/Can__39__t_login_using_Google__44___or_openID__44___but_can_use_Ikiwiki_login.mdwn b/doc/forum/Can__39__t_login_using_Google__44___or_openID__44___but_can_use_Ikiwiki_login.mdwn
new file mode 100644 (file)
index 0000000..11d8c23
--- /dev/null
@@ -0,0 +1,5 @@
+I find that users can't login my Ikiwiki instance using Google, or openID, but can use Ikiwiki user name and password to login.
+Using the two formers get error
+  Error: ... is locked and cannot be edited 
diff --git a/doc/forum/Can__39__t_login_using_Google__44___or_openID__44___but_can_use_Ikiwiki_login/comment_1_79127e3c09a1d798146088dee5a67708._comment b/doc/forum/Can__39__t_login_using_Google__44___or_openID__44___but_can_use_Ikiwiki_login/comment_1_79127e3c09a1d798146088dee5a67708._comment
new file mode 100644 (file)
index 0000000..41ff2fc
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 1"
+ date="2011-12-22T16:15:34Z"
+ content="""
+That error message means that the user has logged in, but the lockedit plugin has been configured, via `locked_pages` to not let some pages be edited by them.
+Inability to log in with openid is a separate problem, I can only guess as you didn't say how it fails when you try to log in by openid, but perhaps you need to install the Net::OpenID::Consumer perl module from cpan.
diff --git a/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__.mdwn b/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__.mdwn
new file mode 100644 (file)
index 0000000..50b5ea9
--- /dev/null
@@ -0,0 +1,7 @@
+Unfortunately debian stable / squeeze repos are still on version 3.20100815.7
+Do you think squeeze will update to a newer version soon? I am lacking support of the gallery plugin and 1 more that I forgot right now  ;)
+Is everyone else upgrading by directly installing via dpkg (no updates, but yeah)?
diff --git a/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_1_5e916c8fa90470909064ea73531f79d4._comment b/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_1_5e916c8fa90470909064ea73531f79d4._comment
new file mode 100644 (file)
index 0000000..e6d09b5
--- /dev/null
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 1"
+ date="2012-01-16T14:52:22Z"
+ content="""
+Nothing wrong with 3.20100815.7 unless you need newer features.
+At Branchable we run Debian stable and backport the current ikiwiki to run on it. This is quite easy to do, it just builds and works. (Edit debian/control and s/markdown-discount/markdown/)
+It's probably time someone released a backport. I have historically not done that myself though.
diff --git a/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_2_2fa15f0eaf8c860b82e366130c8563c7._comment b/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_2_2fa15f0eaf8c860b82e366130c8563c7._comment
new file mode 100644 (file)
index 0000000..07955ac
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawndsaC4GaIBw49WNdbk2Faqfm_mrtQgul8"
+ nickname="Christian"
+ subject="thats cool"
+ date="2012-01-16T15:31:22Z"
+ content="""
diff --git a/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_3_c5af589dcdfe4f91dba50243762065e5._comment b/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_3_c5af589dcdfe4f91dba50243762065e5._comment
new file mode 100644 (file)
index 0000000..3ab401e
--- /dev/null
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawndsaC4GaIBw49WNdbk2Faqfm_mrtQgul8"
+ nickname="Christian"
+ subject="Great! It worked!"
+ date="2012-01-17T01:18:06Z"
+ content="""
+Thanks Joey, also for the replacement hint, had to install one or two dependencies and it worked like a charm. Version from the day before yesterday now. (Awesome!)
+I have not upgraded the mypage.setup file, yet. I included \"headinganchors\" which does not seem to work right now. The page compiles without errors but contains no anchors when viewed in browser. Hm..
+Great job thanks again!
diff --git a/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_4_3090da7bafbf92a825edec8ffc45af20._comment b/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_4_3090da7bafbf92a825edec8ffc45af20._comment
new file mode 100644 (file)
index 0000000..569a735
--- /dev/null
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawndsaC4GaIBw49WNdbk2Faqfm_mrtQgul8"
+ nickname="Christian"
+ subject="updating setup file"
+ date="2012-01-17T01:30:32Z"
+ content="""
+just for the record - I created a new wiki and the setup file is then automatically in YAML format. I think I am going to just transfer the settings from the \"old\" setup file to the new one. 
+If anyone has an idea why the headinganchors don't work, pls let me know. 
+As for the rest - insanely cool piece of software - great
diff --git a/doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit.mdwn b/doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit.mdwn
new file mode 100644 (file)
index 0000000..5440ddf
--- /dev/null
@@ -0,0 +1,24 @@
+today I encountered a strange behaviour of ikiwiki that I'm trying to understand...
+I linked to a subpage using
+and saved the file. Then I added it to the repo, committed it, and ran 
+    ikiwiki --setup setupfile.setup
+Afterwards some older links of the same style were displayed correctly, but one new link remained black - i.e. with no question mark to it. I figure that means ikiwiki has recognized the syntax but did not create a link in the html file.
+I messed around a bit, recompiling many times did not work. After a while I opened the file via the web editing formular and saved it from there ("Save Page"). 
+After that the link was there. 
+I dont know why. My question is - what does ikiwiki do differently when saved from the web form than when saving an editor and then running ikiwiki --setup setupfile.setup.
+Btw. my version is still 3.20100815.7 since I'm on squeeze and like to stick with the repo versions.
+Thanks in advance,
diff --git a/doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit/comment_1_ac6bda46ad00bfe980bc76c4a39aa796._comment b/doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit/comment_1_ac6bda46ad00bfe980bc76c4a39aa796._comment
new file mode 100644 (file)
index 0000000..91e7d9e
--- /dev/null
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnam4a8RtFwaWkKOX2BkA5I7cpGHcFw8E0"
+ nickname="Christian"
+ subject="comment 1"
+ date="2011-12-03T17:17:57Z"
+ content="""
+with \"no question mark to it\" means \"being no link (target exists) AND with no question mark to it\"
diff --git a/doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit/comment_3_10a46f8ee23c8935e20c70842671cee4._comment b/doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit/comment_3_10a46f8ee23c8935e20c70842671cee4._comment
new file mode 100644 (file)
index 0000000..a14752f
--- /dev/null
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnam4a8RtFwaWkKOX2BkA5I7cpGHcFw8E0"
+ nickname="Christian"
+ subject="comment 3"
+ date="2011-12-03T17:25:58Z"
+ content="""
+One more thing: my syntax with the above post is not correct - the linking syntax was/is
+    \[[somename|path/from/website/root/dir/filename]]
+ie. I got one slash too much above.
diff --git a/doc/forum/Disable_account_creation_for_new_users.mdwn b/doc/forum/Disable_account_creation_for_new_users.mdwn
new file mode 100644 (file)
index 0000000..4a24323
--- /dev/null
@@ -0,0 +1,9 @@
+I'm planning on abusing ikiwiki as a mini-CMS for a static website and think it's exactly the right system for it. Great stuff btw.
+But I still got a problem that I can't solve at the moment. For the static website (with commenting enabled tho) I want no one else to edit the pages, i.e. I want to turn off the editing function for everyone except me. 
+That works with the lockedit plugin so far, and I can also hide the edit and preferences links on the pages. But if someone manually enters the link to the edit page he/she can still create an account (I have disabled openid and plan to use passwordauth only). The account can then not be used to edit pages but still, everyone can create accounts in userdb over and over. Is there a way to solve that? I just don't see it right now.
+Best regards,
diff --git a/doc/forum/Disable_account_creation_for_new_users/comment_1_adafddb0aff7c2c1f4574101c4cf9073._comment b/doc/forum/Disable_account_creation_for_new_users/comment_1_adafddb0aff7c2c1f4574101c4cf9073._comment
new file mode 100644 (file)
index 0000000..116b2a5
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnam4a8RtFwaWkKOX2BkA5I7cpGHcFw8E0"
+ nickname="Christian"
+ subject="comment on my own question"
+ date="2011-11-30T15:15:21Z"
+ content="""
+REALLY great was what I wanted to say - all the essentials are there, including commenting and search function. What else can you want <3 
diff --git a/doc/forum/Disable_account_creation_for_new_users/comment_2_865591f77966f1657a9a4b2426318c51._comment b/doc/forum/Disable_account_creation_for_new_users/comment_2_865591f77966f1657a9a4b2426318c51._comment
new file mode 100644 (file)
index 0000000..d04cfb6
--- /dev/null
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="http://smcv.pseudorandom.co.uk/"
+ nickname="smcv"
+ subject="comment 2"
+ date="2011-11-30T16:09:16Z"
+ content="""
+Not currently possible, but you can configure [[plugins/passwordauth]] to
+ require an `account_creation_password`, and not tell anyone else what
+it is; or you could use [[plugins/httpauth]] for authenticated editing.
+(My mostly-static ikiwiki sites only allow [[plugins/httpauth]] over
diff --git a/doc/forum/Disable_account_creation_for_new_users/comment_3_05193e563682f634f13691ee0a8359db._comment b/doc/forum/Disable_account_creation_for_new_users/comment_3_05193e563682f634f13691ee0a8359db._comment
new file mode 100644 (file)
index 0000000..66b5214
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnam4a8RtFwaWkKOX2BkA5I7cpGHcFw8E0"
+ nickname="Christian"
+ subject="thx"
+ date="2011-11-30T18:50:50Z"
+ content="""
+thank you for your quick reply, smcv!
diff --git a/doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn b/doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn
new file mode 100644 (file)
index 0000000..472412d
--- /dev/null
@@ -0,0 +1,20 @@
+I'm using the ikiwiki calendar plugin.
+My website is in french (locale fr_FR.UTF-8), and calendars that are generated by the plugin makes some encodi$
+I don't know how the plugin generate translation for dates, but I've seen that there is no ikiwiki translation$
+That's why I suppose (but I'm not sure) that it use date unix command to insert date into the html page, witho$
+Could I have forgotten some options to make it nice or not?
+Is someone could test it and verify if it works or not?
+> This was discussed in [[bugs/Encoding_problem_in_calendar_plugin]]
+> and is now fixed. --[[Joey]] 
diff --git a/doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_.mdwn b/doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_.mdwn
new file mode 100644 (file)
index 0000000..c6af80a
--- /dev/null
@@ -0,0 +1,5 @@
+I installed a new wiki on my local machine. When I click on edit, I get the following error:
+`Error: cannot write to /home/user/myiki2/.ikiwiki/lockfile: Permission denied`
+I checked the permissions of that file and assured that they are the same as in my other working ikiwiki, but it doesn't help. Any idea?
diff --git a/doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_/comment_1_64146f306ec8c10614521359b6de4f82._comment b/doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_/comment_1_64146f306ec8c10614521359b6de4f82._comment
new file mode 100644 (file)
index 0000000..02f7086
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://launchpad.net/~tale"
+ nickname="tale"
+ subject="What are the permissions?"
+ date="2011-12-28T19:35:25Z"
+ content="""
+What exactly are the permissions for the lockfile and the directory it is in? 
+What user is the ikiwiki running as?
diff --git a/doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_/comment_2_ed2b4b8f7122b42bbde1189fbd2969dd._comment b/doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_/comment_2_ed2b4b8f7122b42bbde1189fbd2969dd._comment
new file mode 100644 (file)
index 0000000..cc1a30a
--- /dev/null
@@ -0,0 +1,23 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawk_MMtLPS7osC5MjX00q2ATjvvXPWqm0ik"
+ nickname="micheal"
+ subject="comment 2"
+ date="2011-12-28T23:06:06Z"
+ content="""
+stat -c '%A %a %U %G %n' myiki2 myiki1   
+drwxr-xr-x 755 user user myiki2    
+drwxr-xr-x 755 user user myiki1   
+stat -c '%A %a %U %G %n' myiki2/.ikiwiki myiki1/.ikiwiki  
+drwxr-xr-x 755 user user myiki2/.ikiwiki  
+drwxr-xr-x 755 user user myiki1/.ikiwiki  
+stat -c '%A %a %U %G %n' myiki2/.ikiwiki/lockfile myiki1/.ikiwiki/lockfile   
+-rw-r--r-- 644 user user myiki2/.ikiwiki/lockfile  
+-rw-r--r-- 644 user user myiki1/.ikiwiki/lockfile  
+As you see, myiki2 has the same permissions as myiki1, but myiki1 works.
diff --git a/doc/forum/Help_with_tag__95__autocreate.mdwn b/doc/forum/Help_with_tag__95__autocreate.mdwn
new file mode 100644 (file)
index 0000000..f470c57
--- /dev/null
@@ -0,0 +1,9 @@
+I have the tag plugin enabled, and these additional lines in my setup file: 
+    tagbase => "tags",
+    tag_autocreate => 1,
+    tag_autocreate_commit => 1,
+However, when I use a !tag or !taglink directive, nothing gets autocreated in the tags/ directory. What am I doing wrong? 
+Edit: I'm using ikiwiki version 3.20100122ubuntu1 on Ubuntu 10.04.3 LTS... upgraded to ikiwiki_3.20110905_all from the debian repository and that solved my problem. Oops. :)
diff --git a/doc/forum/How_to_allow_.markdown_and_.md_at_the_same_time_as_valid_extensions_for_source_files__63__.mdwn b/doc/forum/How_to_allow_.markdown_and_.md_at_the_same_time_as_valid_extensions_for_source_files__63__.mdwn
new file mode 100644 (file)
index 0000000..d5f1449
--- /dev/null
@@ -0,0 +1 @@
+How to allow .markdown and .md (at the same time) as valid extensions for source files? The default is .mdwn.
diff --git a/doc/forum/How_to_change_registration_page.mdwn b/doc/forum/How_to_change_registration_page.mdwn
new file mode 100644 (file)
index 0000000..f339f71
--- /dev/null
@@ -0,0 +1,9 @@
+Well, I simply don't see it.
+I would like to change the "account registration" page, where it says user, password, repeat password, Account Creation Password, E-Mail.  
+I simply want it to ask a question like "Who's your daddy" or "What are we all working on" instead of "Account creation password".
+I already grepped through the files of the source which I compiled ikiwiki from - I just can't find it. I'm a noob in cgi, it seems to be somewhat in there, but that could also be totally wrong.
+Can you tell me where to look?
diff --git a/doc/forum/How_to_change_registration_page/comment_1_43758a232e4360561bc84f710862ff40._comment b/doc/forum/How_to_change_registration_page/comment_1_43758a232e4360561bc84f710862ff40._comment
new file mode 100644 (file)
index 0000000..5edd993
--- /dev/null
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 1"
+ date="2012-01-30T19:30:20Z"
+ content="""
+Sure.. You're looking for the file `IkiWiki/Plugin/passwordauth.pm`
+This line in particular is the text that gets modified and displayed to the user.
+                                        name => \"account_creation_password\",
diff --git a/doc/forum/How_to_configure_po_plugin__63__.mdwn b/doc/forum/How_to_configure_po_plugin__63__.mdwn
new file mode 100644 (file)
index 0000000..a03358d
--- /dev/null
@@ -0,0 +1,21 @@
+I put 
+    # po plugin
+    po_master_language => 'en|English',
+    po_slave_languages => [ 'zh|Chinese']
+in page.setup. And did 
+    $ikiwiki --setup ./page.setup
+but get errors:
+    Can't use string ("en|English") as a HASH ref while "strict refs" in use at /usr/share/perl5/IkiWiki/Plugin/po.pm line 162.
+Line 162 of the file reads
+   delete $config{po_slave_languages}{$config{po_master_language}{code}};;
+What's wrong? How to fix it?
diff --git a/doc/forum/How_to_configure_po_plugin__63__/comment_1_5e0cc4cdfd126f2f4af64104f02102d6._comment b/doc/forum/How_to_configure_po_plugin__63__/comment_1_5e0cc4cdfd126f2f4af64104f02102d6._comment
new file mode 100644 (file)
index 0000000..fc194b3
--- /dev/null
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="intrigeri"
+ ip=""
+ subject="Please upgrade"
+ date="2011-12-20T09:34:56Z"
+ content="""
+You seem to be using an older version of ikiwiki. Either use a hash ref (see [old documentation](http://source.ikiwiki.branchable.com/?p=source.git;a=blobdiff;f=doc/plugins/po.mdwn;h=c36414c8e85f5bb11e2c3a7c3bd41e829abe15a6;hp=53327c1dae94ef5896119cc874133a9a3c1a9b4e;hb=862fc7c1ab1f7d709561bcb02fc8ede57b90a51b;hpb=e50df5ea7601b6a1fc03994650ddff728aba7b57)) or upgrade.
diff --git a/doc/forum/How_to_create_first_translation_page_using_po_plugin__63__.mdwn b/doc/forum/How_to_create_first_translation_page_using_po_plugin__63__.mdwn
new file mode 100644 (file)
index 0000000..e9dd665
--- /dev/null
@@ -0,0 +1,24 @@
+I followed instructions at 
+    http://ikiwiki.info/plugins/po/
+and added to `configfile`
+        po_master_language => 'en|English',
+       po_slave_languages => [ 'zh|Chinese' ],
+        po_translatable_pages => '(* and !*/Discussion and !blog/*/comment_*)',
+        po_link_to => 'current'
+and did 
+      ikiwiki --setup configfile
+But I don't seem to see any change in the newly built site. 
+How do I actually use po to create translation pages? 
+1) I have existing pages that's in English. How do I add translated versions of some of those pages in the slave language?
+2) How do I add new pages with the primary language version and alternative versions in slave languages?
+The documentation of po is not explicit with what are the concrete steps.
diff --git a/doc/forum/How_to_use___126____47__bin__47__multimarkdown_instead_of_Text::MultiMarkdown.mdwn b/doc/forum/How_to_use___126____47__bin__47__multimarkdown_instead_of_Text::MultiMarkdown.mdwn
new file mode 100644 (file)
index 0000000..5dadb60
--- /dev/null
@@ -0,0 +1,5 @@
+[[!meta author=tjgolubi]]
+I want to configure IkiWiki to use Fletcher Penney's recent version of [[MultiMarkdown|http://fletcherpenney.net/multimarkdown]] instead of the default perl implementation.
+I don't know perl, but I think I need to replace the mdwn.pm plugin with something that uses "open2".
+Please help me get started. -- [[tjgolubi]]
diff --git a/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__.mdwn b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__.mdwn
new file mode 100644 (file)
index 0000000..e23d3fd
--- /dev/null
@@ -0,0 +1,14 @@
+Since ikiwiki doesn't have much of a chance of working in windows, how about we compromise by making an offline ikiwiki editor for Windows? In fact, it might be advantageous to use it in Linux, too...
+It should be very simple: It would enter the source wiki and show the Markdown code by default, but would have an option to preview your page in another tab.
+Basic features:
+* wikilinks, maps, images, inlinepages, and other basic functions should all work in the preview
+* perhaps use local.css to format preview
+* See the DVCS history with diffs and all
+* have a discussion tab to easily see what other people have said about the page
+If we want to add some more bells and whistles, maybe we could throw in some buttons to insert markdown formatting (like in forums, mediawiki, or RES).
+Any thoughts on this?
diff --git a/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_1_a66fd9d7ab4359784a5420cd899a1057._comment b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_1_a66fd9d7ab4359784a5420cd899a1057._comment
new file mode 100644 (file)
index 0000000..20fd763
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://kerravonsen.dreamwidth.org/"
+ ip=""
+ subject="comment 1"
+ date="2012-01-13T22:32:47Z"
+ content="""
+It would probably be quite complex to write, and difficult to maintain.  I don't think much of your chances of getting someone to write it.  If you want to write it yourself, have fun doing so!
diff --git a/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_2_3351ff773fea3f640f4036bb8c7c7efd._comment b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_2_3351ff773fea3f640f4036bb8c7c7efd._comment
new file mode 100644 (file)
index 0000000..b83042c
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkr8GVPw30JBR34Btg-SKcS8gxEf7zpSJQ"
+ nickname="Lawrence"
+ subject="comment 2"
+ date="2012-01-14T03:14:38Z"
+ content="""
+Eh, ok, lol. I know that implementing most of the wiki features over again could be difficult, and so would a Git diff reader, but it shouldn't be that hard to get Wikilinking or a markdown previewer working.
+Could you point out some specific problems of this approach, so that it would help me out to do so?
diff --git a/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_3_273b2b63a9af2bc4eeb030e026436687._comment b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_3_273b2b63a9af2bc4eeb030e026436687._comment
new file mode 100644 (file)
index 0000000..e5eaf2c
--- /dev/null
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkr8GVPw30JBR34Btg-SKcS8gxEf7zpSJQ"
+ nickname="Lawrence"
+ subject="comment 3"
+ date="2012-01-14T17:41:52Z"
+ content="""
+Like, there's already a whole host of Markdown previewer apps that are pretty good. [Here's a](http://www.macworld.com/article/164744/2012/01/marked_excels_at_previewing_markdown_and_html_documents.html) popular one on Mac, and there are many more...
+There's also a plugin for Emacs that does so, and even resolves wikilinks (in some way..).
+But I'd have to say that I probably made a misleading title, WYSIWYG would probably be low on the list of needed features. And I'm just dumping an idea I have here in case anyone has any suggestions or comments, I'll probably do it myself in my free time.
diff --git a/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_4_546771c13ea1b550301586e187d82cb5._comment b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_4_546771c13ea1b550301586e187d82cb5._comment
new file mode 100644 (file)
index 0000000..4724174
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawndsaC4GaIBw49WNdbk2Faqfm_mrtQgul8"
+ nickname="Christian"
+ subject="just my 2 cents"
+ date="2012-01-17T11:10:09Z"
+ content="""
diff --git a/doc/forum/Last_visited_pages.mdwn b/doc/forum/Last_visited_pages.mdwn
new file mode 100644 (file)
index 0000000..ae87cf1
--- /dev/null
@@ -0,0 +1 @@
+Is it possible to add a list of the n last visited pages on the bottom of each ikiwiki page (or maybe on a sidebar)?
diff --git a/doc/forum/Last_visited_pages/comment_1_e34650064dd645b35da98e80c0311df9._comment b/doc/forum/Last_visited_pages/comment_1_e34650064dd645b35da98e80c0311df9._comment
new file mode 100644 (file)
index 0000000..c5e2cc8
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://kerravonsen.dreamwidth.org/"
+ ip=""
+ subject="comment 1"
+ date="2011-11-27T11:09:55Z"
+ content="""
+Only if you could do it with JavaScript or SSI; remember IkiWiki is a wiki *compiler* - all the pages are generated beforehand, their content remains the same no matter what your visitor is doing.
diff --git a/doc/forum/Last_visited_pages/comment_2_2a0c4e844da1deaa2c286e87c8eab84d._comment b/doc/forum/Last_visited_pages/comment_2_2a0c4e844da1deaa2c286e87c8eab84d._comment
new file mode 100644 (file)
index 0000000..c5e9075
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawk_MMtLPS7osC5MjX00q2ATjvvXPWqm0ik"
+ nickname="micheal"
+ subject="comment 2"
+ date="2011-11-27T12:23:31Z"
+ content="""
+How to to it with JavaScript OR SSI?
diff --git a/doc/forum/Let__39__s_just_rely_on_backlinks_for_this__63__.mdwn b/doc/forum/Let__39__s_just_rely_on_backlinks_for_this__63__.mdwn
deleted file mode 100644 (file)
index 35940cf..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Re [Let's just rely on backlinks for this?](http://git.ikiwiki.info/?p=ikiwiki;a=blobdiff;f=doc/ikiwiki/pagespec/discussion.mdwn;h=4eed3722ccc744595fc8380e68e69dc9e1ad6450;hp=f4fdd764ed61c34c09af9df046a1a134b7d0ffe6;hb=a4ce0468f6f562ad4ec749f156528aa5b3f2fe39;hpb=23a4ee6d15dbd9b8e8c6588a829dd30a26a8de32) and [2](http://git.ikiwiki.info/?p=ikiwiki;a=blobdiff;f=doc/ikiwiki/wikilink/discussion.mdwn;h=0677ff7ded6a86be7d010dfd97affdb6b266832a;hp=274c8aaf1d075adbf3b76496e1945348aefe836a;hb=4f4666c4ae5cdf5e04ac42cc52a97d90e978adb0;hpb=a4ce0468f6f562ad4ec749f156528aa5b3f2fe39):
-I simply didn't notice there is an "add a new bug" form at [[bugs]], so I used the obvious way to create a page through the web-interface: to put first a wikilink pointing at the new page. --Ivan Z.
diff --git a/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated.mdwn b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated.mdwn
new file mode 100644 (file)
index 0000000..b659212
--- /dev/null
@@ -0,0 +1,27 @@
+I copied ikiwiki from old host to new. Old is Debian GNU/Linux version 5.0.7, with ikiwiki 3.1415926~bpo50+1
+New host is 5.0.8 with ikiwiki 3.20100815~bpo50+1
+I have ikiwiki.setup and both GIT repos from old host, src and src.git, the latter is bare repo. 
+I suspect I have messed up things in the old host, since the src directory tree is much larger than the src.git. 
+tale@tugelbend:~/wiki$ du -sh src src.git/
+8,3M   src
+2,6M   src.git/
+If I clone the src.git to the new host, I get after ikiwiki --setup web pages from year 2009. So I did the migration like this:
+Copy the src directory to the new host to temp dir;  git clone --bare /tmp/Foo/src ~/wiki/wiki.git 
+cd ~/wiki
+git clone wiki.git wiki.src
+cd ..
+ikiwiki --setup ikiwiki.setup
+I believe I have modified the ikiwiki.setup file correctly, I get no error messages and it makes the web page with the
+same content as on old host. But when I git clone wiki.git a working copy for myself, and edit it, git commit -a ; git push
+I am sad to see the web page is not updated. 
+How can I see what is wrong? The hook seems OK:
+taleman@porixi:~/wiki$ ls -lh wiki.git/hooks/post-update 
+-rwsr-sr-x 1 taleman taleman 14K 23.12. 17:42 wiki.git/hooks/post-update
+ikiwiki --setup created that and did not claim any errors. 
diff --git a/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_2_b44a492c7f10395a31f3c0830ef33f0c._comment b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_2_b44a492c7f10395a31f3c0830ef33f0c._comment
new file mode 100644 (file)
index 0000000..576d11f
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 2"
+ date="2011-12-25T00:07:28Z"
+ content="""
+Try running the post-update hook by hand and see if it pulls the changes into ~/wiki/wiki.src and see if it updates the site. 
+Make sure `gitorigin_branch` is set in the setup file.
diff --git a/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_2_f9240b217b2d1ee8d51dada9cb1186b3._comment b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_2_f9240b217b2d1ee8d51dada9cb1186b3._comment
new file mode 100644 (file)
index 0000000..635aa93
--- /dev/null
@@ -0,0 +1,28 @@
+[[!comment format=mdwn
+ username="https://launchpad.net/~tale"
+ nickname="tale"
+ subject="comment 2"
+ date="2011-12-27T16:18:31Z"
+ content="""
+In both old and new host gitorigin_branch is empty string in ikiwiki.setup.
+    tale@tugelbend:~$ grep -i gitorigin ikiwiki.setup 
+       gitorigin_branch => '',
+The branches subdir is empty on both hosts:
+    tale@tugelbend:~$ LANG=C ls -lha wiki/src.git/branches/
+    total 8.0K
+    drwxr-xr-x 2 tale tale 4.0K Dec 24  2009 .
+    drwxr-xr-x 7 tale tale 4.0K Dec 24  2009 ..
+    tale@tugelbend:~$ 
+I do not know what value I should assign to gitorigin_branch.
+I tried 
+    wiki.git/hooks/post-update
+but nothing seems to happen. No output, web page stays the same. File timestamps are not updated 
+on the dest directory. 
diff --git a/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_3_c3c5c41a4c220793c6d16f3fd6132272._comment b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_3_c3c5c41a4c220793c6d16f3fd6132272._comment
new file mode 100644 (file)
index 0000000..f845f13
--- /dev/null
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="https://launchpad.net/~tale"
+ nickname="tale"
+ subject="Editing via browser works"
+ date="2011-12-27T18:47:16Z"
+ content="""
+I now set up virtual host in apache2 and fudged the ipnumber to correspond to hostnames the ikiwiki uses. I do not want to update DNS before I have checked the site works.
+Now I can log in using OpenID and edit the wiki via browser. This time the web pages are updated and the changes I made appear in the wiki. 
+I cheched the gitorigin_branch setting was empty string even in 2009 when I got this wiki. I begin to suspect editing the wiki using a git checkout would not work even in the host the ikiwiki is currently running on, and maybe did not work in the host it was running on in 2009. 
+It looks to me like ikiwiki is working on this new host except git configuration is somehow messed up. It is possible I never did use git checkout on the old host. 
diff --git a/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_4_1f6f9e3939a454c1eb8d2fb29bd519de._comment b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_4_1f6f9e3939a454c1eb8d2fb29bd519de._comment
new file mode 100644 (file)
index 0000000..1a5a914
--- /dev/null
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="https://launchpad.net/~tale"
+ nickname="tale"
+ subject="Checked old host, git messed up there, too"
+ date="2011-12-27T18:59:38Z"
+ content="""
+I did 
+    git clone src.git
+on the host ikiwiki is currently running on, and got an old version of the wiki, not the one that is diplayed on the web page.
+So even there editing via browser works, but git checks out an old version and the changes I make do not get shown on the web page after git push. 
+This new host I set up is thus no worse, actually slighty better now because git clone at least gets me the sources the web pages are generated from.
+How to figure out what is wrong with ikiwiki setup in the using git part?
diff --git a/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_5_8611fc62797e70a0d2a61d94fcb03170._comment b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_5_8611fc62797e70a0d2a61d94fcb03170._comment
new file mode 100644 (file)
index 0000000..137c198
--- /dev/null
@@ -0,0 +1,22 @@
+[[!comment format=mdwn
+ username="https://launchpad.net/~tale"
+ nickname="tale"
+ subject="branch = master, still no luck"
+ date="2011-12-28T03:22:57Z"
+ content="""
+I learned from docs setting gitorigin_branch to empty string disables git pushing and pulling. So guessing 
+gitorigin_branch => 'master',
+seemed a good idea. 
+However, now ikiwiki -setup gives:
+    taleman@porixi:~$ ikiwiki -setup ikiwiki.setup 
+    successfully generated /var/www/ikiwiki/debian.fi/ikiwiki.cgi
+    successfully generated /home/taleman/wiki/wiki.git/hooks/post-update
+    fatal: 'master': unable to chdir or not a git archive
+    fatal: The remote end hung up unexpectedly
+    'git pull master' failed:  at /usr/share/perl5/IkiWiki/Plugin/git.pm line 195.
+    taleman@porixi:~$
diff --git a/doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__/comment_1_e5ce524c5d34b1d4218172296bd99100._comment b/doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__/comment_1_e5ce524c5d34b1d4218172296bd99100._comment
new file mode 100644 (file)
index 0000000..78703bc
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://launchpad.net/~tale"
+ nickname="tale"
+ subject="When is ikiwiki --setup run?"
+ date="2011-12-23T13:49:54Z"
+ content="""
+Am I to run ikiwiki --setup after all the three steps?
diff --git a/doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__/comment_3_65c4a4895f6541ff0ff2d094ff447bba._comment b/doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__/comment_3_65c4a4895f6541ff0ff2d094ff447bba._comment
new file mode 100644 (file)
index 0000000..a9bb279
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 3"
+ date="2011-12-25T00:08:22Z"
+ content="""
+You run ikiwiki -setup when you have all the files in place for ikiwiki and would like it to rebuild the site and generate the wrappers.
diff --git a/doc/forum/Need_some_help_on_starting_to_use_po_plugin_for_creating_pages_in_multiple_languages.mdwn b/doc/forum/Need_some_help_on_starting_to_use_po_plugin_for_creating_pages_in_multiple_languages.mdwn
new file mode 100644 (file)
index 0000000..5e4e56f
--- /dev/null
@@ -0,0 +1,6 @@
+I've installed the po plugin. I'm still trying to figure out how to use it.
+I have a Ikiwiki instance with multiple existing pages in English.
+How do I use po to create alternative pages in slave languages for these existing pages?
diff --git a/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__.mdwn b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__.mdwn
new file mode 100644 (file)
index 0000000..e58844b
--- /dev/null
@@ -0,0 +1,12 @@
+unfortunately, openID is not working at my wiki. I get the error
+no_identity_server: The provided URL doesn't declare its OpenID identity server.
+I think this is related to the ID of my wiki not being defined right. Where and how do I have to define it? I have used the !meta openid as described on ikiwiki.info (are there two quotes at the end where only one should be (joeyh example) on index.html. 
+Somehow I think its not transferred right to the openID provider of the user upon login.
+thanks in advance
diff --git a/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_bf1bec748d6ab419276a73a7001024cf._comment b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_bf1bec748d6ab419276a73a7001024cf._comment
new file mode 100644 (file)
index 0000000..06d2a33
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawndsaC4GaIBw49WNdbk2Faqfm_mrtQgul8"
+ nickname="Christian"
+ subject="apache module?"
+ date="2012-01-18T15:40:57Z"
+ content="""
+Do I have to install the openid apache module, load it, and configure apache to use my openid? Except that in my case I can get it from the package system, there is a description <a href=\"http://findingscience.com/mod_auth_openid/\">here</a> what I mean. I got a feeling that's it.
diff --git a/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_2_14a1b269be6dbcc9b2068d3e18b55711._comment b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_2_14a1b269be6dbcc9b2068d3e18b55711._comment
new file mode 100644 (file)
index 0000000..3078a14
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 2"
+ date="2012-01-30T19:34:00Z"
+ content="""
+Yes, good spotting, [[ikiwiki/directive/meta]] had a doubled quote in the openid example.
+Otherwise, that example will work. You don't need anything installed on your server to add openid delegation to a page.
diff --git a/doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog.mdwn b/doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog.mdwn
new file mode 100644 (file)
index 0000000..383ae17
--- /dev/null
@@ -0,0 +1,7 @@
+I've been searching on this topic for a while and haven't found a solution, so I'd like to ask here.
+I have a blog which I mostly use as a tech-note reminder system for myself (how did I setup my server, etc).  Occasionally I find it useful to include files which are not posts, and links to those files.
+Right now, I scp the files to the server to get them in a place accessible by the web server, then use a relative link within the post.  This works, but it strikes me that the files are as much a part of the post as the post itself, and therefore should be tracked.  The problem with tracking the files is the inline directive gives those files their own entries as posts in the blog.  I do not want them to have their own entries, but I *do* want them co-located with the file containing the post from which they are referenced.
+So, is there a way to have *only* `*.mdwn` files be picked up as posts by the inline directive (I tried using a PageSpec of `*.mdwn`, but that didn't work)?  Or, conversely, to exclude other files from being picked up as posts?  Or am I not seeing another way to go about this task?
diff --git a/doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog/comment_1_45ecaf6efa2065837fa54a42737f0a66._comment b/doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog/comment_1_45ecaf6efa2065837fa54a42737f0a66._comment
new file mode 100644 (file)
index 0000000..4d2c932
--- /dev/null
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="http://smcv.pseudorandom.co.uk/"
+ nickname="smcv"
+ subject="comment 1"
+ date="2012-01-03T11:29:59Z"
+ content="""
+Change the [[ikiwiki/pagespec]] in the `inline`, for instance from
+`posts/*` to `page(posts/*)`.
+`page(*)` only matches \"pages\" (things that get rendered to HTML, which is just
+`.mdwn` files in a default ikiwiki, but can include other things with the right
+On my blog I use \"`2* and copyright(*)`\", which is a bit of a hack: it matches
+files in the directories I use for posts (which are year-based), but only if
+they have an explicit copyright statement - which my blog posts do, but
+\"structural\" pages (like a list of all posts from 2011) don't.
diff --git a/doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog/comment_2_45ca7ef4190c281d703c8c7ca6979298._comment b/doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog/comment_2_45ca7ef4190c281d703c8c7ca6979298._comment
new file mode 100644 (file)
index 0000000..ecb6f5d
--- /dev/null
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="dave"
+ ip=""
+ subject="comment 2"
+ date="2012-01-04T04:01:54Z"
+ content="""
+Thank you sir, that was exactly what I needed!
+Don't know why I didn't think to try page - apparently I have a special blindness which applies to looking at the pagespec help page. ;)
+Anyway, thanks again, that fixed it.
diff --git a/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar.mdwn b/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar.mdwn
new file mode 100644 (file)
index 0000000..0c328a9
--- /dev/null
@@ -0,0 +1 @@
+Is it possible to display the recent changes on the main site of the wiki or on a sidebar?
diff --git a/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_1_018b977ff7ee59fc53838e0c20c3a9a7._comment b/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_1_018b977ff7ee59fc53838e0c20c3a9a7._comment
new file mode 100644 (file)
index 0000000..1bc0cc5
--- /dev/null
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="jean_magnan"
+ ip=""
+ subject="comment 1"
+ date="2011-12-19T10:20:59Z"
+ content="""
+I have this line in the sidebar file, it says to show the titles and dates of the last 5 pages:
+[[!inline  pages=\"*\" archive=\"yes\" show=\"5\"]]
diff --git a/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment b/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment
new file mode 100644 (file)
index 0000000..2b6237b
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 2"
+ date="2011-12-20T15:13:48Z"
+ content="""
+The [[RecentChanges]] page is a regular wiki page that inlines a few special pages with a special template. That content can be copied anywhere else in the wiki to get the same effect.
diff --git a/doc/forum/Run_script_on_markdown_source.mdwn b/doc/forum/Run_script_on_markdown_source.mdwn
new file mode 100644 (file)
index 0000000..614815c
--- /dev/null
@@ -0,0 +1 @@
+How can I add a button to each wiki page which launches an external application or script with the markdown code of the current page as input?
diff --git a/doc/forum/Should_files_in_.ikiwiki_be_committed_and_pushed__63__.mdwn b/doc/forum/Should_files_in_.ikiwiki_be_committed_and_pushed__63__.mdwn
new file mode 100644 (file)
index 0000000..f5b1d58
--- /dev/null
@@ -0,0 +1,14 @@
+In my local working copy, I discovered a .ikiwiki directory with files and subdirectories. What are they for in a working copy? Should them be committed to central repository (origin) on remote server?
+    $ git status
+    # On branch master
+    # Changes to be committed:
+    #   (use "git reset HEAD <file>..." to unstage)
+    #
+    #  new file:   .ikiwiki/commitlock
+    #  new file:   .ikiwiki/indexdb
+    #  new file:   .ikiwiki/lockfile
+    #  new file:   .ikiwiki/transient/recentchanges/change_0326ad7c7aa2c40b8db5d59033ecda7ed4d61295._change
+    <snip>
+Should these be committed and pushed?
diff --git a/doc/forum/Should_files_in_.ikiwiki_be_committed_and_pushed__63__/comment_1_8e65d7d8298e3c31d2a16446a71c8049._comment b/doc/forum/Should_files_in_.ikiwiki_be_committed_and_pushed__63__/comment_1_8e65d7d8298e3c31d2a16446a71c8049._comment
new file mode 100644 (file)
index 0000000..43e7a00
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 1"
+ date="2011-12-22T16:12:42Z"
+ content="""
+Absolutely not. If you use ikiwiki-makerepo to set up ikiwiki, it makes a `.gitignore` containing `/.ikiwiki`
+The `.ikiwiki` directory is where ikiwiki stores all the state it needs to track about a given build of a wiki.
diff --git a/doc/forum/Split_a_wiki.mdwn b/doc/forum/Split_a_wiki.mdwn
new file mode 100644 (file)
index 0000000..f1c7e50
--- /dev/null
@@ -0,0 +1,21 @@
+Is it possible to split an ikiwiki (with git backend) in to two?
+Suppose I have an ikiwiki called myiki
+which contains the pages
+now I want to have two wikis called myikiA and myikiB
+such that
+myikiA contains pageA1,pageA2,...
+The history of myikiA should contain the whole history of those pages but no history of pageB1,pageB2,...
+myikiB contains pageB1,pageB2,...
+The history of myikiB should contain the whole history of those pages but no history of pageA1,pageA2,...
diff --git a/doc/forum/Split_a_wiki/comment_1_1599c26891b2071a2f1ca3fd90627fc4._comment b/doc/forum/Split_a_wiki/comment_1_1599c26891b2071a2f1ca3fd90627fc4._comment
new file mode 100644 (file)
index 0000000..6640191
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://kerravonsen.dreamwidth.org/"
+ ip=""
+ subject="comment 1"
+ date="2011-12-03T19:45:06Z"
+ content="""
+The only thing I can think of is to clone the wiki, and for WikiA, delete PageB, and for WikiB, delete PageA.  This won't remove the histories of those pages, but it will at least remove those pages.
diff --git a/doc/forum/Split_a_wiki/comment_2_1c54d3594f0350340f8dfb3e95c29ffd._comment b/doc/forum/Split_a_wiki/comment_2_1c54d3594f0350340f8dfb3e95c29ffd._comment
new file mode 100644 (file)
index 0000000..8040ad5
--- /dev/null
@@ -0,0 +1,20 @@
+[[!comment format=mdwn
+ username="http://smcv.pseudorandom.co.uk/"
+ nickname="smcv"
+ subject="comment 2"
+ date="2011-12-04T13:37:27Z"
+ content="""
+If just deleting the unwanted pages is insufficient (e.g. perhaps they
+contain information that must not be made public), you can split a git
+repository (including ikiwiki repositories) with `git filter-branch` (see
+[this stackoverflow question](http://stackoverflow.com/questions/359424/detach-subdirectory-into-separate-git-repository),
+for instance).
+This preserves the history of each individual page, but rewrites the
+entire history of the repository (it re-does every commit, pretending
+that the addition of the omitted pages and every subsequent edit to
+them had never happened); it's like `git rebase` but more so.
+As a result, existing branches will no longer be able to push to the
+rewritten repository.
diff --git a/doc/forum/Split_a_wiki/comment_3_9eac1d1b93df27d849acc574b1f0f26d._comment b/doc/forum/Split_a_wiki/comment_3_9eac1d1b93df27d849acc574b1f0f26d._comment
new file mode 100644 (file)
index 0000000..e2dbd25
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawk_MMtLPS7osC5MjX00q2ATjvvXPWqm0ik"
+ nickname="micheal"
+ subject="comment 3"
+ date="2011-12-04T14:03:55Z"
+ content="""
+@smcv: Thanks, that looks promising. The example from stackoverflow is with subdirectories. What do I have to change to match a list of single files (pages) instead?
diff --git a/doc/forum/Split_a_wiki/comment_4_e193ba447c0188f72ba589180b5d529e._comment b/doc/forum/Split_a_wiki/comment_4_e193ba447c0188f72ba589180b5d529e._comment
new file mode 100644 (file)
index 0000000..4505296
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawk_MMtLPS7osC5MjX00q2ATjvvXPWqm0ik"
+ nickname="micheal"
+ subject="comment 4"
+ date="2011-12-09T09:21:05Z"
+ content="""
+I have put the question on stackoverflow: http://stackoverflow.com/questions/8443372/split-an-ikiwiki
diff --git a/doc/forum/Xapian_search:_empty_postlist_table.mdwn b/doc/forum/Xapian_search:_empty_postlist_table.mdwn
new file mode 100644 (file)
index 0000000..704f017
--- /dev/null
@@ -0,0 +1,34 @@
+I'm trying to set up a personal wiki and I'm having trouble getting
+search to work.  All my searches give zero results.  I eventually
+figured out that the Xapian database that's being created has an empty
+postlist table.  The position and termlist tables are all fine, and
+when I add new content to the wiki I can see the database is updated
+and the search terms are in the position table in plaintext.  But I
+can't query for them, even using Xapian's command line tools.
+mexon:~/Test/.ikiwiki/xapian/default$ ls -l
+total 76
+-rw-rw-r-- 1 mexon mexon     0 Dec 16 15:56 flintlock
+-rw-rw-r-- 1 mexon mexon    28 Dec 16 15:55 iamchert
+-rw-rw-r-- 1 mexon mexon    13 Dec 16 15:55 position.baseA
+-rw-rw-r-- 1 mexon mexon 49152 Dec 16 15:55 position.DB
+-rw-rw-r-- 1 mexon mexon    13 Dec 16 15:55 postlist.baseA
+-rw-rw-r-- 1 mexon mexon     0 Dec 16 15:55 postlist.DB
+-rw-rw-r-- 1 mexon mexon    13 Dec 16 15:55 record.baseA
+-rw-rw-r-- 1 mexon mexon     0 Dec 16 15:55 record.DB
+-rw-rw-r-- 1 mexon mexon    13 Dec 16 15:55 termlist.baseA
+-rw-rw-r-- 1 mexon mexon 16384 Dec 16 15:55 termlist.DB
+mexon:~/Test/.ikiwiki/xapian/default$ delve -a .
+All terms in database:
+I don't know how to debug from here.  Clearly ikiwiki is doing
+something right when it's building the database, but one of the tables
+is missing.  Can anyone guess what's wrong, or tell me where to start
+I'm using Centos 5.  Xapian is version 1.2.5.  Ikiwiki version 3.20111107.
diff --git a/doc/forum/Xapian_search:_empty_postlist_table/comment_1_de9a7c94beec2707eda0924ca58be9df._comment b/doc/forum/Xapian_search:_empty_postlist_table/comment_1_de9a7c94beec2707eda0924ca58be9df._comment
new file mode 100644 (file)
index 0000000..23e539f
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 1"
+ date="2011-12-16T18:51:16Z"
+ content="""
+Perhaps you should try a current verison of xapian, 1.2.7 works here. You don't say what version of the xapian perl module you have; is working here. The \"postlist\" is an internal part of xapian AFAICS, not something that has to be explicitly set up, and it gets populated here.
diff --git a/doc/forum/Xapian_search:_empty_postlist_table/comment_2_55f191e4b1306a318a30319f01802229._comment b/doc/forum/Xapian_search:_empty_postlist_table/comment_2_55f191e4b1306a318a30319f01802229._comment
new file mode 100644 (file)
index 0000000..41cdf3d
--- /dev/null
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="https://me.yahoo.com/a/2d7oNP9wlop3PaHlGlGS1J2ppVqXf4zQAw--#17b9b"
+ nickname="Matthew"
+ subject="comment 2"
+ date="2011-12-17T09:10:38Z"
+ content="""
+I'm using RPMs to install Xapian packages, xapian-omega and xapian-bindings-perl, and they're all 1.2.5.  I originally tried building and installing Xapian 1.2.7 from source, but found that ikiwiki failed like this:
+Use of inherited AUTOLOAD for non-method Search::Xapian::DB_CREATE_OR_OPEN() is deprecated at /home/mexon/system/Linux//lib/perl5/site_perl/5.8.8/IkiWiki/Plugin/search.pm line 220.
+Can't locate auto/Search/Xapian/DB_CREATE_O.al in @INC (@INC contains: /home/mat/.ikiwiki /home/mexon/system/Linux//lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /home/mexon/system/Linux//lib/perl5/site_perl/5.8.8 /home/mexon/system/perl5lib /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /home/mexon/system/Linux//lib/perl5/site_perl/5.8.8/IkiWiki/Plugin/search.pm line 220
+Much fruitless googling later I found that there were these 1.2.5 RPMs lying around so I switched to those.  If you know a solution to the DB_CREATE_O problem I could give 1.2.7 another go.
diff --git a/doc/forum/Xapian_search:_empty_postlist_table/comment_3_0bd424a89c3a52ff393a1e7e00c806be._comment b/doc/forum/Xapian_search:_empty_postlist_table/comment_3_0bd424a89c3a52ff393a1e7e00c806be._comment
new file mode 100644 (file)
index 0000000..05f9c87
--- /dev/null
@@ -0,0 +1,24 @@
+[[!comment format=mdwn
+ username="https://me.yahoo.com/a/2d7oNP9wlop3PaHlGlGS1J2ppVqXf4zQAw--#17b9b"
+ nickname="Matthew"
+ subject="comment 3"
+ date="2011-12-19T06:18:56Z"
+ content="""
+I had another go, this time with Xapian, and I finally got it working.  The errors I was seeing earlier were because Xapian installs itself in /usr/local, but the default CentOS environment doesn't have /usr/local/lib in the LD_LIBRARY_PATH.  As usual, the problem and solution are very duh, it's the error messages that make everything hard.  It's a lot more clear if you do a \"make test\" while building Search::Xapian:
+mexon:~/ikiwiki-temp/Search-Xapian-$ make test
+PERL_DL_NONLAZY=1 /usr/bin/perl \"-MExtUtils::Command::MM\" \"-e\" \"test_harness(0, 'blib/lib', 'blib/arch')\" t/*.t
+#   Failed test 'use Search::Xapian;'
+#   in t/01use.t at line 3.
+#     Tried to use 'Search::Xapian'.
+#     Error:  Can't load '/home/mexon/ikiwiki-temp/Search-Xapian-' for module Search::Xapian: libxapian.so.22: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230.
+#  at (eval 3) line 2
+# Compilation failed in require at (eval 3) line 2.
+# BEGIN failed--compilation aborted at t/01use.t line 3.
+# Looks like you failed 1 test of 3.
+So yeah.  Worth noting that Xapian 1.2.5 is apparently broken with ikiwiki.  Maybe some kind of warning?
diff --git a/doc/forum/ikiwiki_generates_html_files_with_600_permission..mdwn b/doc/forum/ikiwiki_generates_html_files_with_600_permission..mdwn
new file mode 100644 (file)
index 0000000..7038337
--- /dev/null
@@ -0,0 +1,8 @@
+I installed ikiwiki the usual way, my rcs is git, i configure the post-update hook in the bare-repo and use the cgi script in the non-bare.
+I update my wiki through git (clone the bare repo on my laptop (WORKING CLONE), make a change and push it back to origin ($REPOSITORY)). Then the post-update hook (configured in my ikiwiki.config) kicks in and updates the checked out wiki ($DESTDIR) and the cgi script there generates html. See [[rcs/git]] if something is not clear.
+My problem is: every generated html/css/favicon file is only write and readable by the user (600) and no one else.
+ - Edit: If i edit the wiki through the webinterface everything is fine. 
+ - Edit2: Set _everything_ to chmod 0755 but when i run --setup or push to the bare repo; **then pages that are generated through the post update hook still have the wrong permissions.**
diff --git a/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_1_6d73d412a9cc6f6ae426b62885c1f157._comment b/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_1_6d73d412a9cc6f6ae426b62885c1f157._comment
new file mode 100644 (file)
index 0000000..7008a05
--- /dev/null
@@ -0,0 +1,19 @@
+[[!comment format=mdwn
+ username="http://smcv.pseudorandom.co.uk/"
+ nickname="smcv"
+ subject="your shell has a restrictive umask"
+ date="2011-11-27T13:24:57Z"
+ content="""
+Your shell login to the server (presumably SSH?) is running under a
+restrictive `umask`, and by default ikiwiki doesn't overrule that.
+For instance, perhaps you're using the `pam_umask` module, or
+perhaps your `.bashrc` sets a restrictive mask. This is generally
+a good thing for privacy from other users of a shared server, but
+counterproductive when you're publishing things!
+You can configure ikiwiki to set a less restrictive `umask` with
+the `umask` option in your setup file. 18 is probably a good value
+(18 decimal = 022 octal, and a `umask` of 022 octal corresponds
+to `chmod 0755`, because the `umask` is subtracted from 0777 octal
+to get the default permissions).
diff --git a/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_2_1392fcde369d11a264f31f6b8993ccec._comment b/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_2_1392fcde369d11a264f31f6b8993ccec._comment
new file mode 100644 (file)
index 0000000..7e0818c
--- /dev/null
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://smcv.pseudorandom.co.uk/"
+ nickname="smcv"
+ subject="comment 2"
+ date="2011-11-27T13:46:16Z"
+ content="""
+See also [[bugs/octal umask setting is unintuitive]] for more about 18 vs. 022.
diff --git a/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_3_962306f22ceb17afb4150e766e9a05b3._comment b/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_3_962306f22ceb17afb4150e766e9a05b3._comment
new file mode 100644 (file)
index 0000000..6ed9550
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="ikiwikert"
+ ip=""
+ subject="comment 3"
+ date="2011-11-27T16:54:05Z"
+ content="""
+thank you for your enlighting post! i set the umask option to 022 (octal) and the wrapper to 0755 and it worked. However i guess it is not a good thing to mix modes and i would appreciate it, if you implemented the \"keyword-approach\" you mentioned.
+Or at least one way of defining modes would be okay for average joes like me.
diff --git a/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_4_8b988d85cfde123798238d0348764c79._comment b/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_4_8b988d85cfde123798238d0348764c79._comment
new file mode 100644 (file)
index 0000000..838b137
--- /dev/null
@@ -0,0 +1,22 @@
+[[!comment format=mdwn
+ username="http://smcv.pseudorandom.co.uk/"
+ nickname="smcv"
+ subject="comment 4"
+ date="2011-11-28T09:52:38Z"
+ content="""
+Joey merged my branch, so from the next release of ikiwiki you'll be able
+to say `umask => 'public'` (or `private` or `group` for the other two
+potentially-useful umasks).
+I'm not sure what you mean about mixing modes? The wrapper modes are
+something else - the wrapper modes are about who can run the CGI (or the
+git commit hook) and whether they're setuid (run as the user who owns
+the wiki) or not (run as the web server user or the git push user),
+whereas `umask` is about the permissions that ikiwiki will assign to
+new files it creates (like the HTML).
+A typical public wiki like this one will have `umask => 'public'`;
+the wrapper modes will either be `0755` or `04755` (both octal),
+depending on the details of how the web server runs the CGI
+and how git pushes are done.
diff --git a/doc/forum/index_attachments.mdwn b/doc/forum/index_attachments.mdwn
new file mode 100644 (file)
index 0000000..8167a60
--- /dev/null
@@ -0,0 +1,9 @@
+Why doesn't the [[plugins/search]] plugin index attachments? are there any
+technical reasons for not including this feature/option? (besides increased
+processing time, and depending from external programs.)
+One could check for all non-mdwn files, convert them to text, if such thing is
+possible, and add them as documents; I guess `needsbuild` would be a good site
+for that.
diff --git a/doc/forum/index_attachments/comment_1_18b9531d273292b45051eef6a306ca26._comment b/doc/forum/index_attachments/comment_1_18b9531d273292b45051eef6a306ca26._comment
new file mode 100644 (file)
index 0000000..056c413
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 1"
+ date="2012-01-13T17:46:49Z"
+ content="""
+I don't think there are really any reasons, other than noone having done it. 
+Although it is worth noting that using additional libraries/programs to eg, pull exif data and comments out of image files and make it searchable, does potentially increase ikiwiki's attack surface.
diff --git a/doc/forum/index_attachments/comment_2._comment b/doc/forum/index_attachments/comment_2._comment
new file mode 100644 (file)
index 0000000..a7eec29
--- /dev/null
@@ -0,0 +1,31 @@
+[[!comment format=mdwn
+ username="jerojasro"
+ nickname="jerojasro"
+ subject="RE: comment 1"
+ date="2012-01-15T23:49:49Z"
+ content="""
+I've modified the plugin adding the possibility of indexing attachments. Only
+PDF attachments for now, but support for other filetypes should be real easy to add.
+The changes to `IkiWiki/Plugin/search.pm` are available at
+<http://git.devnull.li/ikiwiki.git>, in the `srchatt` branch.
+I have a small question about filenames and security: I'm using `qx` to execute
+the program that extracts the text from the PDF files, but `qx` executes a
+whole string, and passes it not to the program I want to run, but to a shell,
+so it is possible (I think) to craft a filename that, in a shell, expands to
+something nasty.
+How do the Perl/IkiWiki experts suggest to handle these potentially unsafe
+filenames? I've thought of the following options:
+  * Running the text extractor program using `Proc::Safe`. I could not find a
+    Debian package for it, and I'd rather avoid adding another dependency to
+    IkiWiki.
+  * Running the text extractor program as suggested in the `perlipc` document,
+    using `fork` + `exec`.
+I haven't done any of those because I'd like to check if there are any helpers
+in IkiWiki to do this. Perhaps the `IkiWiki::possibly_foolish_untaint` function
+does it? (I didn't really understand what it does...)
diff --git a/doc/forum/index_attachments/comment_3_050e5847641a27e0c14232632f3e700a._comment b/doc/forum/index_attachments/comment_3_050e5847641a27e0c14232632f3e700a._comment
new file mode 100644 (file)
index 0000000..b589ae8
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawljSQThLsc4vHz0jw1aSR74Dj9K5J_NKqk"
+ nickname="Michal"
+ subject="comment 3"
+ date="2012-01-17T16:45:37Z"
+ content="""
+Maybe it could be sufficient to run a command similar to
+    omindex --db /path/to/.ikiwiki/xapian/default --url http://webserver/ikiwiki /path/to/public_html
diff --git a/doc/forum/index_attachments/comment_4._comment b/doc/forum/index_attachments/comment_4._comment
new file mode 100644 (file)
index 0000000..1a27262
--- /dev/null
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="jerojasro"
+ nickname="jerojasro"
+ subject="RE: comment 1"
+ date="2012-01-21T21:44:00"
+ content="""
+[[Michal]], that's not a bad idea IMO, but we would lose some [[searching
+keywords|ikiwiki/searching]] and would also index structural elements
+(navigation text, and so on)
index 6a25fd72399f75f2414c6d6f0ad969c4bf04809d..b9cc6b3d201ce0c29a8bde14c6ee7e3b1acc2360 100644 (file)
@@ -1,4 +1,4 @@
-I've updated [[Jason Blevin|users/jasonblevins]]'s pandoc plugin to permit tighter integration between Ikiwiki and [Pandoc](http://johnmacfarlane.net/pandoc/). Given the features Pandoc has added over the past 6-12 months, this makes for a very powerful combination, e.g. with code block syntax highlighting and lots of options for how to process and display inline TeX. See <https://github.com/profjim/pandoc-iki> for details.
+I've updated [[Jason Blevin|users/jasonblevins]]'s pandoc plugin to permit tighter integration between Ikiwiki and [Pandoc](http://johnmacfarlane.net/pandoc/). Given the features Pandoc has added over the past 6-12 months, this makes for a very powerful combination, e.g. with code block syntax highlighting and lots of options for how to process and display inline TeX. See <https://github.com/dubiousjim/pandoc-iki> for details.
 How do I get this added to the contrib section of the plugin list? --Profjim
diff --git a/doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn b/doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn
new file mode 100644 (file)
index 0000000..8293b09
--- /dev/null
@@ -0,0 +1,20 @@
+Just thought people might like to know I've added a couple more plugins to contrib.
+[[plugins/contrib/newpage]]: This plugin adds a new action to the "ACTIONS" section of a page; a button labelled "create" and an input field next to it.
+The common way of creating a new page is to edit a different page and add a link to the new page. However, there are some situations where that is a nuisance; for example, where pages are listed using a map directive. The newpage plugin enables one to simply type the name of the new page, click the "create" button, and one is then taken to the standard IkiWiki create-page form.
+[[plugins/contrib/jssearchfield]]: This plugin provides the [[plugins/contrib/ikiwiki/directive/jssearchfield]] directive.  This
+enables one to search the structured data ("field" values) of multiple pages.
+This uses Javascript for the searching, which means that the entire thing
+is self-contained and does not require a server or CGI access, unlike
+the default IkiWiki search. This means that it can be used in places such
+as ebook readers.  The disadvantage is that because Javascript runs
+in the browser, the searching is only as fast as the machine your browser
+is running on.
+Because this uses Javascript, the htmlscrubber must be turned off for any page where the directive is used.
+This plugin depends on the [[!iki plugins/contrib/field]] plugin.
diff --git a/doc/forum/w3mmode___91__Save_Page__93___results_in_403.mdwn b/doc/forum/w3mmode___91__Save_Page__93___results_in_403.mdwn
new file mode 100644 (file)
index 0000000..6c7a59b
--- /dev/null
@@ -0,0 +1,9 @@
+My setup matches w3mmode [[w3mmode/ikiwiki.setup]] exactly.  
+My doc/index.mdwn just has a line or two of plain text.  
+When I try to edit that page in w3m, it works fine until I push [Save Page].  
+Then I just get a page that only contains "403".
+ikiwiki version is 3.20110715ubuntu1.  
+w3m is 0.5.3.
+-- [[terry|tjgolubi]]
index eb3cc439b0dd803e29e852e111e042c27babe69d..2e58c699272c86deff159167f9d5a080767b3a47 100644 (file)
@@ -73,6 +73,7 @@ think about merging them. This is recommended. :-)
 * [[sajolida]] `http://un.poivron.org/~sajolida/ikiwiki.git/`
 * nezmer `git://gitorious.org/ikiwiki-nezmer/ikiwiki-nezmer.git`
 * [[yds]] `git://github.com/yds/ikiwiki.git`
+* [[pelle]] `git://github.com/hemmop/ikiwiki.git`
 ## branches
index 4331872686198113bec7b157003c4b8db1e55526..8b066c2f2a64fa4f7022f713b9035873a86bbbbd 100644 (file)
@@ -1,13 +1,22 @@
 The `graph` directive is supplied by the [[!iki plugins/graphviz desc=graphviz]] plugin.
-This directive allows embedding [graphviz](http://www.graphviz.org/) graphs in a
-page.  Example usage:
+This directive allows embedding [graphviz](http://www.graphviz.org/)
+graphs in a page.  Example usage:
        \[[!graph src="a -> b -> c; a -> c;"]]
-Note that graphs will only show up in previews if your browser has
-[[!wikipedia data: URI]] support, or if the same graph already exists on that
+Nodes on the graph can link to external urls using regular graphviz syntax,
+and a clickable imagemap will be created. As a special extension for
+ikiwiki, [[WikiLinks|ikiwiki/wikilink]] can also be used. For example:
+       \[[!graph src=""""
+       google [ href="http://google.com/" ]
+       sandbox [ href=\[[SandBox]] ]
+       help [ href=\[[ikiwiki/formatting]] ]
+       newpage [ href=\[[NewPage]] ]
+       google -> sandbox -> help -> newpage -> help -> google;
+       """"]]
 The `graph` directive supports the following parameters:
index 6b381f138b0fbbd666ea37b20e0dbe5860e7348a..72cfc6f569ee434f74e66f82d1759309786c28c6 100644 (file)
@@ -109,7 +109,7 @@ Supported fields:
        \[[!meta openid="http://joeyh.myopenid.com/"
-       xrds-location="http://www.myopenid.com/xrds?username=joeyh.myopenid.com""]]
+       xrds-location="http://www.myopenid.com/xrds?username=joeyh.myopenid.com"]]
 * link
@@ -162,14 +162,13 @@ Supported fields:
 * guid
-  Specifies a globally unique ID for a page. This guid should be a URI
-  (in particular, it can be `urn:uuid:` followed by a UUID, as per
-  [[!rfc 4122]]), and it will be used to identify the page's entry in RSS
+  Specifies a globally unique ID for a page. This guid should be a URI,
+  and it will be used to identify the page's entry in RSS
   and Atom feeds. If not given, the default is to use the page's URL as its
   This is mostly useful when a page has moved, to keep the guids for
-  pages unchanged and avoid_flooding_aggregators
+  pages unchanged and avoid flooding aggregators
   (see [[!iki tips/howto_avoid_flooding_aggregators]]).
 * updated
index e9853129c874e8ac77b38fb73f6a6873452fc9ed..96b94a16391d8c888ceb62a9211d8dfbfeb02ab0 100644 (file)
@@ -30,14 +30,11 @@ Projects & Organizations
 * [Debian Mentors wiki](http://jameswestby.net/mentors/)
 * [The BSD Associate Admin Book Project](http://bsdwiki.reedmedia.net/)
 * The [maildirman wiki](http://svcs.cs.pdx.edu/maildirman)
-* The [linuxbierwanderung wiki/homepage](http://www.linuxbierwanderung.org)
 * The [Relativistic Programming research wiki](http://wiki.cs.pdx.edu/rp).
 * [Debian-IN](http://debian-in.alioth.debian.org/)
 * [Braawi Ltd](http://braawi.com/) and the community site [Braawi.org](http://braawi.org/)
 * [Webconverger](http://webconverger.org/) (a Web only linux distribution) with a [blog](http://webconverger.org/blog/)
-* [debian-community.org](http://debian-community.org/)
 * [DebTorrent](http://debtorrent.alioth.debian.org)
-* The [netconf project](http://netconf.alioth.debian.org)
 * The [Debian Packaging Handbook project](http://packaging-handbook.alioth.debian.org/wiki/)
 * The [libkdtree project](http://libkdtree.alioth.debian.org)
 * The [pcc](http://pcc.ludd.ltu.se/) (Portable C Compiler) project.  (Simple rcs backend)
@@ -49,18 +46,14 @@ Projects & Organizations
   * [Børneuniversitetet](http://support.borneuni.dk/) ([source](http://source.borneuni.dk/))
 * [CampusGrün Hamburg](http://www.campusgruen.org/)
 * The [awesome window manager homepage](http://awesome.naquadah.org/)
-* [Enemies of Carlotta](http://www.e-o-c.org/)
 * [vcs-pkg](http://vcs-pkg.org)
 * [vcs-home](http://vcs-home.madduck.net)
-* [Query Object Framework](http://qof.alioth.debian.org/)
-* [Estron - Object Relational Mapping interpreter](http://estron.alioth.debian.org/)
 * [Public Domain collection of Debian related tips & tricks](http://dabase.com/tips/) - please add any tips too
 * [Finnish Debian community](http://debian.fi)
 * [INCL intranuclear cascade and ABLA evaporation/fission](http://www.cs.helsinki.fi/u/kaitanie/incl/)
 * [dist-bugs](http://dist-bugs.kitenet.net/)
 * [Chaos Computer Club Düsseldorf](https://www.chaosdorf.de)
 * [monkeysphere](http://web.monkeysphere.info/)
-* [The Walden Effect](http://www.waldeneffect.org/)
 * [St Hugh of Lincoln Catholic Primary School in Surrey](http://www.sthugh-of-lincoln.surrey.sch.uk/)
 * [Cosin Homepage](http://cosin.ch) uses an Ikiwiki with a subversion repository.
 * [Bosco Free Orienteering Software](http://bosco.durcheinandertal.ch)
@@ -76,7 +69,6 @@ Projects & Organizations
 * [Serialist](http://serialist.net/)'s static pages (documentation, blog).  We actually have ikiwiki generate its static content as HTML fragments using a modified page.tmpl template, and then the FastCGI powering our site grabs those fragments and embeds them in the standard dynamic site template.
 * [Apua IT](http://apua.se/)
 * [PDFpirate Community](http://community.pdfpirate.org/)
-* [Banu](https://banu.com/) uses Ikiwiki for its website, to convert static Markdown pages into PHP scripts which are served along with non-Ikiwiki PHP generated contents. The static contents benefit from use of Ikiwiki's plugins. Ikiwiki is purely used as a CMS and no wiki or web-based editing is allowed. Ikiwiki is run offline, and the resulting scripts are uploaded using rsync to the website.
 * [Software in the Public Interest](http://spi-inc.org/)
 * [NXT Improved Firmware](http://nxt-firmware.ni.fr.eu.org/)
 * [The FreedomBox Foundation](http://www.freedomboxfoundation.org/)
@@ -85,6 +77,8 @@ Projects & Organizations
 * [The Amnesic Incognito Live System](https://tails.boum.org/index.en.html)
 * [The Progress Linux OS wiki](http://wiki.progress-linux.org/)
 * [Oxford Computer Society](http://www.ox.compsoc.net/)
+* [Russian OpenBSD Community wiki](http://wiki.openbsd.ru/)
+* [Arcada Project](http://arcadaproject.org/)
 Personal sites and blogs
@@ -94,7 +88,6 @@ Personal sites and blogs
 * [Ulrik's personal web page](http://kaizer.se/wiki/)
 * [kite](http://kitenet.net)
 * [Paul Collins's as-yet purposeless wiki](http://wiki.ondioline.org/)
-* [Andre Luis Lopes's personal website](http://www.andrelop.org/). Brazilian Portuguese only
 * [Alessandro Dotti Contra's personal website](http://www.dotticontra.org/) and [weblog](http://www.dotticontra.org/blog)
 * [Kelly Clowers' personal website](http://www.clowersnet.net/)
 * [Anna's nature features](http://kitenet.net/~anna/nature-feature/)
@@ -105,8 +98,6 @@ Personal sites and blogs
 * [Adam  Shand's homepage](http://adam.shand.net/iki/)
 * [Hess family wiki](http://kitenet.net/~family/)
 * [Zack](http://upsilon.cc/~zack)'s homepage, including [his weblog](http://upsilon.cc/~zack/blog/)
-* [Taquiones: Victor Moral's personal website in Spanish](http://taquiones.net)
-    * [Venexma Europa, S.L.](http://www.venexma.net): It's a small company dedicated to the distribution of shoe accessories. We use ikiwiki for development of internal applications (some areas are password protected). In spanish, of course.
 * [betacantrips, the personal website of Ethan Glasser-Camp](http://www.betacantrips.com/)
 * [Keith Packard's homepage and blog](http://keithp.com/).
 * [Christian Mock's homepage](http://www.tahina.priv.at/).
@@ -114,19 +105,13 @@ Personal sites and blogs
 * [Tales from the Gryphon](http://www.golden-gryphon.com/blog/manoj/), Manoj Srivastava's free software blog.
 * [Proper Treatment 正當作法](http://conway.rutgers.edu/~ccshan/wiki/)
 * [lost scraps](http://web.mornfall.net), pages/blog of Petr Ročkai aka mornfall
-* [formorers blog and website](http://www.formorer.de/webwiki/)
-* [Mark Jaroski's blog](http://movemearound.org/)
 * [Schabis blaue Seite](http://schabi.de) - I abuse ikiwiki as blog/cms combo, and will migrate all existing content into ikiwiki eventually.
-* [Ben Coffey's blog and personal site](http://inelegant.org/).
 * [blog of LukClaes](http://zomers.be/~luk/blog/).
-* [Effective Programming](http://effectiveprogramming.com/)
 * [Embedded Moose](http://embeddedmoose.com), Andrew Greenberg's personal and consulting page.
-* [Chez Fred](http://fred.ccheznous.org)
 * [Cameron Dale](http://www.camrdale.org/)
 * [[KarlMW]]'s [homepage](http://mowson.org/karl/), generated with an ikiwiki 
   [asciidoc plugin](http://mowson.org/karl/colophon/).
 * [Carl Worth's Boring Web Pages](http://www.cworth.org)
-* I keep my personal and project notes in a private ikiwiki - it's the perfect tool for this task. - [h01ger](http://layer-acht.org/)
 * [[NicolasLimare]] ([nil](http://poivron.org/~nil/)+[lab](http://www.ann.jussieu.fr/~limare/)+[id](http://nicolas.limare.net/)+[french translation of the basewiki](http://poivron.org/~nil/ikiwiki-fr/))
 * Andrew Sackville-West has setup a [family wiki](http://wiki.swclan.homelinux.org)
 * [Simon Ward's site](http://bleah.co.uk/) and [blog](http://bleah.co.uk/blog/).
@@ -134,13 +119,10 @@ Personal sites and blogs
 * [Martin's PhD wiki](http://phd.martin-krafft.net/wiki)
 * [David Riebenbauer's page](http://liegesta.at/)
 * [Thomas Harning's 'eHarning' wiki](http://www.eharning.us/wiki/)
-* [David Bremner's blog](http://www.cs.unb.ca/~bremner/wiki/blog)
 * [madduck's (new) homepage](http://madduck.net)
 * [Olivier Berger's professional homepage](http://www-public.it-sudparis.eu/~berger_o/)
-* [Andrey Tarantsov's homepage](http://www.tarantsov.com/)
 * [Don Marti's blog](http://zgp.org/~dmarti/)
 * [[users/Jon]]'s [homepage](http://jmtd.net/)
-* [[xma]] is using ikiwiki (<http://maillard.mobi/~xma/>)
 * [[JanWalzer|jwalzer]]'s [homepage](http://wa.lzer.net/) -- Work in Progress
 * [[Adam_Trickett|ajt]]'s home intranet/sanbox system ([Internet site & blog](http://www.iredale.net/) -- not ikiwiki yet)
 * [[Simon_McVittie|smcv]]'s [website](http://www.pseudorandom.co.uk/) and
@@ -150,16 +132,13 @@ Personal sites and blogs
 * [Per Bothner's blog](http://per.bothner.com/blog/)
 * [Bernd Zeimetz (bzed)](http://bzed.de/)
 * [Gaudenz Steinlin](http://gaudenz.durcheinandertal.ch)
-* [Simon C.](http://simon.kisikew.org/) - several other sites, too.
 * [NeoCarz Wiki](http://www.neocarz.com/wiki/) Yes - its actually Ikiwiki behind that! I'm using Nginx and XSL to transform the ikiwiki renderings thanks to the valid XHTML output of ikiwiki. Great work Joey!!
 * [Natalian - Kai Hendry's personal blog](http://natalian.org/)
 * [Mick Pollard aka \_lunix_ - Personal sysadmin blog and wiki](http://www.lunix.com.au)
-* [tumashu's page](http://tumashu.github.com) This is my personal site in github  created with ikiwiki and only a page,you can get the [source](http://github.com/tumashu/tumashu/tree/master)  
 * [Skirv's Wiki](http://wiki.killfile.org) - formerly Skirv's Homepage
 * [Jimmy Tang - personal blog and wiki](http://www.sgenomics.org/~jtang)
 * [Nico Schottelius' homepage](http://www.nico.schottelius.org)
 * [Andreas Zwinkaus homepage](http://beza1e1.tuxen.de)
-* [Salient Dream](http://salient.dre.am)
 * [Walden Effect](http://waldeneffect.org)
 * [Avian Aqua Miser](http://www.avianaquamiser.com/)
 * [Cosmic Cookout](http://www.cosmiccookout.com/)
@@ -168,7 +147,6 @@ Personal sites and blogs
 * [Andreas's homepage](http://0x7.ch/) - Ikiwiki, Subversion and CSS template
 * [Chris Dombroski's boring bliki](https://www.icanttype.org/)
 * [Josh Triplett's homepage](http://joshtriplett.org/) - Git backend with the CGI disabled, to publish a static site with the convenience of ikiwiki.
-* [Ertug Karamatli](http://pages.karamatli.com)
 * [Jonatan Walck](http://jonatan.walck.i2p/) a weblog + wiki over [I2P](http://i2p2.de/). Also [mirrored](http://jonatan.walck.se/) to the Internet a few times per day.
 * [Daniel Wayne Armstrong](http://circuidipity.com/)
 * [Mukund](https://mukund.org/)
@@ -186,10 +164,11 @@ Personal sites and blogs
 * [Richard "RichiH" Hartmann](http://richardhartmann.de/blog) - I thought I had added myself a year ago. Oups :)
 * [Jonas Smedegaard](http://dr.jones.dk/) multilingual "classic" website w/ blog
 * [Siri Reiter](http://sirireiter.dk/) portfolio website with a blog (in danish)
-* [L'Altro Wiki](http://laltromondo.dynalias.net/~iki/) Tutorials, reviews, miscellaneus articles in English and Italian, from the IRC network syrolnet.org
-* [STUPiD](http://lhzhang.com/)
+* [L'Altro Wiki](http://laltromondo.dynalias.net/~iki/) Tutorials, reviews, miscellaneus articles in English and Italian.
 * gregoa's [p.r. - political rants](http://info.comodo.priv.at/pr/)
 * [Michael Hammer](http://www.michael-hammer.at/)
 * [Richardson Family Wiki](http://the4richardsons.com) A wiki, blog or some such nonsense for the family home page or something or other... I will eventually move the rest of my sites to ikiwiki. The source of the site is in git.
 * [The personal website of Andrew Back](http://carrierdetect.com)
 * [SolderPad Documentation](http://docs.solderpad.com)
+* various sub-domains at kisikew.org ([example](https://portal.kisikew.org/))
+* [Paul Elms](http://paul.elms.pro) Personal site and blog in russian.
index ddf1ecd84e7f6428ef61cb4a05c1be2ad6c4f05b..4c22ce0e0997977ebc168a0b3e8a2856e0d69ac8 100644 (file)
@@ -14,7 +14,7 @@ with ikiwiki, and some [[tips]].  Basic documentation for ikiwiki plugins
 and syntax is provided [[here|ikiwiki]]. The [[forum]] is open for
-All wikis are supposed to have a [[SandBox]], so this one does too.
+All wikis are supposed to have a [[sandbox]], so this one does too.
 This site generally runs the latest release of ikiwiki; currently, it runs
 ikiwiki [[!version ]].
index f38ae2aabacacc72cef9a2f93aac21c305cedade..9c5d5939b132ca07b46a97c1656d9e8ad69263d1 100644 (file)
@@ -11,7 +11,8 @@ Ikiwiki is a perl program, and needs a recent version of perl such as
 It's recommended you have a C compiler, as ikiwiki uses one to build
-Ikiwiki requires the [[!cpan Text::Markdown]], [[!cpan URI]],
+Ikiwiki requires the [[!cpan Text::Markdown::Discount]] (or 
+[[!cpan Text::Markdown]]), [[!cpan URI]],
 [[!cpan HTML::Parser]], [[!cpan HTML::Template]], and [[!cpan HTML::Scrubber]]
 perl modules be installed. It can also use a lot of other perl modules, if
 they are available.
index b4ec5ebf474a46335a89490b2b1e64a18e5de32c..b27cc4bacb13d011dc16aee6243265f0fe132fec 100644 (file)
@@ -349,3 +349,10 @@ I've attempted to mergeably patch these in my git, commit
+[[!template id=gitbranch branch=schmonz/portability author="[[schmonz]]"]]
+My git was in a screwy state so I started over. These changes are
+now on a branch. --[[schmonz]]
diff --git a/doc/news/version_3.20110711.mdwn b/doc/news/version_3.20110711.mdwn
deleted file mode 100644 (file)
index c4006cb..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-ikiwiki 3.20110711 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * Add build dep on python-support. Closes: #[633536](http://bugs.debian.org/633536)
-   * attachment: Bugfix to move upload attachments out of holding area
-     when saving.
-   * attachment: Bugfix for trying to attach files to a subpage of the index
-     page."""]]
\ No newline at end of file
diff --git a/doc/news/version_3.20110712.mdwn b/doc/news/version_3.20110712.mdwn
deleted file mode 100644 (file)
index 8744d68..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-ikiwiki 3.20110712 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * attachment: Bugfix to create directory when moving attachment out of
-     holding area.
-   * Display attachment manipulation links always, since attachments can be
-     uploaded via javascript."""]]
\ No newline at end of file
diff --git a/doc/news/version_3.20110715.mdwn b/doc/news/version_3.20110715.mdwn
deleted file mode 100644 (file)
index da291da..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-ikiwiki 3.20110715 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * rename: Fix logic error that broke renaming pages when the attachment
-     plugin was disabled.
-   * rename: Fix logic error that bypassed the usual pagespec checks."""]]
\ No newline at end of file
diff --git a/doc/news/version_3.20110905.mdwn b/doc/news/version_3.20110905.mdwn
deleted file mode 100644 (file)
index bff02c3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-ikiwiki 3.20110905 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * mercurial: Openid nicknames are now used when committing. (Daniel Andersson)
-   * mercurial: Implement rcs\_commit\_staged so comments, attachments, etc
-     can be used. (Daniel Andersson)
-   * mercurial: Implement rcs\_rename, rcs\_remove. (Daniel Andersson)
-   * mercurial: Fix viewing of a diff containing non-utf8 changes.
-     (Daniel Andersson)
-   * mercurial: Make both rcs\_getctime and rcs\_getmtime fast. (Daniel Andersson)
-   * mercurial: Implement rcs\_diff. (Daniel Andersson)
-   * po: Add `LANG\_CODE` and `LANG\_NAME` template variables. (intrigeri)
-   * Fix typo in Danish translation of shortcuts page that caused exponential
-     regexp blowup.
-   * Fix escaping of html entities in permalinks.
-   * Fix escaping of html entities in tag names.
-   * Avoid using named capture groups in heredoc code for oldperl compatibility.
-   * Put in a workaround for #622591, by ensuring Search::Xapian gets loaded
-     before Image::Magick.
-   * Add unminified jquery js and css files to source.
-   * Update to jquery 1.6.2, and jquery-ui 1.8.14.
-   * Use lockf rather than flock when taking the cgilock, for better
-     portability.
-   * search: Fix encoding bug in calculation of maximum term size.
-   * inline: When indexing internal pages for searching, use the url of
-     the inlining page.
-   * Fix comments testsuite to not rely on Date::Parse's ability to
-     parse the date Columbus discovered America. Closes: #[640350](http://bugs.debian.org/640350)
-   * Avoid warning message when generating setup file if highlight
-     is not installed. Closes: #[637606](http://bugs.debian.org/637606)
-   * Promote RPC::XML to a Recommends, since it's used by auto-blog.setup.
-     Closes: #[637603](http://bugs.debian.org/637603)
-   * Fix web revert of a file deletion."""]]
\ No newline at end of file
diff --git a/doc/news/version_3.20111107.mdwn b/doc/news/version_3.20111107.mdwn
new file mode 100644 (file)
index 0000000..5af8ae6
--- /dev/null
@@ -0,0 +1,12 @@
+ikiwiki 3.20111107 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * img: Bugfix to width/height tags for scaled down image when only
+     one dimension was provided. Thanks, Per Carlson.
+   * editpage: Fix FormattingHelp link on Discussion pages.
+   * The umask setting can now be set to private, group, or public,
+     avoiding the need to enter octal correctly which is particularly
+     difficult in yaml setup files. (smcv)
+   * graphviz: Support urls embedded in the graph, by having graphviz
+     generate an imagemap.
+   * graphviz: Support wikilinks embedded in the graph.
+     (Sponsored by The TOVA Company.)"""]]
\ No newline at end of file
diff --git a/doc/news/version_3.20111229.mdwn b/doc/news/version_3.20111229.mdwn
new file mode 100644 (file)
index 0000000..18c4f8d
--- /dev/null
@@ -0,0 +1,7 @@
+ikiwiki 3.20111229 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * Consume all stdin when rcs\_receive short-circuits,
+     to avoid git SIGPIPE race.
+   * Add path and path\_natural sort orders (smcv)
+   * Test coverage can be checked with `make coverage` (smcv)
+   * tag: encode categories using numeric values. (tango)"""]]
\ No newline at end of file
diff --git a/doc/news/version_3.20120109.mdwn b/doc/news/version_3.20120109.mdwn
new file mode 100644 (file)
index 0000000..de53c5d
--- /dev/null
@@ -0,0 +1,9 @@
+ikiwiki 3.20120109 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * mdwn: Can use the discount markdown library, via the
+     Text::Markdown::Discount perl module. This is preferred if available
+     since it's the fastest currently supported markdown library, speeding up
+     ikiwiki's markdown rendering by a factor of 40.
+     (However, when multimarkdown is enabled, Text::Markdown::Multimarkdown
+     is still used.)
+   * On Debian, depend on libtext-markdown-discount."""]]
\ No newline at end of file
diff --git a/doc/news/version_3.20120115.mdwn b/doc/news/version_3.20120115.mdwn
new file mode 100644 (file)
index 0000000..ba665c6
--- /dev/null
@@ -0,0 +1,5 @@
+ikiwiki 3.20120115 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * Make backlink(.) work. Thanks, Giuseppe Bilotta.
+   * mdwn: Workaround discount's eliding of &lt;style&gt; blocks.
+   * attachment: Fix utf-8 display bug."""]]
\ No newline at end of file
index 8dfbbf71692d44de30327ffff37dc9f2ba37e5e1..836a98f33b9d5225b810bd40360ed2ad392c819a 100644 (file)
 [[!template id=plugin name=album author="[[Simon_McVittie|smcv]]"]]
-[[!template id=gitbranch branch=smcv/album2 author="[[Simon_McVittie|smcv]]"]]
 [[!tag type/chrome]]
-Available from [[smcv]]'s git repository, in the `album2` branch.
-Older (pre-rebase) versions in `album`, `album-live` (the latter
-was used on an actual website and didn't explode too much).
+This plugin provides the [[ikiwiki/directive/album]] [[ikiwiki/directive]],
+which turns a page into a photo album or image gallery, containing all
+images attached to the album or its subpages. It also provides the
+[[ikiwiki/directive/albumsection]] and [[ikiwiki/directive/albumimage]]
-This plugin formats a collection of images into a photo album,
-in the same way as many websites: good examples include the
-PHP application [Gallery](http://gallery.menalto.com/), Flickr,
-and Facebook's Photos "application".
+This plugin automatically enables the [[filecheck]], [[img]], [[inline]],
+[[trail]] and [[transient]] plugins. The [[meta]] plugin is also
-I've called it `album` to distinguish it from
-[[contrib/gallery|plugins/contrib/gallery]], although `gallery` might well be
-a better name for this functionality.
-The web UI I'm trying to achieve consists of one
-[HTML page of thumbnails](http://ikialbum.hosted.pseudorandom.co.uk/album/)
-as an entry point to the album, where each thumbnail links to
-[a "viewer" HTML page](http://ikialbum.hosted.pseudorandom.co.uk/album/img_0120/)
-with a full size image, next/previous thumbnail links, and
-(The Summer of Code [[plugins/contrib/gallery]] plugin does the
-next/previous UI in Javascript using Lightbox, which means that
-individual photos can't be bookmarked in a meaningful way, and
-the best it can do as a fallback for non-Javascript browsers
-is to provide a direct link to the image.)
-<h2 id="album"><code>album</code> directive</h2>
+## Changing the templates
-Each page containing an `album` directive is treated as a photo album.
+When a viewer page is generated or inlined into an album, the template can
+contain these extra variables:
-Every image attached to an album or its subpages is considered to be part of
-the album. A "viewer" page, with the wiki's default page extension, will be
-generated in the [[transient underlay|todo/transient_pages]] to display the
-image, if there isn't already a page of the same name as the image: for
-instance, if `debconf` is an album and `debconf/tuesday/p100.jpg` exists,
-then `debconf/tuesday/p100.mdwn` might be created.
+* `<TMPL_VAR ALBUM>` - page name of the album
+* `<TMPL_VAR ALBUMURL>` - relative URL to the album
+* `<TMPL_VAR ALBUMTITLE>` - title of the album, usually taken from
+  a [[ikiwiki/directive/meta]] directive
+* `<TMPL_VAR CAPTION>` - caption for the image
+* `<TMPL_VAR THUMBNAIL>` - a small [[ikiwiki/directive/img]] for the image
+* `<TMPL_VAR IMAGEWIDTH>` - width of the full-size image in pixels
+* `<TMPL_VAR IMAGEHEIGHT>` - height of the full-size image in pixels
+* `<TMPL_VAR IMAGEFILESIZE>` - size of the image, e.g. `1.2 MiB`
+* `<TMPL_VAR IMAGEFORMAT>` - format of the image, typically `JPEG`
-There's currently a hard-coded list of extensions that are treated as images:
-`png`, `gif`, `jpg`, `jpeg` or `mov` files. More image and video types could
-be added in future. Videos aren't currently handled very well;
-ideally, something like totem-video-thumbnailer would be used.
+The template for the viewer page can also contain:
-The `album` directive also produces an [[ikiwiki/directive/inline]] which
-automatically includes all the viewers for this album, except those that
-will appear in an <a href="#albumsection">albumsection</a> (if every image
-is in a section, then the `album` directive won't have any visible effect).
+* `<TMPL_VAR IMG>` - a large [[ikiwiki/directive/img]] to display the image
+* `<TMPL_VAR PREV>` - a link to the previous viewer, typically with a
+  thumbnail
+* `<TMPL_VAR NEXT>` - a link to the next viewer, typically with a
+  thumbnail
-The `inline` is in `archive` and `quick` mode, but can include some
-extra information about the images, including file size and a thumbnail made
-using [[ikiwiki/directive/img]]). The default template is `albumitem.tmpl`,
-which takes advantage of these things.
+## Including album entries elsewhere
-<h2 id="albumsection"><code>albumsection</code> directive</h2>
+To display images from elsewhere in the wiki with the same appearance as
+an [[ikiwiki/directive/album]] or [[ikiwiki/directive/albumsection]],
+you can use an [[ikiwiki/directive/inline]] with the `albumitem`
-The `albumsection` directive is used to split an album into sections. It can
-only appear on a page that also has the <a href="#album">album</a> directive.
+       \[[!inline pages="..." sort="-age" template="albumitem"]]
-The `filter` parameter is a [[ikiwiki/PageSpec]] against which viewer pages
-are matched. The `albumsection` directive displays all the images that match
-the filter, and the `album` directive displays any leftover images, like
-    # Holiday photos
+[[!template id=gitbranch branch=smcv/album3 author="[[Simon_McVittie|smcv]]"]]
-    \[[!album]]
-    <!-- replaced with a list of any uncategorized photos, which might be
-         empty -->
-    ## People
-    \[[!albumsection filter="tagged(people)"]]
-    <!-- replaced with a list of photos tagged 'people', including
-         any that are also tagged 'landscapes' -->
+Available from [[smcv]]'s git repository, in the `album3` branch.
+I've called it `album` to distinguish it from
+[[contrib/gallery|plugins/contrib/gallery]], although `gallery` might well be
+a better name for this functionality.
-    ## Landscapes
+(The Summer of Code [[plugins/contrib/gallery]] plugin does the
+next/previous UI in Javascript using Lightbox, which means that
+individual photos can't be bookmarked in a meaningful way, and
+the best it can do as a fallback for non-Javascript browsers
+is to provide a direct link to the image.)
-    \[[!albumsection filter="tagged(landscapes)"]]
-    <!-- replaced with a list of photos tagged 'landscapes', including
-         any that are also tagged 'people' -->
+Updated, November 2011: rebased onto [[trail]] v3, CSS adjusted.
-<h2 id="albumimage"><code>albumimage</code> directive</h2>
+## Manual installation
-Each viewer page produced by the <a href="#album">album</a> directive
-contains an `albumimage` directive, which is replaced by an
-[[ikiwiki/directive/img]], wrapped in some formatting using a
-template (by default it's `albumviewer.tmpl`). That template can also include
-links to the next photo, the previous photo and the album it's in; the default
-template has all of these.
+If you don't want to use a branch of ikiwiki, manual installation requires
+these files (use the "raw" link in gitweb to download), in addition to the
+ones needed by [[trail]]:
-The next/previous links are themselves implemented by evaluating a template,
-either `albumnext.tmpl` or `albumprev.tmpl` by default.
+* [album.pm](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/album3:/IkiWiki/Plugin/album.pm)
+  in an `IkiWiki/Plugin` subdirectory of your configured `plugindir`
+* [albumviewer.tmpl](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/album3:/templates/albumviewer.tmpl),
+  [albumitem.tmpl](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/album3:/templates/albumitem.tmpl),
+  [albumnext.tmpl](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/album3:/templates/albumnext.tmpl) and
+  [albumprev.tmpl](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/album3:/templates/albumprev.tmpl),
+   in your configured `templatedir`, or a `templates` subdirectory of your wiki repository
+* the album-related bits from the end of the
+  [stylesheet](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/album3:/doc/style.css)
+  (put them in your local.css)
-The directive can also have parameters:
+## Demo
-* `title`, `copyright` and `date` are short-cuts for the corresponding
-  [[ikiwiki/directive/meta]] directives
+* [HTML page of thumbnails](http://ikialbum.hosted.pseudorandom.co.uk/album/)
+  as an entry point to the album
+* Each thumbnail links to
+  [a "viewer" HTML page](http://ikialbum.hosted.pseudorandom.co.uk/album/img_0120/)
+  with a full size image, optional next/previous thumbnail links, and
+  optional [[plugins/comments]]
-* `caption` sets a caption which is displayed in the album and viewer
-  pages
+## Bugs
-The viewer page can also have other contents before or after the actual
-image viewer.
+* There's currently a hard-coded list of extensions that are treated as
+  images: `png`, `gif`, `jpg`, `jpeg` or `mov` files. More image and video
+  types could be added in future.
-## Bugs
+* Videos aren't currently handled very well; ideally, something like
+  totem-video-thumbnailer would be used.
 * The plugin doesn't do anything special to handle albums that are subpages
   of each other. If, say, `debconf` and `debconf/monday` are both albums,
   then `debconf/monday/p100.jpg` will currently be assigned to one or the
   other, arbitrarily. It should probably pick the closest (longest) album name.
+  (I'm not sure that it can do this reliably, though, since the scan stage
+  runs in an undefined order.)
 * The plugin doesn't do anything special to handle photos with similar names.
   If you have `p100.jpg` and `p100.png`, one will get a viewer page called
-  `p100` and the other will be ignored.
+  `p100` and the other will be ignored. (I'm not sure what we could do better,
+  though.)
 * If there's no `albumimage` in a viewer page, one should probably be appended
-* When editing a viewer page, rebuilding it seems to fail at the moment.
-  Probably related to:
-* Integration with [[plugins/contrib/trail]] is new, untested and not
-  very well implemented. In particular, the prev/up/next links are
-  redundant with the ones from `trail`.
 ## TODO
-* The documentation should mention how to replicate the appearance of
-  `album` and `albumsection` using an `inline` of viewer pages,
-  elsewhere on the site.
-* The documentation should mention all the template variables and
-  all the parameters.
-* The generated viewer page should include most or all of the possible
-  parameters to the `albumimage` directive, with empty values, as a
-  template for editing.
 * The generated viewer page should extract as much metadata as possible from
   the photo's EXIF tags (creation/modification dates, author, title, caption,
   copyright). [[smcv]] has a half-written implementation which runs
diff --git a/doc/plugins/contrib/ikiwiki/directive/album.mdwn b/doc/plugins/contrib/ikiwiki/directive/album.mdwn
new file mode 100644 (file)
index 0000000..433eec8
--- /dev/null
@@ -0,0 +1,56 @@
+The `album` directive is supplied by the [[!iki plugins/contrib/album desc=album]] plugin.
+Each page containing an `album` directive is treated as a photo album
+or image gallery. Example usage is as simple as:
+    \[[!album]]
+Every image attached to an album or its [[subpages|ikiwiki/subpage]] is
+considered to be part of the album. A "viewer" page, with the wiki's default
+page extension, will be generated in the
+[[transient underlay|plugins/transient]] to display the
+image, if there isn't already a page of the same name as the image: for
+instance, if `debconf` is an album and `debconf/tuesday/p100.jpg` exists,
+then `debconf/tuesday/p100.mdwn` might be created.
+The album is treated as a [[!iki plugins/contrib/trail desc=trail]], which
+gives each viewer page a link back to the album, and a link to the previous
+and next viewer in the album.
+The `album` directive also produces an [[ikiwiki/directive/inline]] which
+automatically includes all the viewers for this album, except those that
+will appear in an [[albumsection]]. If every image in the album is in a
+section, then the `album` directive is still required, but won't produce
+any output in the page.
+The `inline` can include some extra information about the images, including
+file size and a thumbnail made using [[ikiwiki/directive/img]]). The
+default template is `albumitem.tmpl`, which takes advantage of these things.
+## Options
+The directive can have some options for the entire album. The defaults are:
+    \[[!album
+      sort="-age"
+      size="full"
+      thumbnailsize="96x96"
+      viewertemplate="albumviewer"
+      prevtemplate="albumprev"
+      nexttemplate="albumnext"
+* `sort` - sets the order in which images appear, defaulting to earliest
+  creation date first
+* `size` - if not `full`, the [[ikiwiki/directive/img]] in the viewer page
+  will be resized to be no larger than this
+* `thumbnailsize` - the [[ikiwiki/directive/img]] in the album page,
+  which can also be used in the previous/next links, will be no larger than
+  this
+* `viewertemplate` - the template used for the [[albumimage]] in each
+  viewer page
+* `prevtemplate` - the template used to replace `<TMPL_VAR PREV>` if used in
+  the viewer page
+* `nexttemplate` - the template used to replace `<TMPL_VAR NEXT>` if used in
+  the viewer page
+[[!meta robots="noindex, follow"]]
diff --git a/doc/plugins/contrib/ikiwiki/directive/albumimage.mdwn b/doc/plugins/contrib/ikiwiki/directive/albumimage.mdwn
new file mode 100644 (file)
index 0000000..2385bb5
--- /dev/null
@@ -0,0 +1,26 @@
+The `albumimage` directive is supplied by the [[!iki plugins/contrib/album desc=album]] plugin.
+Each viewer page produced by the [[album]] directive
+contains an `albumimage` directive, which is replaced by an
+[[ikiwiki/directive/img]], wrapped in some formatting using a
+template (by default it's `albumviewer.tmpl`). That template can also include
+links to the next and previous photos, in addition to those provided by the
+[[!iki plugins/contrib/trail desc=trail]] plugin.
+The next/previous links are themselves implemented by evaluating a template,
+either `albumnext.tmpl` or `albumprev.tmpl` by default.
+The directive can also have parameters:
+* `title`, `date`, `updated`, `author`, `authorurl`, `copyright`, `license`
+  and `description` are short-cuts for the corresponding
+  [[ikiwiki/directive/meta]] directives
+* `caption` sets a caption which is displayed near this image in the album
+  and viewer pages
+The viewer page can also contain any text and markup before or after the
+`albumimage` directive, which will appear before or after the image in the
+viewer page.
+[[!meta robots="noindex, follow"]]
diff --git a/doc/plugins/contrib/ikiwiki/directive/albumsection.mdwn b/doc/plugins/contrib/ikiwiki/directive/albumsection.mdwn
new file mode 100644 (file)
index 0000000..7e5749e
--- /dev/null
@@ -0,0 +1,29 @@
+The `albumsection` directive is supplied by the [[!iki plugins/contrib/album desc=album]] plugin.
+The `albumsection` directive is used to split an album into sections. It can
+only appear on a page that also has the [[album]] directive.
+The `filter` parameter is a [[ikiwiki/PageSpec]] against which viewer pages
+are matched. The `albumsection` directive displays all the images that match
+the filter, and the `album` directive displays any leftover images, like
+    # Holiday photos
+    \[[!album]]
+    <!-- replaced with a list of any uncategorized photos; it will be
+         empty if they're all tagged as 'people' and/or 'landscapes' -->
+    ## People
+    \[[!albumsection filter="tagged(people)"]]
+    <!-- replaced with a list of photos tagged 'people', including
+         any that are also tagged 'landscapes' -->
+    ## Landscapes
+    \[[!albumsection filter="tagged(landscapes)"]]
+    <!-- replaced with a list of photos tagged 'landscapes', including
+         any that are also tagged 'people' -->
+[[!meta robots="noindex, follow"]]
diff --git a/doc/plugins/contrib/ikiwiki/directive/jssearchfield.mdwn b/doc/plugins/contrib/ikiwiki/directive/jssearchfield.mdwn
new file mode 100644 (file)
index 0000000..5d33890
--- /dev/null
@@ -0,0 +1,42 @@
+The `jssearchfield` directive is supplied by the [[!iki plugins/contrib/jssearchfield desc=jssearchfield]] plugin.
+This enables one to search the structured data ("field" values) of
+multiple pages.  A search form is constructed, and the searching is
+done with Javascript, which means that the entire thing is self-contained.
+This depends on the [[!iki plugins/contrib/field]] plugin.
+The pages to search are selected by a PageSpec given by the "pages"
+The fields to search are given by the "fields" parameter.  By default,
+the field name is given, and the user can type the search parameter for
+that field into a text input field.
+**pages**: A PageSpec to determine the pages to search through.
+**fields**: The fields to put into the search form, and to display
+in the results.
+**tagfields**: Display the given fields as a list of tags that can
+be selected from, rather than having a text input field.  Every distinct
+value of that field will be listed, so it is best used for things with
+short values, like "Author" rather than long ones like "Description".
+Note that "tagfields" must be a subset of "fields".
+**sort**: A SortSpec to determine how the matching pages should be sorted; this is the "default" sort order that the results will be displayed in.
+The search form also gives the option of "random" sort, which will
+display the search results in random order.
+The search form that is created by this directive contains the following:
+* for each search field, a label, plus either a text input field, or a list of checkboxes with values next to them if the field is also a tagfield.  Note that the lists of checkboxes are initially hidden; one must click on the triangle next to the label to display them.
+* a "sort" toggle. One can select either "default" or "random".
+* A "Search!" button, to trigger the search if needed (see below)
+* A "Reset" button, which will clear all the values.
+The searching is dynamic.  As soon as a value is changed, either by tabbing out of the text field, or by selecting or de-selecting a checkbox, the search
+results are updated.  Furthermore, for tagfields, the tagfield lists
+themselves are updated to reflect the current search results.
diff --git a/doc/plugins/contrib/ikiwiki/directive/trailinline.mdwn b/doc/plugins/contrib/ikiwiki/directive/trailinline.mdwn
new file mode 100644 (file)
index 0000000..91d8a4e
--- /dev/null
@@ -0,0 +1,11 @@
+The `trailinline` directive is provided by the
+[[!iki plugins/contrib/trail desc=trail]]
+plugin. It is equivalent to combining [[ikiwiki/directive/trailitems]] and
+[[ikiwiki/directive/inline]] directives with the same options.
+A typical use is to navigate through all posts in a blog:
+      \[[!trailinline pages="page(./posts/*) and !*/Discussion" archive=yes
+        feedshow=10 quick=yes]]
+[[!meta robots="noindex, follow"]]
diff --git a/doc/plugins/contrib/ikiwiki/directive/trailitem.mdwn b/doc/plugins/contrib/ikiwiki/directive/trailitem.mdwn
new file mode 100644 (file)
index 0000000..73b1985
--- /dev/null
@@ -0,0 +1,9 @@
+The `trailitem` directive is supplied by the
+[[!iki plugins/contrib/trail desc=trail]] plugin. It is used like this:
+    \[[!trailitem some_other_page]]
+to add `some_other_page` to the trail represented by this page, without
+generating a visible hyperlink.
+[[!meta robots="noindex, follow"]]
diff --git a/doc/plugins/contrib/ikiwiki/directive/trailitems.mdwn b/doc/plugins/contrib/ikiwiki/directive/trailitems.mdwn
new file mode 100644 (file)
index 0000000..4106ed3
--- /dev/null
@@ -0,0 +1,24 @@
+The `trailitems` directive is supplied by the
+[[!iki plugins/contrib/trail desc=trail]] plugin. It adds pages
+to the trail represented by the current page, without producing any output
+on that page.
+    \[[!trailitems pages="posts/*" sort="age"]]
+    \[[!trailitems pagenames="a b c"]]
+Options are similar to [[!iki ikiwiki/directive/inline desc=inline]]:
+* `pages`: adds pages that match a [[ikiwiki/PageSpec]] to the trail
+  (cannot be used with `pagenames`)
+* `pagenames`: adds a space-separated list of pages to the trail,
+  with the same [[ikiwiki/SubPage/LinkingRules]] as for a [[ikiwiki/WikiLink]]
+  (cannot be used with `pages`)
+* `sort`: add the pages matched by `pages` to the trail in this
+  [[ikiwiki/pagespec/sorting]] order (cannot be used with `pagenames`)
+* `reverse`: reverse the order of `sort` (cannot be used with `pagenames`)
+[[!meta robots="noindex, follow"]]
diff --git a/doc/plugins/contrib/ikiwiki/directive/traillink.mdwn b/doc/plugins/contrib/ikiwiki/directive/traillink.mdwn
new file mode 100644 (file)
index 0000000..0e40e24
--- /dev/null
@@ -0,0 +1,16 @@
+The `traillink` directive is supplied by the
+[[!iki plugins/contrib/trail desc=trail]]
+plugin. It generates a visible [[ikiwiki/WikiLink]], and also adds the
+linked page to the trail represented by the page containing the directive.
+In its simplest form, the first parameter is like the content of a WikiLink:
+    \[[!traillink some_other_page]]
+The displayed text can also be overridden, either with a `|` symbol or with
+a `text` parameter:
+    \[[!traillink Click_here_to_start_the_trail|some_other_page]]
+    \[[!traillink some_other_page text="Click here to start the trail"]]
+[[!meta robots="noindex, follow"]]
diff --git a/doc/plugins/contrib/ikiwiki/directive/trailoptions.mdwn b/doc/plugins/contrib/ikiwiki/directive/trailoptions.mdwn
new file mode 100644 (file)
index 0000000..e1603f1
--- /dev/null
@@ -0,0 +1,18 @@
+The `trailoptions` directive is supplied by the
+[[!iki plugins/contrib/trail desc=trail]] plugin. It sets options for the
+trail represented by this page.
+    \[[!trailoptions sort="meta(title)" circular="no"]]
+Options available:
+* `sort`: sets a [[ikiwiki/pagespec/sorting]] order for the entire trail,
+  overriding the order in which they were added
+* `reverse`: reverses the order of the trail
+* `circular`: if set to `yes` or `1`, the trail is made into a loop by
+  making the last page's "next" link point to the first page, and the first
+  page's "previous" link point to the last page
+[[!meta robots="noindex, follow"]]
diff --git a/doc/plugins/contrib/jssearchfield.mdwn b/doc/plugins/contrib/jssearchfield.mdwn
new file mode 100644 (file)
index 0000000..2d41ee2
--- /dev/null
@@ -0,0 +1,35 @@
+[[!template id=plugin name=jssearchfield author="[[rubykat]]"]]
+[[!tag type/search]]
+IkiWiki::Plugin::jssearchfield - Create a search form to search page field data.
+This plugin provides the [[ikiwiki/directive/jssearchfield]] directive.  This
+enables one to search the structured data ("field" values) of multiple pages.
+This uses Javascript for the searching, which means that the entire thing
+is self-contained and does not require a server or CGI access, unlike
+the default IkiWiki search. This means that it can be used in places such
+as ebook readers.  The disadvantage is that because Javascript runs
+in the browser, the searching is only as fast as the machine your browser
+is running on.
+Because this uses Javascript, the htmlscrubber must be turned off for any page where the directive is used.
+This plugin depends on the [[!iki plugins/contrib/field]] plugin.
+## Activate the plugin
+    # activate the plugin
+    add_plugins => [qw{goodstuff field jssearchfield ....}],
+    # disable scrubbing for search page
+    htmlscrubber_skip => 'mysearchpage',
+    IkiWiki
+    IkiWiki::Plugin::field
+    HTML::Template
+* browse at GitHub: <http://github.com/rubykat/ikiplugins/blob/master/IkiWiki/Plugin/jssearchfield.pm>
+* git repo at git://github.com/rubykat/ikiplugins.git
index 15d2826edf3f898361b68ef6f56623ae199248b5..672a268ccda9b216de6da8c876a0fc488f63f07b 100644 (file)
@@ -1,5 +1,5 @@
 [[!template id=plugin name=mandoc author="[[schmonz]]"]]
-[[!template id=gitbranch branch=schmonz/master author="[[schmonz]]"]]
+[[!template id=gitbranch branch=schmonz/mandoc author="[[schmonz]]"]]
 [[!tag type/format]]
 This plugin lets ikiwiki convert Unix man pages to HTML. It uses
index 63d6512c30e2664b2f342c61cf282ede4dad99e6..792aaa4e3fa20003e3261260fda40189db87c12f 100644 (file)
@@ -1,4 +1,4 @@
-[[!template id=plugin name=mscgen author="[[users/Terry_Golubiewski]]"]]
+[[!template id=plugin name=mscgen author="[[users/Tjgolubi]]"]]
 [[!tag type/widget]]
 ## NAME
diff --git a/doc/plugins/contrib/newpage.mdwn b/doc/plugins/contrib/newpage.mdwn
new file mode 100644 (file)
index 0000000..54c2f53
--- /dev/null
@@ -0,0 +1,29 @@
+[[!template id=plugin name=newpage author="[[rubykat]]"]]
+[[!tag type/web]]
+## NAME
+IkiWiki::Plugin::newpage - add a "create new page" form to actions
+    # activate the plugin
+    add_plugins => [qw{goodstuff newpage ....}],
+This plugin adds a new action to the "ACTIONS" section of a page;
+a button labelled "create" and an input field next to it.
+The common way of creating a new page is to edit a different page
+and add a link to the new page.  However, there are some situations
+where that is a nuisance; for example, where pages are listed using
+a [[plugins/map]] directive.  The newpage plugin enables
+one to simply type the name of the new page, click the "create" button,
+and one is then taken to the standard IkiWiki create-page form.
+* browse at GitHub: <http://github.com/rubykat/ikiplugins/blob/master/IkiWiki/Plugin/newpage.pm>
+* git repo at git://github.com/rubykat/ikiplugins.git
diff --git a/doc/plugins/contrib/newpage/discussion.mdwn b/doc/plugins/contrib/newpage/discussion.mdwn
new file mode 100644 (file)
index 0000000..fb18646
--- /dev/null
@@ -0,0 +1,10 @@
+How is this better than creating an inline with `rootpage` set, 
+which creates a similar new page form? I sometimes make the inline match
+nothing, while still creating pages, in the odd cases where I have a map 
+or such displaying the pages. --[[Joey]]
+> I wanted something that would automatically be available on every page, but only when editing was enabled.
+> One of the sites I maintain as webmaster (<http://www.constrainttec.com/>) has a two-stage publication process.  The "working" site is on an internal server, where it is set up as a wiki that authorized users in the company can edit.  When they're satisfied with the changes they've made, the "working" site gets pushed (with git) to the "production" site, which is on a different server.  The ikiwiki setup for the production site has editing completely disabled, because it is the site which is exposed to the outside world.
+> For that site, I want all sign that it's a wiki to be hidden.  Therefore using an inline directive would be unsuitable.
+> --[[KathrynAndersen]]
diff --git a/doc/plugins/contrib/pagespec_alias.mdwn b/doc/plugins/contrib/pagespec_alias.mdwn
new file mode 100644 (file)
index 0000000..cb642ad
--- /dev/null
@@ -0,0 +1,28 @@
+[[!template id=plugin name=pagespec_alias author="[[Jon]]"]]
+[[!tag type/meta]]
+The pagespec_alias plugin allows the administrator(s) of a wiki to define
+[[PageSpec]] aliases: short names for PageSpecs to ease re-use.
+Within the setup file, the `pagespec_aliases` value is treated as a list
+of key/value pairs.  The keys define alias names, the values the pagespecs
+to which they refer.
+For example:
+    pagespec_aliases:
+       image: "*.png or *.jpg or *.jpeg or *.gif or *.ico"
+       helper: "*.css or *.js"
+       boring: "image() or helper() or internal(*)"
+With the above, you could use the pagespec aliases such as 
+    \[[!map pages="!boring()"]]
+To define a site map which excluded various page names which might be
+uninteresting to include in a site map.
+## Download
+ * <https://github.com/jmtd/ikiwiki/blob/pagespec-alias/IkiWiki/Plugin/pagespec_alias.pm>
index c8e2e9a946a08b84a0439567ca8e95e8fba3c55c..264aafd953fa34c3c8e67ebc62f636980c779933 100644 (file)
@@ -2,5 +2,5 @@
 This plugin enables Markdown processing using [Pandoc](http://johnmacfarlane.net/pandoc/). You can configure it for Pandoc to take over processing of all .mkdn files, or only files with a different extension. Given the features Pandoc has added over the past 6-12 months, this makes for a very powerful combination, e.g. with code block syntax highlighting and lots of options for how to process and display inline TeX.
-This is an expanded and updated version of [[Jason Blevin|users/jasonblevins]]'s pandoc plugin. Get it and see further details at <https://github.com/profjim/pandoc-iki>.
+This is an expanded and updated version of [[Jason Blevin|users/jasonblevins]]'s pandoc plugin. Get it and see further details at <https://github.com/dubiousjim/pandoc-iki>.
index def91d85ac738f5f937dc2de87638e31ccbfe803..bfd4d3d0b79df7b60e316c67ce66f9e8ecf4aa64 100644 (file)
-[[!tag type/chrome patch]]
-[[!template id=gitbranch branch=smcv/trail author="[[smcv]]"]]
+[[!tag patch]]
+[[!template id=gitbranch branch=smcv/trail3 author="[[smcv]]"]]
-Available from [[smcv]]'s git repository, in the `trail` branch. This
-plugin aims to solve [[todo/wikitrails]] in a simpler way.
+Available from [[smcv]]'s git repository, in the `trail3` branch. This
+plugin aims to solve [[todo/wikitrails]] in a simpler way; it can also be
+used for [[navigation through blog posts|todo/Pagination_next_prev_links]].
-Updated, June 2011:
+If you don't want to use a branch of ikiwiki, manual installation requires
+these files (use the "raw" link in gitweb to download):
-* removed `inline` integration for now
+* [trail.pm](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/IkiWiki/Plugin/trail.pm)
+  in an `IkiWiki/Plugin` subdirectory of your configured `plugindir`
+* [page.tmpl](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/templates/page.tmpl)
+  and
+  [trails.tmpl](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/templates/trails.tmpl)
+  in your configured `templatedir`, or a `templates` subdirectory of your wiki repository
+* the trail-related bits from the end of the
+  [stylesheet](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/doc/style.css)
+  (put them in your local.css)
+* the trail-related bits at the end of the
+  [actiontabs](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/themes/actiontabs/style.css)
+  or [blueview/goldtype](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/themes/blueview/style.css)
+  stylesheets, if you use one of those themes (again, put them in your local.css)
-* added `<link>` tags
+The branch also includes [[todo/test_coverage]] machinery.
-* switched from a custom data structure to using typed links
+* [in use on entries in my blog](http://smcv.pseudorandom.co.uk/)
+* [a demo trail based on links](http://demo.hosted.pseudorandom.co.uk/trail/)
+* [a demo hybrid trail/inline](http://demo.hosted.pseudorandom.co.uk/trail2/)
-[[!template id=plugin name=trail author="[[Simon_McVittie|smcv]]"]]
+The page `e` is in both demo trails, to demonstrate how a page in more than
+one trail looks.
-It's sometimes useful to have "trails" of pages in a wiki, as a guided
-tour, sequence of chapters etc. In this plugin, a trail is represented
-by a page, and the pages in the trail are indicated by specially marked
-links within that page.
+The `smcv/trail2` branch is an older version of `trail3` which used typed links
+as its data structure, resulting in timing-related limitations (it couldn't
+select pages for the trail by using pagespecs, because pagespecs can't be
+evaluated correctly until the scan stage has finished).
-If using the default `page.tmpl`, each page automatically displays the
-trails that it's a member of (if any), with links to the trail and to
-the next and previous members. HTML `<link>` tags with the `prev`,
-`next` and `up` relations are also generated.
+Updated, November 2011:
-The `traillink` [[ikiwiki/directive]] is used to record which pages
-are in a trail, and simultaneously link to them. Alternatively, the
-[[ikiwiki/directive/trailitem]] directive can be used to make an
-invisible `traillink`.
+* reinstated `inline` integration ([[report]] integration would probably be
+  pretty easy too, if this gets merged)
+* switched from typed links back to a custom data structure to avoid
+  chicken/egg problems with ordering
+* create typed links too, as a side-effect, but not when using an inline
+* regression test with nearly full coverage
+* CSS for the default anti-theme and all built-in themes (it looks nicest
+  in the default anti-theme and in actiontabs - the demo uses actiontabs)
-## Directives
+Known bugs:
-(These will go to the appropriate pages in [[ikiwiki/directive]] if this
-plugin is included in ikiwiki.)
+* the blueview and goldtype CSS nearly work, but the alignment is a bit off
-### trailitem
-The `trailitem` directive is supplied by the [[!iki plugins/contrib/trail desc=trail]]
-plugin. It is used like this:
+[[!template id=plugin name=trail author="[[Simon_McVittie|smcv]]"]]
+[[!tag type/chrome]]
-    \[[!trailitem some_other_page]]
+This plugin provides the [[ikiwiki/directive/trailoptions]],
+[[ikiwiki/directive/traillink]], [[ikiwiki/directive/trailitem]],
+and [[ikiwiki/directive/trailinline]] [[directives|ikiwiki/directive]].
-to add `some_other_page` to the trail represented by this page, without
-generating a visible hyperlink.
+It's sometimes useful to have "trails" of pages in a wiki where each
+page links to the next and/or previous page. For instance, you could use
+this for a guided tour, sequence of chapters, or sequence of blog posts.
-### traillink
+In this plugin, a trail is represented by a page, and the pages in the
+trail are indicated by specially marked links within that page, or by
+including groups of pages with a [[ikiwiki/directive]].
-The `traillink` directive is supplied by the [[!iki plugins/contrib/trail desc=trail]]
-plugin. It generates a visible [[ikiwiki/WikiLink]], and also adds the linked page to
-the trail represented by the page containing the directive.
+If using the default `page.tmpl`, each page automatically displays the
+trails that it's a member of (if any), with links to the trail and to
+the next and previous members. HTML `<link>` tags with the `prev`,
+`next` and `up` relations are also generated.
-In its simplest form, the first parameter is like the content of a WikiLink:
+The [[ikiwiki/directive/trailoptions]] directive sets options for the
+entire trail.
-    \[[!traillink some_other_page]]
+Pages can be included in a trail in various ways:
-The displayed text can also be overridden, either with a `|` symbol or with
-a `text` parameter:
+* The [[ikiwiki/directive/trailinline]] directive sets up an [[inline]],
+  and at the same time adds the matching pages (from `pages` or `pagenames`)
+  to the trail. One use is to navigate through all posts in a blog:
-    \[[!traillink Click_here_to_start_the_trail|some_other_page]]
-    \[[!traillink some_other_page text="Click here to start the trail"]]
+        \[[!trailinline pages="page(./posts/*) and !*/Discussion" archive=yes
+          feedshow=10 quick=yes]]
-### trailoptions
+  This directive only works if the [[!iki plugins/inline desc=inline]]
+  plugin is also enabled.
-The `trailoptions` directive is supplied by the [[!iki plugins/contrib/trail desc=trail]]
-plugin. It sets options for the trail represented by this page. Example usage:
+* The [[ikiwiki/directive/trailitems]] directive has optional `pages` and
+  `pagenames` options which behave the same as in [[inline]], but don't
+  produce any output in the page, so you can have trails that don't list
+  all their pages.
-    \[[!trailoptions sort="meta(title)" circular="no"]]
+* The [[ikiwiki/directive/traillink]] directive makes a visible link
+  and also adds the linked page to the trail. This will typically be
+  used in a bullet list, but could also be in paragraph text:
-The available options are:
+        * [[!traillink Introduction]]
+        * [[!traillink "Chapter 1"]]
+        * [[!traillink Chapter_2]]
+        * [[!traillink Appendix_A]]
-* `sort`: sets a [[ikiwiki/pagespec/sorting]] order; if not specified, the
-  items of the trail are ordered according to the first link to each item
-  found on the trail page
+  or
-* `circular`: if set to `yes` or `1`, the trail is made into a loop by
-  making the last page's "next" link point to the first page, and the first
-  page's "previous" link point to the last page
+        To use this software you must \[[!traillink install]] it,
+        \[[!traillink configuration text="configure it"]],
+        and finally \[[!traillink running|run_it]].
+  This also counts as a [[ikiwiki/WikiLink]] for things like the `link()`
+  [[ikiwiki/PageSpec]] item.
-## Future directions
+* The [[ikiwiki/directive/trailitem]] directive adds a page to the trail
+  like `traillink`, but produces an invisible link, rather like `\[[!tag]]`:
-The current version of this plugin doesn't implement inline-based or
-otherwise [[ikiwiki/PageSpec]]-based trails. This is difficult because
-there's a circular dependency:
+        To use this software you must \[[!traillink install]] it,
+        \[[!trailitem installing_from_packages]]
+        \[[!trailitem installing_from_source]]
+        \[[!traillink configuration text="configure it"]],
+        and finally \[[!traillink running|run_it]].
+        \[[!trailitem troubleshooting]]
-* adding typed links should happen *before* scanning has finished, to
-  guarantee that they're available before the first page is rendered
+  Like `\[[!tag]]`, this still counts as a [[ikiwiki/WikiLink]] even though
+  there's no visible link.
-* evaluating pagespecs should only happen *after* scanning has finished,
-  to guarantee that everything you might want to base a pagespec on
-  (`meta`, etc.) has been gathered by scanning
+You can mix several of these directives in one page. The resulting
+trail will contain all of the pages matched by any of the directives,
+in the same order that the directives appear (unless you use the `sort` or
+`reverse` options on `\[[!trailoptions]]`).
index 98933d99e6626e816c46effd71df23599cda2168..08c81212bdf19fdf6acc0c4756d6becddcaee036 100644 (file)
@@ -10,9 +10,9 @@ Parser, documented at
 Notably it strips `style` and `link` tags, and the `style` attribute.
-All attributes that can be used to specify an url are checked to make sure
-that the url is in a known, safe scheme, and to block embedded javascript
-in such urls.
+Any attributes that could be used to specify a URL are checked to ensure
+that they are known, safe schemes.  It will also block embedded javascript
+in such URLs.
 It uses the [[!cpan HTML::Scrubber]] perl module to perform its html
 sanitisation, and this perl module also deals with various entity encoding
index ce1b6097aea5e2a8c70c4d7264a87faa2af30e99..8a7308305b611677ef482b332d8742cdf9a3fcb1 100644 (file)
@@ -8,9 +8,12 @@ This is the standard markup language used by ikiwiki, although some others
 are also available in other plugins.
 There are several implementations of markdown support that can be used by
-this plugin. The [original version of
-markdown](http://daringfireball.net/projects/markdown/) can be used, or the
-[[!cpan Text::Markdown]] perl module.
+this plugin. In order of preference:
+* [Discount](http://www.pell.portland.or.us/~orc/Code/discount/),
+  via the [[!cpan Text::Markdown::Discount]] perl module.
+* The [[!cpan Text::Markdown]] perl module.
+* The [original version of markdown](http://daringfireball.net/projects/markdown/).
 [[!cpan Text::MultiMarkdown]] can be used in order to use tables, footnotes,
 and other new features from the markdown variant called
index ebbb0be8e6473bfea363013972e4149aa8a90cdb..d2c62062bb3e4c1f236b1c1015bfe8ea3795da62 100644 (file)
@@ -9,3 +9,10 @@ of the themes included in ikiwiki.
 You can set the theme via the **theme** option in your config file (after
 enabling the plugin). Refresh the wiki after changing it to see the changes.
+Hints for theme builders
+ * Start from an existing [[CSS file|css]], see also the [[css market]] for examples
+ * You can override the [[templates]] files by dropping them in a `templates` subdirectory
+ * Try to stick with modifying the CSS however, maintaining custom templates is harder
index 42af97ec3d39dc507642247efb3c4e94e7d7e2a1..b57ef40571253a1e4af997bdbfd64eb5fd861a3e 100644 (file)
@@ -59,3 +59,15 @@ copy [...]
 > It does not, however, have a markdown to html converter -- for 
 > previewing it has to talk to the server with AJAX.
 > --[[Joey]] 
+>> I've got pagedown working on my personal site (simon.kisikew.org) but I'm not sure how
+>> I can inject the relevant &lt;div&gt;'s in the right place. They need to go **above**
+>> the editing &lt;textarea&gt; . (Too bad about the licensing, it's rather nice.)
+>> I had to do one minor change to it to have it inject itself into the page properly,
+>> and that was to make this change in `Markdown.Editor.js`:
+>> `this.input = doc.getElementById("editcontent" + postfix);`
+>> on line 247.  --[[simonraven]]
+>>> Well, I re-figured out that I needed a TMPL_VAR FOO in the template(s). --[[simonraven]]
index 9a5ca60a0f967cb276dcd77eb781fc056512d694..dcab041dc285b0ae9214a629c692d1f8e747b7d9 100644 (file)
@@ -1110,9 +1110,7 @@ to version control; the subdir can be added if so.
 Remove a file. The filename is relative to the root of the srcdir.
 Note that this should not commit the removal, it should only prepare for it
-to be committed when `rcs_commit` (or `rcs_commit_staged`) is called. Note
-that the new file may be in a new subdir that is not yet in version
-control; the subdir can be added if so.
+to be committed when `rcs_commit` (or `rcs_commit_staged`) is called.
 #### `rcs_rename($$)`
index 9beb08ecef02ffd6e08fe91e7ee30114037b13d3..2b191f257baf75722aef168804039c393c08497d 100644 (file)
@@ -1,13 +1,17 @@
-If you really need to, you can use [[!wikipedia desc="CVS" Concurrent Versions System]]
-with ikiwiki.
+[[!template id=gitbranch branch=schmonz/cvs author="[[schmonz]]"]]
+If you really need to, you can use [[!wikipedia desc="CVS" Concurrent
+Versions System]] with ikiwiki.
 ### Usage
 7. Install [[!cpan File::chdir]], [[!cpan File::ReadBackwards]],
-[cvsps](http://www.cobite.com/cvsps/), and
-[cvsweb](http://www.freebsd.org/projects/cvsweb.html) or the like.
+   [cvsps](http://www.cobite.com/cvsps/), and
+   [cvsweb](http://www.freebsd.org/projects/cvsweb.html) or the like.
 7. Adjust CVS-related parameters in your setup file.
-Consider creating `$HOME/.cvsrc` if you don't have one already; the plugin doesn't need it, but you yourself might. Here's a good general-purpose one:
+Consider creating `$HOME/.cvsrc` if you don't have one already; the
+plugin doesn't need it, but you yourself might. Here's a good
+general-purpose one:
     cvs -q
     checkout -P
@@ -17,12 +21,26 @@ Consider creating `$HOME/.cvsrc` if you don't have one already; the plugin doesn
 ### Implementation details
 * [[ikiwiki-makerepo]]:
- * creates a repository,
- * imports `$SRCDIR` into top-level module `ikiwiki` (vendor tag IKIWIKI, release tag PRE_CVS),
- * configures the post-commit hook in `CVSROOT/loginfo`.
+    * creates a repository,
+    * imports `$SRCDIR` into top-level module `ikiwiki` (vendor tag
+      IKIWIKI, release tag PRE_CVS),
+    * configures the post-commit hook in `CVSROOT/loginfo`.
 ### To do
-* Have `ikiwiki-makerepo` set up NetBSD-like `log_accum` and `commit_prep` scripts that coalesce commits into changesets. Reasons:
-    7. Obviates the need to scrape the repo's complete history to determine the last N changesets. (Repositories without such records can fall back on the `cvsps` and `File::ReadBackwards` code.)
-    7. Arranges for ikiwiki to be run once per changeset, rather than CVS's once per committed file (!), which is a waste at best and bug-inducing at worst. (Currently, on multi-directory commits, only the first directory's changes get mentioned in [[recentchanges|plugins/recentchanges]].)
-* Perhaps prevent web edits from attempting to create `.../CVS/foo.mdwn` (and `.../cvs/foo.mdwn` on case-insensitive filesystems); thanks to the CVS metadata directory, the attempt will fail anyway (and much more confusingly) if we don't.
+* Expand test coverage and fix bugs.
+* Have `ikiwiki-makerepo` set up NetBSD-like `log_accum` and
+  `commit_prep` scripts that coalesce commits into changesets. Reasons:
+    7. Obviates the need to scrape the repo's complete history to
+       determine the last N changesets. (Repositories without such
+       records can fall back on the `cvsps` and `File::ReadBackwards`
+       code.)
+    7. Arranges for ikiwiki to be run once per changeset, rather
+       than CVS's once per committed file (!), which is a waste at
+       best and bug-inducing at worst. (Currently, on multi-directory
+       commits, only the first directory's changes get mentioned
+       in [[recentchanges|plugins/recentchanges]].)
+* Perhaps prevent web edits from attempting to create `.../CVS/foo.mdwn`
+  (and `.../cvs/foo.mdwn` on case-insensitive filesystems); thanks
+  to the CVS metadata directory, the attempt will fail anyway (and
+  much more confusingly) if we don't.
+* Do a writeup for [[rcs/details]].
index 645b2388be1b54ee15042b8abede429488bcadee..e10892e7d5645c93c62bc768446c85f442c113ab 100644 (file)
@@ -147,3 +147,26 @@ short and clear as possible. --[[schmonz]]
 > that. --[[Joey]]
 >> Done. --[[schmonz]].
+I'm attempting to bring some polish to this plugin, starting with
+fuller test coverage. In preparation, I've refactored the tests a
+bunch (and shuffled the code a bit) in my branch. I'm worried,
+however, that my misunderstanding of `git rebase` may have made my
+branch harder for you to pull.
+Before I go writing a whole swack of test cases, could you merge
+my latest? Through at least ad0e56cdcaaf76bc68d1b5c56e6845307b51c44a
+there should be no functional change. --[[schmonz]]
+Never mind, I was able to convince myself (by cloning `origin`
+afresh and merging from `schmonz/cvs`). The history is a little
+gross but the before-and-after diff looks right.
+Bugs found and fixed so far:
+* Stop treating text files as binary (`-kb`) on `rcs_add()`
+   (ac8eab29e8394aca4c0b23a6687ec947ea1ac869)
+> Merged to current head. --[[Joey]] 
index 3aaf6d885cd44e0893e015cd661242e1e590af30..2f173677bfe5f0143ff7c84b474948e3562846ee 100644 (file)
@@ -11,6 +11,7 @@ This is my custom sidebar for this page.
 [[!sidebar ]]
 ## number 2
+### number 3
 This is the [[SandBox]], a page anyone can edit to try out ikiwiki
 (version [[!version  ]]).
@@ -41,6 +42,15 @@ Testing this sandbox thing.
 >>> ...and different font colors.
 >>>> ...but it's nothing a little CSS can't fix.
+# Pointless heading
+Let's see a table:
+[[!table data="""
+Heading 1|Heading 2|Heading 3
+Item 1| Item 2| Item 3"""]]
 Numbered list 
 1. First item.
@@ -158,4 +168,6 @@ module vc_Mux2 #( parameter W = 1 )
+This is simple enough for now [[sandbocen]] no?
diff --git a/doc/sandbox/Test_it.mdwn b/doc/sandbox/Test_it.mdwn
new file mode 100644 (file)
index 0000000..5478d7a
--- /dev/null
@@ -0,0 +1 @@
+Test it just now!
diff --git a/doc/sandbox/sandbocen.mdwn b/doc/sandbox/sandbocen.mdwn
new file mode 100644 (file)
index 0000000..8f7e049
--- /dev/null
@@ -0,0 +1,5 @@
+if (sample == test) goto Dijkstra
index 388d5a49c18fa9d94c549559e1c6d52f237dc3b3..7ab935181d4f2ec31fac4509c5de6daa2dd842c8 100644 (file)
@@ -265,5 +265,7 @@ Did anyone tried to install ikiwiki under a vhost setup ?
 ikiwiki is installed under a debian lenny system. but without write acces to /etc/ikiwiki (obvious) i am coming not far.
 Or do i miss something which is probably hidden deeper in the documentation ?
+Well it should be similar to shared hosting [or a remote server in general](http://ikiwiki.info/forum/how_to_setup_ikiwiki_on_a_remote_host/)
 Perhaps it's worth noting that when installing ikiwiki with apt on Debian stable, you need to use the backports version in order to follow the setup instructions.
index d81ec98fcb3d983f24958fbd55a4d176c187cbe6..07210f9bfe88092cdcfd5a09c66f37923653cbcb 100644 (file)
@@ -13,27 +13,27 @@ This page controls what shortcut links the wiki supports.
 * [[!shortcut name=google url="https://encrypted.google.com/search?q=%s"]]
 * [[!shortcut name=archive url="http://web.archive.org/*/%S"]]
-* [[!shortcut name=gmap url="http://maps.google.com/maps?q=%s"]]
-* [[!shortcut name=gmsg url="http://groups.google.com/groups?selm=%s"]]
-* [[!shortcut name=wikipedia url="https://en.wikimedia.org/wiki/%s"]]
+* [[!shortcut name=gmap url="https://maps.google.com/maps?q=%s"]]
+* [[!shortcut name=gmsg url="https://groups.google.com/groups?selm=%s"]]
+* [[!shortcut name=wikipedia url="https://en.wikipedia.org/wiki/%s"]]
 * [[!shortcut name=wikitravel url="https://wikitravel.org/en/%s"]]
 * [[!shortcut name=wiktionary url="https://en.wiktionary.org/wiki/%s"]]
 * [[!shortcut name=debbug url="http://bugs.debian.org/%S" desc="Debian bug #%s"]]
-* [[!shortcut name=deblist url="http://lists.debian.org/debian-%s" desc="debian-%s@lists.debian.org"]]
+* [[!shortcut name=deblist url="https://lists.debian.org/debian-%s" desc="debian-%s@lists.debian.org"]]
 * [[!shortcut name=debpkg url="http://packages.debian.org/%s"]]
 * [[!shortcut name=debpkgsid url="http://packages.debian.org/sid/%s"]]
 * [[!shortcut name=debpts url="http://packages.qa.debian.org/%s"]]
-* [[!shortcut name=debmsg url="http://lists.debian.org/msgid-search/%s"]]
+* [[!shortcut name=debmsg url="https://lists.debian.org/msgid-search/%s"]]
 * [[!shortcut name=debrt url="https://rt.debian.org/Ticket/Display.html?id=%s"]]
 * [[!shortcut name=debss url="http://snapshot.debian.org/package/%s/"]]
   * Usage: `\[[!debss package]]` or `\[[!debss package/version]]`.  See <http://snapshot.debian.org/> for details.
-* [[!shortcut name=debwiki url="http://wiki.debian.org/%s"]]
+* [[!shortcut name=debwiki url="https://wiki.debian.org/%s"]]
 * [[!shortcut name=fdobug url="https://bugs.freedesktop.org/show_bug.cgi?id=%s" desc="freedesktop.org bug #%s"]]
 * [[!shortcut name=fdolist url="http://lists.freedesktop.org/mailman/listinfo/%s" desc="%s@lists.freedesktop.org"]]
-* [[!shortcut name=gnomebug url="http://bugzilla.gnome.org/show_bug.cgi?id=%s" desc="GNOME bug #%s"]]
-* [[!shortcut name=linuxbug url="http://bugzilla.kernel.org/show_bug.cgi?id=%s" desc="Linux bug #%s"]]
+* [[!shortcut name=gnomebug url="https://bugzilla.gnome.org/show_bug.cgi?id=%s" desc="GNOME bug #%s"]]
+* [[!shortcut name=linuxbug url="https://bugzilla.kernel.org/show_bug.cgi?id=%s" desc="Linux bug #%s"]]
 * [[!shortcut name=mozbug url="https://bugzilla.mozilla.org/show_bug.cgi?id=%s" desc="Mozilla bug #%s"]]
-* [[!shortcut name=gnulist url="http://lists.gnu.org/mailman/listinfo/%s" desc="%s@gnu.org"]]
+* [[!shortcut name=gnulist url="https://lists.gnu.org/mailman/listinfo/%s" desc="%s@gnu.org"]]
 * [[!shortcut name=marcmsg url="http://marc.info/?i=%s"]]
 * [[!shortcut name=marclist url="http://marc.info/?l=%s"]]
 * [[!shortcut name=gmane url="http://dir.gmane.org/gmane.%s" desc="gmane.%s"]]
@@ -43,7 +43,7 @@ This page controls what shortcut links the wiki supports.
 * [[!shortcut name=hoogle url="http://haskell.org/hoogle/?q=%s"]]
 * [[!shortcut name=iki url="http://ikiwiki.info/%S/"]]
 * [[!shortcut name=ljuser url="http://%s.livejournal.com/"]]
-* [[!shortcut name=rfc url="http://www.ietf.org/rfc/rfc%s.txt" desc="RFC %s"]]
+* [[!shortcut name=rfc url="https://www.ietf.org/rfc/rfc%s.txt" desc="RFC %s"]]
 * [[!shortcut name=c2 url="http://c2.com/cgi/wiki?%s"]]
 * [[!shortcut name=meatballwiki url="http://www.usemod.com/cgi-bin/mb.pl?%s"]]
 * [[!shortcut name=emacswiki url="http://www.emacswiki.org/cgi-bin/wiki/%s"]]
@@ -53,12 +53,12 @@ This page controls what shortcut links the wiki supports.
 * [[!shortcut name=gpg url="http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s"]]
 * [[!shortcut name=perldoc url="http://perldoc.perl.org/search.html?q=%s"]]
 * [[!shortcut name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain"]]
-* [[!shortcut name=cve url="http://cve.mitre.org/cgi-bin/cvename.cgi?name=%s"]]
+* [[!shortcut name=cve url="https://cve.mitre.org/cgi-bin/cvename.cgi?name=%s"]]
 * [[!shortcut name=cia url="http://cia.vc/stats/project/%s"]]
 * [[!shortcut name=ciauser url="http://cia.vc/stats/user/%s"]]
-* [[!shortcut name=flickr url="http://www.flickr.com/photos/%s"]]
+* [[!shortcut name=flickr url="https://secure.flickr.com/photos/%s"]]
 * [[!shortcut name=man url="http://linux.die.net/man/%s"]]
-* [[!shortcut name=ohloh url="http://www.ohloh.net/projects/%s"]]
+* [[!shortcut name=ohloh url="https://www.ohloh.net/p/%s"]]
 * [[!shortcut name=cpanrt url="https://rt.cpan.org/Ticket/Display.html?id=%s" desc="CPAN RT#%s"]]
 * [[!shortcut name=novellbug url="https://bugzilla.novell.com/show_bug.cgi?id=%s" desc="bug %s"]]
 * [[!shortcut name=ubupkg url="http://packages.ubuntu.com/%s"]]
index aac98457eec8ab2b7ddb529d7b74b5b82708bf1d..11903a1271842c45ba1a9a6effc35ac0ebf2996a 100644 (file)
@@ -10,4 +10,12 @@ Do you have a suggestion on how to make that shortcut also be used to point to a
 Thanks. --[[PaulePanter]]
-> Does anyone have an opinion on the shortcuts for google/wikipedia pointing at the HTTPS services? Introduced by [this edit by Paul Panter](http://git.ikiwiki.info/?p=ikiwiki;a=blobdiff;f=doc/shortcuts.mdwn;h=cafe3f573ef5cfd4811bee9688afa1675302aca9;hp=54dd0fdb1eadfac386b31b2dd2f014349a54184a;hb=704038db298c0f3a8039dcfe8d3a801c26fadf15;hpb=2a1077f8869ca65b49e09d99a76b595d90b28499). Personally, I think they should be separate shortcut keys.  Most of my google/WP usage is such that I would prefer it over HTTP (faster, less resource usage at client side). However, I never use the shortcuts feature in ikiwiki anyway... -- [[Jon]] 
+> Does anyone have an opinion on the shortcuts for google/wikipedia pointing at the HTTPS services? Introduced by an edit by Paul Panter.
+> Personally, I think they should be separate shortcut keys.  Most of my
+> google/WP usage is such that I would prefer it over HTTP (faster, less
+> resource usage at client side). However, I never use the shortcuts feature
+> in ikiwiki anyway... -- [[Jon]] 
+>> I have been trying to decide what to do about that Jon. https links are
+>> painful for me (dialup). This really needs to be fixed at a lower level
+>> in the web than ikiwiki though, and I understand the push for https. --[[Joey]]
index 5265d6378d88c12bdac67fb8bb8419f9320d73be..095ef95df2f24867e9f2499ca8ade9075a6b7945 100644 (file)
@@ -1,6 +1,5 @@
 This map excludes discussion pages, as well as subpages that are in feeds.
-[[!map pages="* and !*/discussion and !recentchanges
+[[!map pages="page(*) and !*/discussion and !recentchanges
 and !bugs/* and !examples/*/* and !news/* and !tips/* and !plugins/*
-and !sandbox/* and !forum/* and !todo/* and !users/*
-and !*.css and !*.ico and !*.png and !*.svgz and !*.gif"]]
+and !sandbox/* and !forum/* and !todo/* and !users/*"]]
index 87333b53531d3fe78ef71e15d5aee98a71450bdb..f2fc8cadf53c0682550ef53b6481986db5abd5d6 100644 (file)
@@ -4,3 +4,4 @@ I would like to contribute a theme I created and posted on github:
 For an example of the theme in action, see: [[https://antportal.com/wiki/]]
+> Shouldn't we just make people post their themes in the [[themes]] page? Or maybe we should make a [[theme market]]? --[[anarcat]]
diff --git a/doc/tips/Adding_Disqus_to_your_wiki/discussion.mdwn b/doc/tips/Adding_Disqus_to_your_wiki/discussion.mdwn
new file mode 100644 (file)
index 0000000..4f2e137
--- /dev/null
@@ -0,0 +1 @@
+This appears to add the Disqus code to every page, including Archive pages and the blog index.  Is there a way to only add it to the blog posts?
index 8d1d52b49e4d026cc24589084d06f193aa633c80..e60b413ddc39ba3e3d6073bb722de6d631633511 100644 (file)
@@ -1,6 +1,6 @@
 [[!toc levels=2]]
-Mediawiki is a dynamically-generated wiki which stores it's data in a
+Mediawiki is a dynamically-generated wiki which stores its data in a
 relational database. Pages are marked up using a proprietary markup. It is
 possible to import the contents of a Mediawiki site into an ikiwiki,
 converting some of the Mediawiki conventions into Ikiwiki ones.
@@ -188,7 +188,7 @@ There is a repository of tools for converting MediaWiki to Git based Markdown wi
 [[scy]] wrote a python script to convert from mediawiki XML dumps to git repositories at <https://github.com/scy/levitation>.
-[[Anarcat]] wrote a python script to convert from a mediawiki website to ikiwiki at <http://anarcat.ath.cx/software/mediawikigitdump.git/>. The script doesn't need any special access or privileges and communicates with the documented API (so it's a bit slower, but allows you to mirror sites you are not managing, like parts of Wikipedia). The script can also incrementally import new changes from a running site, through RecentChanges inspection. It also supports mithro's new Mediawiki2markdown converter.
+[[Anarcat]] wrote a python script to convert from a mediawiki website to ikiwiki at git://src.anarcat.ath.cx/mediawikigitdump.git/. The script doesn't need any special access or privileges and communicates with the documented API (so it's a bit slower, but allows you to mirror sites you are not managing, like parts of Wikipedia). The script can also incrementally import new changes from a running site, through RecentChanges inspection. It also supports mithro's new Mediawiki2markdown converter (which I have a copy here: git://src.anarcat.ath.cx/media2iki.git/).
 > Some assembly is required to get Mediawiki2markdown and its mwlib
 > gitmodule available in the right place for it to use.. perhaps you could
@@ -204,7 +204,7 @@ There is a repository of tools for converting MediaWiki to Git based Markdown wi
 > fails on some html in the page named "4_metres". On archiveteam.org,
 > it fails trying to write to a page filename starting with "/", --[[Joey]]
-> > can you show me exactly which commandline arguments you're using? also, I have made improvements over the converter too, also available here: <http://anarcat.ath.cx/software/media2iki.git/> -- [[anarcat]]
+> > can you show me exactly which commandline arguments you're using? also, I have made improvements over the converter too, also available here: git://src/anarcat.ath.cx/media2iki.git/ -- [[anarcat]]
 >>> Not using your new converter, just the installation I did earlier
 >>> today:
index 4a7163eae8374dd328d8193bdea42d7d747900b6..f1b0598ee7656470feea9af698908c6e5e6e57c6 100644 (file)
@@ -6,7 +6,7 @@
-I wrote a script that will download all the latest revisions of a mediawiki site. In short, it does a good part of the stuff required for the migration: it downloads the goods (ie. the latest version of every page, automatically) and commits the resulting structure. There's still a good few pieces missing for an actual complete conversion to ikiwiki, but it's a pretty good start. It only talks with mediawiki through HTTP, so no special access is necessary. The downside of that is that it will not attempt to download every revision for performance reasons. The code is here: http://anarcat.ath.cx/software/mediawikigitdump.git/ See header of the file for more details and todos. -- [[users/Anarcat]] 2010-10-15
+I wrote a script that will download all the latest revisions of a mediawiki site. In short, it does a good part of the stuff required for the migration: it downloads the goods (ie. the latest version of every page, automatically) and commits the resulting structure. There's still a good few pieces missing for an actual complete conversion to ikiwiki, but it's a pretty good start. It only talks with mediawiki through HTTP, so no special access is necessary. The downside of that is that it will not attempt to download every revision for performance reasons. The code is here: git://anarcat.ath.cx/software/mediawikigitdump.git/ and git://anarcat.ath.cx/software/media2iki.git/ See header of the file for more details and todos. -- [[users/Anarcat]] 2010-10-15
index 6ce72ae7b8cd749a1d2ad2d8fba1977f55bc1635..297a2a6a76dc972022e20b9d98ea7501a88a19fc 100644 (file)
@@ -10,3 +10,6 @@ Or, was this last remark about rebuilding after pulling meant to apply to rebuil
 > Of course you don't need a web server on the laptop. It is useful for
 > previewing pages before publishing them though. --[[Joey]]
+I have followed this idea too, however after pushing to the server running gitk in the scrdir shows that the remotes/origin/master branch is newer than the master. Is this normal? Have I reset the master branch to remotes/origin/master then every time when someone pushed something (and run ikiwiki -setup afterwards?)
diff --git a/doc/todo/Improve_markdown_speed.mdwn b/doc/todo/Improve_markdown_speed.mdwn
new file mode 100644 (file)
index 0000000..de3230c
--- /dev/null
@@ -0,0 +1,33 @@
+I'm not sure where the bottleneck is for running ikiwiki over a site like
+my blog
+though I like to think the markdown processing could be speeded up by the
+support of the C implementation of Markdown called
+>> Sundown doesn't appear to have Perl bindings, so the cost of calling a
+>> separate process could wipe out some or all of the speed gain.  It might
+>> be worth looking into Text::Upskirt instead, which uses the Upskirt
+>> library which Sundown appears to be derived from. -- [[KathrynAndersen]]
+>>> It would be fairly easy to write a perl binding for sundown. For that
+>>> matter, Text::Upskirt could be adapted to it. I am waiting for any of
+>>> upskirt, sundown and perl bindings to get into Debian, then I will 
+>>> see about making ikiwiki use them.
+>>> For now, I have added discount support to ikiwiki. This does speed up
+>>> markdown rendering by up to 40x, although when building a site ikiwiki
+>>> in practice does other work, so the gains are less impressive. Building
+>>> the ikiwiki doc wiki went from 62 to 45 seconds. The lack of a Debian 
+>>> package of Text::Markdown::Discount means this is not used by default
+>>> yet.
+>>> (Upskirt, discount... Who comes up with these names? Discount also 
+>>> features a "NOPANTS" option.) --[[Joey]]
+>>>> Thanks for doing this; it's given a well-needed speedup to my huge site.
+>>>> (At least "Discount" is related to "Mark Down" but I don't fathom "Upskirt" either.)
+>>>> --[[KathrynAndersen]]
diff --git a/doc/todo/Modern_standard_layout.mdwn b/doc/todo/Modern_standard_layout.mdwn
new file mode 100644 (file)
index 0000000..37f1ee7
--- /dev/null
@@ -0,0 +1,39 @@
+I think it would be a good idea to think about the standard layout style of ikiwiki, the current layout used in a standard setup and on ikiwiki.info as well looks a bit old-fashioned to me. I guess that a nice modern layout would attract more new ikiwiki users and boost the ikwiki community... 
+> FWIW, I agree.  The actiontabs [[theme|themes]] would be a better default, but something which showed what ikiwiki was capable of (or more precicely: that ikiwiki is as capable as other popular wiki softwares) would be better still. — [[Jon]]
+>> As an author of plugins that interact with the UI, I think it's good that
+>> a *minimal* ikiwiki has a minimal anti-theme, and that plugins are
+>> developed against the anti-theme - it's a "blank slate" for themes.
+>> [[plugins/contrib/trail]] was much easier to get working in
+>> the default anti-theme than in actiontabs and blueview.
+>> Technical detail: all the standard themes are done by appending to the
+>> anti-theme's CSS (albeit in ikiwiki's build system rather than during
+>> the wiki build), rather than by replacing it - so themes that haven't
+>> been updated for a new UI element end up using the version of it from
+>> the anti-theme. [[plugins/Comments]] and [[plugins/contrib/trail]]
+>> both need some tweaks per-theme to make them integrate nicely,
+>> but most of the design comes from the anti-theme.
+>> That doesn't necessarily mean the anti-theme should be the one used
+>> on ikiwiki.info, or used by default in new wikis - from my
+>> point of view, it'd be fine for either of those to be actiontabs
+>> or something The important thing is to *have* a "blank slate" anti-theme
+>> that looks simple but sufficient, as a basis for new styles (either
+>> [[themes]], or wikis that want their own unique stylesheet), and derive
+>> the other themes from it. --[[smcv]]
+> Ikiwiki's minimal theme is not modern. It's postmodern. I like it for the
+> reasons described here. <http://kitenet.net/~joey/blog/entry/web_minimalism/>
+> " The minimalism sucked you in, it made the web feel like one coherent,
+> unified thing, unlike the constellation of corporate edifices occupying
+> much of it today."
+> I see an increasing trend back toward these principles, driven partly
+> by limits of eg, smartphone UI. So I certianly won't be changing the
+> look of any of my ikiwiki sites, including this one.
+> `auto.setup` and `auto-blog.setup` could have different defaults,
+> or allow a theme to be picked as [Branchable](http://branchable.com/)
+> does. Perhaps actiontabs for auto-blog and default for wikis? --[[Joey]]
index f1c12d33ffc17b48fbaed2ba60fad4cbca85d867..8474c9c2746457abff1388732cec13cd6959991f 100644 (file)
@@ -4,12 +4,20 @@ They don't want to back out of post to an index. They want an easy button to cli
-Thank you
+[Jekyll](http://jekyllrb.com/)'s implementation looks rather neat:
+* <https://github.com/mojombo/jekyll/wiki/template-data>
+* <https://github.com/mojombo/jekyll/blob/master/lib/jekyll/generators/pagination.rb>
 > This is a perfect use for [[todo/wikitrails]], of which my
 > [[plugins/contrib/trail]] plugin is an implementation. Code review on that
 > plugin would be welcome; it might even get merged one day.
+>> The trail plugin is very likely to be merged soon, and is already
+>> available. So, closing this bug report [[done]] --[[Joey]]
 > Unfortunately, IkiWiki blogs use a [[ikiwiki/PageSpec]] to define the set of
 > "posts" in the blog (through which the next/prev trail should range), and
 > the current implementation of [[plugins/contrib/trail]] in terms of typed
@@ -27,7 +35,34 @@ Thank you
 > reduces the generic usefulness of typed links, though - in particular
 > you can no longer use "is part of trail A" in a PageSpec. --[[smcv]]
+>> Version 3 of [[plugins/contrib/trail]] now does this. For `traillink`
+>> and `trailitem` it additionally adds a typed link, which it does not
+>> itself consume; for `trailinline` and `trail` it doesn't. --[[smcv]]
 >>> Indeed, I know the problem; I ran into the same kind of thing with my [[plugins/contrib/report]] plugin and its `trail` concept.
 >>> I simply had to declare that one couldn't use "trail" and "maketrail" options within the same report. That way, "maketrail" will add links in the "scan" pass, and "trail" will test for links in the "build" pass.  That usually works. --[[KathrynAndersen]]
+>>>> I'm not sure that even that is *quite* right: if your `trail` takes
+>>>> pagespecs as arguments, then it's potentially evaluating those pagespecs
+>>>> before all pages have been scanned, which could mean it lists pages
+>>>> which matched the spec before a recent change, or doesn't list pages
+>>>> which didn't previously match the spec but do now.
+>>>> In version 3 of [[plugins/contrib/trail]] I ended up storing
+>>>> uninterpreted pagespecs and links at scan time, and evaluating them the
+>>>> first time a page is built. I *think* that's sufficiently lazy to give
+>>>> the right answer... --[[smcv]]
 >> Do you have an example? --[[hendry]]
+>>> Now linked on the plugin's page - it doesn't pretend to be a blog, but
+>>> [the second demo](http://demo.hosted.pseudorandom.co.uk/trail2/)
+>>> is a `trailinline`, so you could do that with blog posts just as well.
+>>> Making [[plugins/contrib/album]] require `trail` v3, and trying it out
+>>> on my blog, are next on the list.
+>>> --[[smcv]]
+>>>> Sorry thank link <http://demo.hosted.pseudorandom.co.uk/trail2/> doesn't work. I get a forbidden. --[[hendry]]
diff --git a/doc/todo/Render_multiple_destinations_from_one_source.mdwn b/doc/todo/Render_multiple_destinations_from_one_source.mdwn
new file mode 100644 (file)
index 0000000..5fd7876
--- /dev/null
@@ -0,0 +1,50 @@
+I've set up a couple of sites where the users use ikiwiki in fairly standard mode as a CMS and I then set up another ikiwiki setup file that's got the edit options turned off, but is pointing at the same git repository in the background.  I then make the post-update hook for each be <tt>post-update-hook.ikiwiki</tt> and <tt>post-update-hook.ikiwiki-public</tt> and have the <tt>post-update</tt> hook itself be a script like:
+    #!/bin/sh
+    $0.ikiwiki "$@"
+    $0.ikiwiki-public "$@"
+obviously this results in duplication of most of the <tt>ikiwiki.setup</tt>, a spare working directory that (perhaps) isn't needed, and an extra post-update hook plus wrapper script that is really needless extra complication.
+If instead there was a way of specifying additional destdir's, or perhaps more generally a way of specifying that there should be multiple passes through the build process using alternative values for some of the variables, then one could have both the private wiki view, and the public static view generated with minimal additional configuration.
+One idea that occurs to me is an <tt>additional_configs</tt> list where one would specify files containing just the settings you want to override compared with the main setup file.
+Alternatively, one might invent a new way of specifying alternative settings.  i.e.:
+     additionalsites:
+       - public
+     destdir: /home/wiki/wiki-view
+     destdir[public]: /home/wiki/public_html
+     disable_plugins: []
+     disable_plugins[public]:
+       - recentchanges
+       - editpage
+     url: https://example.com/editors/
+     url[public]: http://www.example.com/
+     ...
+where the existance of the <tt>additionalsites</tt> list provokes additional runs through using the settings with matching extra bits to be used to override the defaults found in the rest of the file.
+Just brainstorming a bit after [[liw]]'s comment about this being useful on IRC, and thought I'd write the idea up while I was thinking about it. -[[fil]]
+> I don't think you can avoid ikiwiki needing to store a different
+> `.ikiwiki` directory with state for each site. Differences in
+> configuration can affect the state it stores in arbitrary ways,
+> ranging from which pages are even built to what plugins are enabled and
+> store state. This also means that it doesn't make sense to try and
+> share state amoung rebuilds of the same site.
+> There is a hidden, and undocumented configuration setting `wikistatedir`
+> that can actually be pointed at a different directory than `.ikiwiki`.
+> Then you can rebuild multiple configurations from one working directory.
+> Another handy trick is to use the old perl-format (not yaml) setup file,
+> and parameterize it using `$ENV{FOO}`, then you can build two different
+> setups from the same setup file.
+> --[[Joey]]
index 4bc828e6ee703e1cfc3c933ea72610e91f757210..e0074eef8dcad4c23d7ce374fb5d918da9f2afdc 100644 (file)
@@ -2,6 +2,8 @@
 Here's my next version of the patch - still a work in progress.
+  Note:I partially updated part of this patch to work on Ikiwiki v3 - see [here](http://ikiwiki.info/forum/Calendar:_listing_multiple_entries_per_day/) -- Matt Ford
 It provides the following new features. The features are designed to preserve the behavior of the existing plugin by default.
  * If you specify an event preprocessor in a post, such as:
diff --git a/doc/todo/Split_plugins_with_external_dependencies_into_separate_Debian_packages.mdwn b/doc/todo/Split_plugins_with_external_dependencies_into_separate_Debian_packages.mdwn
new file mode 100644 (file)
index 0000000..fdf0dea
--- /dev/null
@@ -0,0 +1,40 @@
+The Debian ikiwiki package has a pile of recommends and suggests for packages needed by various plugins and other optional functionality.  To make it easier for people to figure out what to install, and to make it easier for automatic dependency tracking to remove packages ikiwiki no longer needs, we could split the plugins with additional dependencies into their own packages.
+Notable plugin dependencies:
+- [[plugins/img]] depends on [[!debpkg perlmagick]]
+- [[plugins/graphviz]] depends on [[!debpkg graphviz]]
+  - [[plugins/linkmap]] depends on the graphviz plugin, so it should probably go in the same package.
+- [[plugins/polygen]] depends on [[!debpkg polygen]]
+- [[plugins/teximg]] depends on [[!debpkg dvipng]] and [[!debpkg texlive]]
+- [[plugins/htmltidy]] depends on [[!debpkg tidy]]
+- [[plugins/table]] depends on [[!debpkg libtext-csv-perl]]
+- [[plugins/textile]] depends on [[!debpkg libtext-textile-perl]]
+- [[plugins/txt]] should probably just depend on [[!debpkg liburi-find-perl]]
+- [[plugins/sparkline]] depends on [[!debpkg libsparkline-php]], which pulls in the whole PHP stack.
+  - [[plugins/postsparkline]] depends on the sparkline plugin, so it should probably go in the same package.
+- [[plugins/search]] depends on [[!debpkg xapian-omega]] and [[!debpkg libsearch-xapian-perl]]
+- [[plugins/po]] depends on [[!debpkg po4a]] (and possibly [[!debpkg gettext]] and [[!debpkg liblocale-gettext-perl]], or does something else use those?)
+- [[plugins/amazon_s3]] depends on [[!debpkg libnet-amazon-s3-perl]] and [[!debpkg libfile-mimeinfo-perl]]
+- [[plugins/highlight]] depends on [[!debpkg libhighlight-perl]]
+- [[plugins/htmlbalance]] depends on [[!debpkg libhtml-tree-perl]]
+- [[plugins/typography]] depends on [[!debpkg libtext-typography-perl]]
+- [[plugins/creole]] depends on [[!debpkg libtext-wikicreole-perl]]
+- [[plugins/wikitext]] depends on [[!debpkg libtext-wikiformat-perl]]
+- [[plugins/rst]] depends on [[!debpkg librpc-xml-perl]] and [[!debpkg python-docutils]], and pulls in Python
+- [[plugins/blogspam]] depends on [[!debpkg librpc-xml-perl]]
+- [[plugins/prettydate]] depends on [[!debpkg libtimedate-perl]]
+- [[plugins/hnb]] depends on [[!debpkg hnb]]
+- [[plugins/fortune]] depends on [[!debpkg fortune]]
+- [[plugins/filecheck]] depends on [[!debpkg libfile-mimeinfo-perl]] and file
+- [[plugins/ddate]] depends on [[!debpkg libdatetime-calendar-discordian-perl]] and [[!debpkg libdatetime-perl]]
+- [[plugins/otl]] depends on [[!debpkg vim-vimoutliner]]
+- [[plugins/haiku]] depends on [[!debpkg libcoy-perl]]
+- [[plugins/sortnaturally]] depends on [[!debpkg libsort-naturally-perl]]
+- [[plugins/pinger]] depends on [[!debpkg liblwpx-paranoidagent-perl]] (it works with plain LWP, but less securely) and should probably just depend on [[!debpkg libcrypt-ssleay-perl]]
+- [[plugins/openid]] depends on [[!debpkg libnet-openid-consumer-perl]], and should either recommend or just depend on [[!debpkg liblwpx-paranoidagent-perl]] and [[!debpkg libcrypt-ssleay-perl]]
+- Support for tla depends on [[!debpkg libmailtools-perl]] (could make this a package depending on [[!debpkg tla]] and [[!debpkg libmailtools-perl]])
+Also, ikiwiki should probably just depend on [[!debpkg libauthen-passphrase-perl]] and refuse to store insecure passwords.
+[[!tag wishlist]]
index f7f0ec8e5a1ec3cb58cbff950ec15c1e19c86a0b..ad724442b01586363068c44d96ab794645c43b9a 100644 (file)
@@ -7,4 +7,4 @@ but I'd rather not change the system file or uninstall the perl modules.
 Perhaps a custom Plugin/mdwn.pm or a clever way to set $markdown_sub would suffice,
 but I don't know perl.  If I wanted to replace Plugin/mdwn.pm with something simple
 that didn't bother to check for Text::*Markdown, calling /home/me/bin/mymdwn instead,
-what would that look like?
+what would that look like? -- [[tjgolubi]]
diff --git a/doc/todo/Wikilink_to_a_symbolic_link.mdwn b/doc/todo/Wikilink_to_a_symbolic_link.mdwn
new file mode 100644 (file)
index 0000000..1f9a12d
--- /dev/null
@@ -0,0 +1,5 @@
+Some time ago I asked in the [[ikiwiki forum|http://ikiwiki.info/forum/Wikilink_to_a_symbolic_link/]] how to create wikilinks to symbolic links. The answer was that this is not possible because of security reasons.
+However I use ikiwiki only locally for my personal use. So it wouldn't be a security issue for me. The point is, that I want to link to pdf-files that are somewhere on my harddrive because I want to have automatically the newest versions of the files linked to in my ikiwiki. So my idea would be to create a symbolic links to those files in my scrdir.
+Would be great if something like that would be possible soon.
index 38c30c23f217e344d85275a770299162ce606b13..f548f1a5b45c2dc4d8c809efc921eb1e641b5131 100644 (file)
@@ -161,3 +161,9 @@ definitions essentially.
 >>>>>>> No pity required — but whoops, yes, that was a bit of a mistake
 >>>>>>> ☺ I guess I'll have to split the current `preprocess` in half.
 >>>>>>> — [[Jon]]
+>>>>>>>> I've been taking another look at this today, as I'm very keen to
+>>>>>>>> close various open loops of mine in IkiWiki to move on and do some
+>>>>>>>> other stuff.  However, I'm not actually *using* this at the moment,
+>>>>>>>> so whilst I think it's a good idea, I can't really motivate myself
+>>>>>>>> to fix it anymore. I guess for now, this should just rot. — [[Jon]]
index 267706b1b6c9bd8df685b444925c5f1a12008d47..996de152d6744892e02a0ce0cdb977bb1f8994e2 100644 (file)
@@ -7,3 +7,10 @@ the author. It would be especially handy if it was generated statically.
 One way would be to generate internal pages corresponding to each comment
 that needs moderation; then the feed could be constructed via a usual
+See [[tips/comments feed]] --liw
+> Indeed, and the demo blog comes with a comments page with such feeds
+> already set up. [[done]] --[[Joey]] 
index e317184b545b974b0c4723a9670fdd2b3b44f43f..2a7ebce0a02d440fff7616107c7849f9a7fa4f38 100644 (file)
@@ -3,6 +3,6 @@
 I was trying to get htmltidy to [play nicely with MathML][play].  Unfortunately, I couldn't construct a command line that I was happy with, but along the way I altered htmltidy to allow a configurable command line.  This seemed like a generally useful thing, so I've published my [patch][] as a Git branch.
 [play]: http://lists.w3.org/Archives/Public/html-tidy/2006JanMar/0052.html
-[patch]: http://www.physics.drexel.edu/~wking/code/git/git.php?p=ikiwiki.git&a=commitdiff&h=408ee89fd7c1dc70510385a7cf263a05862dda97&hb=e65ce4f0937eaf622846c02a9d39fa7aebe4af12
+[patch]: http://git.tremily.us/?p=ikiwiki.git&a=commitdiff&h=408ee89fd7c1dc70510385a7cf263a05862dda97&hb=e65ce4f0937eaf622846c02a9d39fa7aebe4af12
 > Thanks, [[done]] --[[Joey]] 
diff --git a/doc/todo/hyphenation.mdwn b/doc/todo/hyphenation.mdwn
new file mode 100644 (file)
index 0000000..e7f6bc4
--- /dev/null
@@ -0,0 +1,32 @@
+[[!tag wishlist]]
+I recently found [Hyphenator](http://code.google.com/p/hyphenator/) which is quite cool ... but it should be possible to implement this functionality within ikiwiki and not rely on javascript and the client.
+A Perl implementation of the algorithm exists in [[!cpan TeX::Hyphen]].
+> I'd be inclined to say that Javascript run in the client is a better
+> place to do hyphenation: this is the sort of non-essential,
+> progressive-enhancement thing that JS is perfect for. If you did it
+> at the server side, to cope with browser windows of different sizes
+> you'd have to serve HTML sprinkled with soft-hyphen entities at
+> every possible hyphenation point, like
+>     pro&shy;gress&shy;ive en&shy;hance&shy;ment
+> which is nearly twice the byte-count and might stop
+> search engines from indexing your site correctly.
+> A browser that supports Javascript probably also supports
+> soft-hyphen marks, but I doubt all non-JS browsers support them
+> correctly.
+> It might be good to have a plugin to insert a reference to the
+> hyphenation JS into the `<head>`, or a general way to enable
+> this sort of thing without writing a plugin or changing your
+> `page.tmpl`, though. Perhaps we should have a `local.js`
+> alongside `local.css`? :-)
+> --[[smcv]]
+>> Thanks, I did not realize that the javascript does something else than add &amp;shy;s - took a closer look at it now.
+>> I doubt however that adding them will increase the byte count more than transmitting the javascript.
index 8228186f9f05b0b6219746dd9965fd673d007c51..52a4be7265667b111dd89229e3dfd49f02f58af0 100644 (file)
@@ -9,7 +9,7 @@ Also raise an error in `IkiWiki::pagetype($file)` if `$file` is blank, which avo
 I'm using the new code in my [blog][].
-[blog]: http://www.physics.drexel.edu/~wking/unfolding-disasters/posts/yacc2dot/
+[blog]: http://blog.tremily.us/posts/yacc2dot/
index 3e304fa768501d892614365e75058c816f193e0c..ae9a8f37ab60dac264c1908e16a2d64c9f18e49a 100644 (file)
@@ -19,4 +19,4 @@ MathML.
 [itex]: http://golem.ph.utexas.edu/~distler/blog/itex2MMLcommands.html
 [itex2MML]: http://golem.ph.utexas.edu/~distler/blog/itex2MML.html
-[example]: http://www.physics.drexel.edu/~wking/unfolding-disasters/posts/mdwn_itex/
+[example]: http://blog.tremily.us/posts/mdwn_itex/
diff --git a/doc/todo/mdwn_preview/discussion.mdwn b/doc/todo/mdwn_preview/discussion.mdwn
new file mode 100644 (file)
index 0000000..4fb30ad
--- /dev/null
@@ -0,0 +1 @@
++1, not sure where this feature is going. I'm keen to seen this!
index 1494fed7a606fc4984d5ff279dfebabd46576d33..358185a22675ce25240f9aa2249133e9d261714c 100644 (file)
@@ -6,3 +6,84 @@ Lots of \[[!img ]] (~2200), lots of \[[!teximg ]] (~2700). A complete rebuild ta
 We could use a big machine, with plenty of CPUs. Could some multi-threading support be added to ikiwiki, by forking out all the external heavy  plugins (imagemagick, tex, ...) and/or by processing pages in parallel?
 Disclaimer: I know nothing of the Perl approach to parallel processing.
+> I agree that it would be lovely to be able to use multiple processors to speed up rebuilds on big sites (I have a big site myself), but, taking a quick look at what Perl threads entails, and taking into acount what I've seen of the code of IkiWiki, it would take a massive rewrite to make IkiWiki thread-safe - the API would have to be completely rewritten - and then more work again to introduce threading itself.  So my unofficial humble opinion is that it's unlikely to be done.
+> Which is a pity, and I hope I'm mistaken about it.
+> --[[KathrynAndersen]]
+> > I have much less experience with the internals of Ikiwiki, much
+> > less Multi-threading perl, but I agree that to make Ikiwiki thread
+> > safe and to make the modifications to really take advantage of the
+> > threads is probably beyond the realm of reasonable
+> > expectations. Having said that, I wonder if there aren't ways to
+> > make Ikiwiki perform better for these big cases where the only
+> > option is to wait for it to grind through everything. Something
+> > along the lines of doing all of the aggregation and dependency
+> > heavy stuff early on, and then doing all of the page rendering
+> > stuff at the end quasi-asynchronously? Or am I way off in the deep
+> > end.
+> >
+> > From a practical perspective, it seems like these massive rebuild
+> > situations represent a really small subset of ikiwiki builds. Most
+> > sites are pretty small, and most sites need full rebuilds very
+> > very infrequently. In that scope, 10 minute rebuilds aren't that
+> > bad seeming. In terms of performance challenges, it's the one page
+> > with 3-5 dependency that takes 10 seconds (say) to rebuild that's
+> > a larger challenge for Ikiwiki as a whole. At the same time, I'd
+> > be willing to bet that performance benefits for these really big
+> > repositories for using fast disks (i.e. SSDs) could probably just
+> > about meet the benefit of most of the threading/async work.
+> >
+> > --[[tychoish]]
+>>> It's at this point that doing profiling for a particular site would come
+>>> in, because it would depend on the site content and how exactly IkiWiki is
+>>> being used as to what the performance bottlenecks would be.  For the
+>>> original poster, it would be image processing.  For me, it tends to be
+>>> PageSpecs, because I have a lot of maps and reports.
+>>> But I sincerely don't think that Disk I/O is the main bottleneck, not when
+>>> the original poster mentions CPU usage, and also in my experience, I see
+>>> IkiWiki chewing up 100% CPU usage one CPU, while the others remain idle.  I
+>>> haven't noticed slowdowns due to waiting for disk I/O, whether that be a
+>>> system with HD or SSD storage.
+>>> I agree that large sites are probably not the most common use-case, but it
+>>> can be a chicken-and-egg situation with large sites and complete rebuilds,
+>>> since it can often be the case with a large site that rebuilding based on
+>>> dependencies takes *longer* than rebuilding the site from scratch, simply
+>>> because there are so many pages that are interdependent.  It's not always
+>>> the number of pages itself, but how the site is being used.  If IkiWiki is
+>>> used with the absolute minimum number of page-dependencies - that is, no
+>>> maps, no sitemaps, no trails, no tags, no backlinks, no albums - then one
+>>> can have a very large number of pages without having performance problems.
+>>> But when you have a change in PageA affecting PageB which affects PageC,
+>>> PageD, PageE and PageF, then performance can drop off horribly.  And it's a
+>>> trade-off, because having features that interlink pages automatically is
+>>> really nifty ad useful - but they have a price.
+>>> I'm not really sure what the best solution is.  Me, I profile my IkiWiki builds and try to tweak performance for them... but there's only so much I can do.
+>>> --[[KathrynAndersen]]
+>>>> IMHO, the best way to get a multithreaded ikiwiki is to rewrite it
+>>>> in haskell, using as much pure code as possible. Many avenues
+>>>> then would open up to taking advantage of haskell's ability to
+>>>> parallize pure code.
+>>>> With that said, we already have some nice invariants that could be
+>>>> used to parallelize page builds. In particular, we know that
+>>>> page A never needs state built up while building page B, for any
+>>>> pages A and B that don't have a dependency relationship -- and ikiwiki
+>>>> tracks such dependency relationships, although not currently in a form
+>>>> that makes it very easy (or fast..) to pick out such groups of
+>>>> unrelated pages.
+>>>> OTOH, there are problems.. building page A can result in changes to
+>>>> ikiwiki's state; building page B can result in other changes. All
+>>>> such changes would have to be made thread-safely. And would the
+>>>> resulting lock contention result in a program that ran any faster
+>>>> once parallelized?
+>>>> Which is why [[rewrite_ikiwiki_in_haskell]], while pretty insane, is
+>>>> something I keep thinking about. If only I had a spare year..
+>>>> --[[Joey]]
index 5df17e95b1147f733283be7721fddf9671e0ecd1..3c42a4f94c39eb026f96453f9ffac714434909c8 100644 (file)
@@ -7,7 +7,7 @@ page titles if they have numeric components. the
 provides an algorithm for that.
 there is a
+patch 55b83cb7bd1cd7c60bb45dc22c3745dd80a63fed
 attached that makes the [[plugins/inline]] plugin use Sort::Naturally if sort
 is set to "title_natural".
index 3e9d95376c612fdd6099c8e6c605c7f41c151eeb..ef7f4dbafc0a7fda92db13b9fc64615e4f1e69a9 100644 (file)
@@ -18,7 +18,18 @@ but Ikiwiki currently (as far as I know) lacks a method to escape
 inserted HTML depending on which plugins will be used during the
 [[htmlize phase|plugins/write#index11h3]].
+new plugin
+A complete rewrite of the plugin can be found
+[here][chrismgray-rewrite].  It is an [[external|plugins/write/external]] plugin using a
+dedicated emacs instance to parse the org-mode files.  Thus, it should
+be a bit faster than the older plugin, as well as properly handling
+[[wikilinks|ikiwiki/wikilink]] and images, two features not present in the older
 [org-mode]: http://orgmode.org/
 [MS]: http://www.golden-gryphon.com/blog/manoj/blog/2008/06/08/Using_org-mode_with_Ikiwiki/
-[example]: http://www.physics.drexel.edu/~wking/unfolding-disasters/posts/Git/notes/
+[example]: http://blog.tremily.us/posts/Git/notes/
 [raw]: http://orgmode.org/manual/Quoting-HTML-tags.html
+[chrismgray-rewrite]: https://github.com/chrismgray/ikiwiki-org-plugin
index 209ec5435543f718fa018587f645949f0cece758..748444a2f3801055b5559c2dc47beb30e1f9cf4d 100644 (file)
@@ -100,6 +100,10 @@ however, to add ' or internal()' to `boring`, for some reason.
 >>>> for this patch. I personally like special pages like Kathryn is doing
 >>>> more than complex setup files. --[[Joey]]
+>>>>> I've ran out of time to keep working on this, so I'm just going to
+>>>>> submit it as a 'contrib' plugin and leave things at that for now.
+>>>>> — [[Jon]]
 Based on the above, I have written an experimental plugin called "subset".
@@ -162,3 +166,4 @@ Unfortunately I haven't figured out how to do the dependencies - I'd really appr
 >>>>> I'm a bit confused by your statement "having the aliases/subsets/"things" work in any pagespec (inside map, or inline) is a deal-breaker for me".
 >>>>> Do you mean that you want them to work in any pagespec, or that you *don't* want them to work in any pagespec? -- [[KathrynAndersen]]
+>>>>>> I mean I would want them to work in any pagespec. — [[Jon]]
index 1a1411093c114d6e9186d6e32d1428c2bfe3d300..29c89e4eba8ee13abd362f22d9ba4655bd13b27f 100644 (file)
@@ -4,3 +4,17 @@ Note that for example dokuwiki has a [[nice plugin|http://danjer.doudouke.org/te
 > I've actually written one, it's just not publicly released.  You can check it out from the "experimental" branch of my <a href="https://github.com/rubykat/ikiplugins">ikiplugins githup repo</a>.  It's called "html2pdf" and it depends on the static version of <a href="http://code.google.com/p/wkhtmltopdf/">wkhtmltopdf</a> rather than requiring a whole LaTeX setup. It's only been used on Ubuntu, so I can't say what problems there might be on other setups, but it works for me.  It's not properly documented; I'd appreciate some help with that.
 > -- [[KathrynAndersen]]
+>> Thanks, I downloaded the git-repro and did `sudo cp html2pdf.pm /usr/share/perl5/IkiWiki/Plugin/` then I added html2pdf to the addplugins line in my setup-file (`mywiki.setup`) as well a new line `html2pdf_pages=>"/*",`. Then I did `sudo ikiwiki --setup mywiki.setup`. However there is no button or something like that which let's me create the pdf's
+>> -- [[micheal]]
+>>> That is because they are created automatically as part of the page-build process.  That's what the "html2pdf_pages" option is for: it defines which pages have PDFs generated from them.  If a PDF is generated for page "foo", then the PDF itself will be in "foo/foo.pdf".
+>>> I also notice you didn't mention installing wkhtmltopdf - it won't create PDFs without that!
+>>> -- [[KathrynAndersen]]
+>>>> Yes, wkhtmltopdf is installed and works, however there are no pdf-files in my /var/www/myiki directory or in scrdir. 
+>>>>> Have you tried running it with "verbose" turned on, and noting the output?  That could give some clues.
+>>>>> And no, the PDFs are not placed in the source dir, only in the destination dir.
+>>>>> -- [[KathrynAndersen]]
index 48ed744b165c045aee15635de6465ea05f9ef648..e48765b0e14802bcef48b8dc33e7ce82607c569a 100644 (file)
@@ -62,8 +62,4 @@ Some other things to be scared about:
   a bunch of haskell libraries. OTOH, it might be possible to build a
   static binary at home and upload it, thus avoiding a messy installation
   procedure entirely.
-* I can barely code in haskell yet. I'm probably about 100x faster at
-  programming in perl. I need to get some more practical experience before
-  I´m fast and seasoned enough in haskell to attempt such a project.
-  (And so far, progress at learning has been slow and I have not managed
-  to write anything serious in haskell.) --[[Joey]] 
+  --[[Joey]] 
index 1edebe4e8f01556e4381515499647571de5afcce..b6495194a4ab736565acee8b3464ad508c04ae09 10064