aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Bundle/IkiWiki.pm4
-rw-r--r--IkiWiki.pm50
-rw-r--r--IkiWiki/Plugin/attachment.pm2
-rw-r--r--IkiWiki/Plugin/calendar.pm15
-rw-r--r--[-rwxr-xr-x]IkiWiki/Plugin/comments.pm3
-rw-r--r--IkiWiki/Plugin/cvs.pm168
-rw-r--r--IkiWiki/Plugin/editpage.pm2
-rw-r--r--IkiWiki/Plugin/graphviz.pm114
-rw-r--r--IkiWiki/Plugin/highlight.pm2
-rw-r--r--IkiWiki/Plugin/img.pm8
-rw-r--r--IkiWiki/Plugin/mdwn.pm26
-rw-r--r--IkiWiki/Plugin/recentchangesdiff.pm12
-rw-r--r--IkiWiki/Plugin/tag.pm2
-rw-r--r--IkiWiki/Receive.pm9
-rw-r--r--IkiWiki/Setup/Standard.pm5
-rw-r--r--IkiWiki/Setup/Yaml.pm12
-rwxr-xr-xMakefile.PL42
-rw-r--r--debian/changelog59
-rw-r--r--debian/control11
-rw-r--r--debian/copyright18
-rw-r--r--doc/bugs/Broken_access_to_Ikiwiki_gitweb.mdwn6
-rw-r--r--doc/bugs/Encoding_problem_in_calendar_plugin.mdwn73
-rw-r--r--doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn3
-rw-r--r--doc/bugs/Running_on_an_alternative_port_fails.mdwn93
-rw-r--r--doc/bugs/Sub-Discussion_pages_have_a_broken___34__FormattingHelp__34___link.mdwn3
-rw-r--r--doc/bugs/UTF-8_in_attachment_filenames.mdwn25
-rw-r--r--doc/bugs/W3MMode_still_uses_http:__47____47__localhost__63__.mdwn24
-rw-r--r--doc/bugs/attachment:_failed_to_get_filehandle.mdwn4
-rw-r--r--doc/bugs/backlink__40__.__41___doesn__39__t_work.mdwn57
-rw-r--r--doc/bugs/blogspam__95__options_whitelist_vs._IPv6__63__.mdwn4
-rw-r--r--doc/bugs/bzr-update-syntax-error.mdwn2
-rw-r--r--doc/bugs/complex_wiki-code___40__braces__41___in_wikilink-text_breaks_wikilinks.mdwn2
-rw-r--r--doc/bugs/conditional_preprocess_during_scan.mdwn22
-rw-r--r--doc/bugs/http_proxy_for_openid.mdwn6
-rw-r--r--doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn34
-rw-r--r--doc/bugs/img_vs_align.mdwn2
-rw-r--r--doc/bugs/must_save_before_uploading_more_than_one_attachment.mdwn7
-rw-r--r--doc/bugs/octal_umask_setting_is_unintuitive.mdwn55
-rw-r--r--doc/bugs/pagespec_error_on_refresh_but_not_rebuild.mdwn2
-rw-r--r--doc/bugs/resized_img_with_only_width_or_height_breaks_ie.mdwn9
-rw-r--r--doc/examples.mdwn2
-rw-r--r--doc/examples/blog/posts/Discussion.mdwn1
-rw-r--r--doc/forum.mdwn1
-rw-r--r--doc/forum/Are_these_revisions_legit_or_accidentally_committed_jiberish__63__.mdwn12
-rw-r--r--doc/forum/Are_these_revisions_legit_or_accidentally_committed_jiberish__63__/comment_1_b425823f800fba82ad2aaaa0dbe6686a._comment10
-rw-r--r--doc/forum/Broken_after_upgrading_Ikiwiki.mdwn10
-rw-r--r--doc/forum/Broken_after_upgrading_Ikiwiki/comment_1_3d0588a845c58b3aedc35970e8dcc811._comment14
-rw-r--r--doc/forum/Broken_after_upgrading_Ikiwiki/comment_2_fd65d4b87a735b67543bb0cf4053b652._comment10
-rw-r--r--doc/forum/Broken_after_upgrading_Ikiwiki/comment_3_7c8b46eabdb25cbc01c56c7b53ed3b91._comment8
-rw-r--r--doc/forum/Calendar:_listing_multiple_entries_per_day.mdwn17
-rw-r--r--doc/forum/Calendar:_listing_multiple_entries_per_day/comment_1_d3dd0b97c63d615e3dee22ceacaa5a30._comment83
-rw-r--r--doc/forum/Calendar:_listing_multiple_entries_per_day/comment_2_2311b96483bb91dc25d5e3695bbca513._comment12
-rw-r--r--doc/forum/Calendar:_listing_multiple_entries_per_day/comment_3_d23f0cedd0b9e937eaf200eef55ac457._comment166
-rw-r--r--doc/forum/Can_I_have_different_favicons_for_each_folder__63__.mdwn1
-rw-r--r--doc/forum/Can_I_have_different_favicons_for_each_folder__63__/comment_1_a01112ba235e2f44a7655c36ef680e7e._comment19
-rw-r--r--doc/forum/Can_Ikiwiki_recognize_multimarkdown_meta_tags__63__.mdwn4
-rw-r--r--doc/forum/Can__39__t_login_using_Google__44___or_openID__44___but_can_use_Ikiwiki_login.mdwn5
-rw-r--r--doc/forum/Can__39__t_login_using_Google__44___or_openID__44___but_can_use_Ikiwiki_login/comment_1_79127e3c09a1d798146088dee5a67708._comment10
-rw-r--r--doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__.mdwn7
-rw-r--r--doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_1_5e916c8fa90470909064ea73531f79d4._comment12
-rw-r--r--doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_2_2fa15f0eaf8c860b82e366130c8563c7._comment8
-rw-r--r--doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_3_c5af589dcdfe4f91dba50243762065e5._comment12
-rw-r--r--doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_4_3090da7bafbf92a825edec8ffc45af20._comment12
-rw-r--r--doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit.mdwn24
-rw-r--r--doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit/comment_1_ac6bda46ad00bfe980bc76c4a39aa796._comment9
-rw-r--r--doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit/comment_3_10a46f8ee23c8935e20c70842671cee4._comment13
-rw-r--r--doc/forum/Disable_account_creation_for_new_users.mdwn9
-rw-r--r--doc/forum/Disable_account_creation_for_new_users/comment_1_adafddb0aff7c2c1f4574101c4cf9073._comment8
-rw-r--r--doc/forum/Disable_account_creation_for_new_users/comment_2_865591f77966f1657a9a4b2426318c51._comment12
-rw-r--r--doc/forum/Disable_account_creation_for_new_users/comment_3_05193e563682f634f13691ee0a8359db._comment8
-rw-r--r--doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn20
-rw-r--r--doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_.mdwn5
-rw-r--r--doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_/comment_1_64146f306ec8c10614521359b6de4f82._comment10
-rw-r--r--doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_/comment_2_ed2b4b8f7122b42bbde1189fbd2969dd._comment23
-rw-r--r--doc/forum/Help_with_tag__95__autocreate.mdwn9
-rw-r--r--doc/forum/How_to_allow_.markdown_and_.md_at_the_same_time_as_valid_extensions_for_source_files__63__.mdwn1
-rw-r--r--doc/forum/How_to_change_registration_page.mdwn9
-rw-r--r--doc/forum/How_to_change_registration_page/comment_1_43758a232e4360561bc84f710862ff40._comment14
-rw-r--r--doc/forum/How_to_configure_po_plugin__63__.mdwn21
-rw-r--r--doc/forum/How_to_configure_po_plugin__63__/comment_1_5e0cc4cdfd126f2f4af64104f02102d6._comment9
-rw-r--r--doc/forum/How_to_create_first_translation_page_using_po_plugin__63__.mdwn24
-rw-r--r--doc/forum/How_to_use___126____47__bin__47__multimarkdown_instead_of_Text::MultiMarkdown.mdwn5
-rw-r--r--doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__.mdwn14
-rw-r--r--doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_1_a66fd9d7ab4359784a5420cd899a1057._comment8
-rw-r--r--doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_2_3351ff773fea3f640f4036bb8c7c7efd._comment10
-rw-r--r--doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_3_273b2b63a9af2bc4eeb030e026436687._comment12
-rw-r--r--doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_4_546771c13ea1b550301586e187d82cb5._comment8
-rw-r--r--doc/forum/Last_visited_pages.mdwn1
-rw-r--r--doc/forum/Last_visited_pages/comment_1_e34650064dd645b35da98e80c0311df9._comment8
-rw-r--r--doc/forum/Last_visited_pages/comment_2_2a0c4e844da1deaa2c286e87c8eab84d._comment8
-rw-r--r--doc/forum/Let__39__s_just_rely_on_backlinks_for_this__63__.mdwn3
-rw-r--r--doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated.mdwn27
-rw-r--r--doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_2_b44a492c7f10395a31f3c0830ef33f0c._comment10
-rw-r--r--doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_2_f9240b217b2d1ee8d51dada9cb1186b3._comment28
-rw-r--r--doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_3_c3c5c41a4c220793c6d16f3fd6132272._comment15
-rw-r--r--doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_4_1f6f9e3939a454c1eb8d2fb29bd519de._comment16
-rw-r--r--doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_5_8611fc62797e70a0d2a61d94fcb03170._comment22
-rw-r--r--doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__/comment_1_e5ce524c5d34b1d4218172296bd99100._comment8
-rw-r--r--doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__/comment_3_65c4a4895f6541ff0ff2d094ff447bba._comment8
-rw-r--r--doc/forum/Need_some_help_on_starting_to_use_po_plugin_for_creating_pages_in_multiple_languages.mdwn6
-rw-r--r--doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__.mdwn12
-rw-r--r--doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_bf1bec748d6ab419276a73a7001024cf._comment8
-rw-r--r--doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_2_14a1b269be6dbcc9b2068d3e18b55711._comment10
-rw-r--r--doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog.mdwn7
-rw-r--r--doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog/comment_1_45ecaf6efa2065837fa54a42737f0a66._comment18
-rw-r--r--doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog/comment_2_45ca7ef4190c281d703c8c7ca6979298._comment12
-rw-r--r--doc/forum/Recent_changes_on_main_site_or_on_a_sidebar.mdwn1
-rw-r--r--doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_1_018b977ff7ee59fc53838e0c20c3a9a7._comment11
-rw-r--r--doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment8
-rw-r--r--doc/forum/Run_script_on_markdown_source.mdwn1
-rw-r--r--doc/forum/Should_files_in_.ikiwiki_be_committed_and_pushed__63__.mdwn14
-rw-r--r--doc/forum/Should_files_in_.ikiwiki_be_committed_and_pushed__63__/comment_1_8e65d7d8298e3c31d2a16446a71c8049._comment10
-rw-r--r--doc/forum/Split_a_wiki.mdwn21
-rw-r--r--doc/forum/Split_a_wiki/comment_1_1599c26891b2071a2f1ca3fd90627fc4._comment8
-rw-r--r--doc/forum/Split_a_wiki/comment_2_1c54d3594f0350340f8dfb3e95c29ffd._comment20
-rw-r--r--doc/forum/Split_a_wiki/comment_3_9eac1d1b93df27d849acc574b1f0f26d._comment8
-rw-r--r--doc/forum/Split_a_wiki/comment_4_e193ba447c0188f72ba589180b5d529e._comment8
-rw-r--r--doc/forum/Xapian_search:_empty_postlist_table.mdwn34
-rw-r--r--doc/forum/Xapian_search:_empty_postlist_table/comment_1_de9a7c94beec2707eda0924ca58be9df._comment8
-rw-r--r--doc/forum/Xapian_search:_empty_postlist_table/comment_2_55f191e4b1306a318a30319f01802229._comment15
-rw-r--r--doc/forum/Xapian_search:_empty_postlist_table/comment_3_0bd424a89c3a52ff393a1e7e00c806be._comment24
-rw-r--r--doc/forum/ikiwiki_generates_html_files_with_600_permission..mdwn8
-rw-r--r--doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_1_6d73d412a9cc6f6ae426b62885c1f157._comment19
-rw-r--r--doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_2_1392fcde369d11a264f31f6b8993ccec._comment8
-rw-r--r--doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_3_962306f22ceb17afb4150e766e9a05b3._comment10
-rw-r--r--doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_4_8b988d85cfde123798238d0348764c79._comment22
-rw-r--r--doc/forum/index_attachments.mdwn9
-rw-r--r--doc/forum/index_attachments/comment_1_18b9531d273292b45051eef6a306ca26._comment10
-rw-r--r--doc/forum/index_attachments/comment_2._comment31
-rw-r--r--doc/forum/index_attachments/comment_3_050e5847641a27e0c14232632f3e700a._comment10
-rw-r--r--doc/forum/index_attachments/comment_4._comment10
-rw-r--r--doc/forum/pandoc-iki_plugin.mdwn2
-rw-r--r--doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn20
-rw-r--r--doc/forum/w3mmode___91__Save_Page__93___results_in_403.mdwn9
-rw-r--r--doc/git.mdwn1
-rw-r--r--doc/ikiwiki/directive/graph.mdwn19
-rw-r--r--doc/ikiwiki/directive/meta.mdwn9
-rw-r--r--doc/ikiwikiusers.mdwn31
-rw-r--r--doc/index.mdwn2
-rw-r--r--doc/install.mdwn3
-rw-r--r--doc/install/discussion.mdwn7
-rw-r--r--doc/news/version_3.20110711.mdwn7
-rw-r--r--doc/news/version_3.20110712.mdwn6
-rw-r--r--doc/news/version_3.20110715.mdwn5
-rw-r--r--doc/news/version_3.20110905.mdwn32
-rw-r--r--doc/news/version_3.20111107.mdwn12
-rw-r--r--doc/news/version_3.20111229.mdwn7
-rw-r--r--doc/news/version_3.20120109.mdwn9
-rw-r--r--doc/news/version_3.20120115.mdwn5
-rw-r--r--doc/plugins/contrib/album.mdwn178
-rw-r--r--doc/plugins/contrib/ikiwiki/directive/album.mdwn56
-rw-r--r--doc/plugins/contrib/ikiwiki/directive/albumimage.mdwn26
-rw-r--r--doc/plugins/contrib/ikiwiki/directive/albumsection.mdwn29
-rw-r--r--doc/plugins/contrib/ikiwiki/directive/jssearchfield.mdwn42
-rw-r--r--doc/plugins/contrib/ikiwiki/directive/trailinline.mdwn11
-rw-r--r--doc/plugins/contrib/ikiwiki/directive/trailitem.mdwn9
-rw-r--r--doc/plugins/contrib/ikiwiki/directive/trailitems.mdwn24
-rw-r--r--doc/plugins/contrib/ikiwiki/directive/traillink.mdwn16
-rw-r--r--doc/plugins/contrib/ikiwiki/directive/trailoptions.mdwn18
-rw-r--r--doc/plugins/contrib/jssearchfield.mdwn35
-rw-r--r--doc/plugins/contrib/mandoc.mdwn2
-rw-r--r--doc/plugins/contrib/mscgen.mdwn2
-rw-r--r--doc/plugins/contrib/newpage.mdwn29
-rw-r--r--doc/plugins/contrib/newpage/discussion.mdwn10
-rw-r--r--doc/plugins/contrib/pagespec_alias.mdwn28
-rw-r--r--doc/plugins/contrib/pandoc.mdwn2
-rw-r--r--doc/plugins/contrib/trail.mdwn162
-rw-r--r--doc/plugins/htmlscrubber.mdwn6
-rw-r--r--doc/plugins/mdwn.mdwn9
-rw-r--r--doc/plugins/theme.mdwn7
-rw-r--r--doc/plugins/wmd/discussion.mdwn12
-rw-r--r--doc/plugins/write.mdwn4
-rw-r--r--doc/rcs/cvs.mdwn42
-rw-r--r--doc/rcs/cvs/discussion.mdwn23
-rw-r--r--doc/sandbox.mdwn12
-rw-r--r--doc/sandbox/Test_it.mdwn1
-rw-r--r--doc/sandbox/sandbocen.mdwn5
-rw-r--r--doc/setup/discussion.mdwn2
-rw-r--r--doc/shortcuts.mdwn26
-rw-r--r--doc/shortcuts/discussion.mdwn10
-rw-r--r--doc/sitemap.mdwn5
-rw-r--r--doc/themes/discussion.mdwn1
-rw-r--r--doc/tips/Adding_Disqus_to_your_wiki/discussion.mdwn1
-rw-r--r--doc/tips/convert_mediawiki_to_ikiwiki.mdwn6
-rw-r--r--doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn2
-rw-r--r--doc/tips/laptop_wiki_with_git/discussion.mdwn3
-rw-r--r--doc/todo/Improve_markdown_speed.mdwn33
-rw-r--r--doc/todo/Modern_standard_layout.mdwn39
-rw-r--r--doc/todo/Pagination_next_prev_links.mdwn37
-rw-r--r--doc/todo/Render_multiple_destinations_from_one_source.mdwn50
-rw-r--r--doc/todo/Set_arbitrary_date_to_be_used_by_calendar_plugin.mdwn2
-rw-r--r--doc/todo/Split_plugins_with_external_dependencies_into_separate_Debian_packages.mdwn40
-rw-r--r--doc/todo/Support_MultiMarkdown_3.X.mdwn2
-rw-r--r--doc/todo/Wikilink_to_a_symbolic_link.mdwn5
-rw-r--r--doc/todo/allow_site-wide_meta_definitions.mdwn6
-rw-r--r--doc/todo/comment_moderation_feed.mdwn7
-rw-r--r--doc/todo/configurable_tidy_command_for_htmltidy.mdwn2
-rw-r--r--doc/todo/hyphenation.mdwn32
-rw-r--r--doc/todo/inline_raw_files.mdwn2
-rw-r--r--doc/todo/mdwn_itex.mdwn2
-rw-r--r--doc/todo/mdwn_preview/discussion.mdwn1
-rw-r--r--doc/todo/multi-thread_ikiwiki.mdwn81
-rw-r--r--doc/todo/natural_sorting.mdwn2
-rw-r--r--doc/todo/org_mode.mdwn13
-rw-r--r--doc/todo/pagespec_aliases.mdwn5
-rw-r--r--doc/todo/pdf_output.mdwn14
-rw-r--r--doc/todo/rewrite_ikiwiki_in_haskell.mdwn6
-rw-r--r--doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn43
-rw-r--r--doc/todo/sortbylastcomment_plugin.mdwn2
-rw-r--r--doc/todo/sorting_by_path.mdwn18
-rw-r--r--doc/todo/submodule_support.mdwn15
-rw-r--r--doc/todo/supporting_comments_via_disussion_pages.mdwn2
-rw-r--r--doc/todo/test_coverage.mdwn24
-rw-r--r--doc/todo/themes_should_ship_with_templates.mdwn19
-rw-r--r--doc/todo/websetup_should_link_to_plugin_descriptions.mdwn3
-rw-r--r--doc/todo/wikitrails.mdwn18
-rw-r--r--doc/todo/wikitrails/discussion.mdwn4
-rw-r--r--doc/todo/wmd_editor_live_preview.mdwn11
-rw-r--r--doc/usage.mdwn2
-rw-r--r--doc/users/Erkan_Yilmaz.mdwn2
-rw-r--r--doc/users/NeilSmithline.mdwn1
-rw-r--r--doc/users/fil.mdwn1
-rw-r--r--doc/users/jon.mdwn9
-rw-r--r--doc/users/pelle.mdwn1
-rw-r--r--doc/users/schmonz.mdwn11
-rw-r--r--doc/users/tjgolubi.mdwn (renamed from doc/users/Terry_Golubiewski.mdwn)1
-rw-r--r--doc/users/wtk.mdwn2
-rwxr-xr-xikiwiki-makerepo1
-rwxr-xr-xikiwiki.in6
-rw-r--r--ikiwiki.spec2
-rw-r--r--po/bg.po115
-rw-r--r--po/cs.po115
-rw-r--r--po/da.po115
-rw-r--r--po/de.po115
-rw-r--r--po/es.po115
-rw-r--r--po/fr.po115
-rw-r--r--po/gu.po115
-rw-r--r--po/ikiwiki.pot91
-rw-r--r--po/it.po115
-rw-r--r--po/pl.po115
-rw-r--r--po/sv.po115
-rw-r--r--po/tr.po115
-rw-r--r--po/vi.po115
-rwxr-xr-xt/cvs.t611
-rwxr-xr-xt/htmlize.t9
245 files changed, 4682 insertions, 1303 deletions
diff --git a/Bundle/IkiWiki.pm b/Bundle/IkiWiki.pm
index a82362317..005936250 100644
--- a/Bundle/IkiWiki.pm
+++ b/Bundle/IkiWiki.pm
@@ -16,7 +16,7 @@ perl -MCPAN -e 'install Bundle::IkiWiki'
=head1 CONTENTS
-Text::Markdown
+Text::Markdown::Discount
HTML::Scrubber
HTML::Template
HTML::Parser
@@ -28,7 +28,7 @@ CGI::Session
Mail::Sendmail
CGI
Data::Dumper
-YAML
+YAML::XS
JSON
RPC::XML
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 3d13cb106..2a83777e6 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -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 ($;$) {
$format=$config{timeformat};
}
+ 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;
}
diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm
index fd4096edf..5a180cd5c 100644
--- a/IkiWiki/Plugin/attachment.pm
+++ b/IkiWiki/Plugin/attachment.pm
@@ -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}."/".
linkpage(IkiWiki::possibly_foolish_untaint(
@@ -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;
diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
index c7d2b7c01..fc497b3c7 100644
--- a/IkiWiki/Plugin/calendar.pm
+++ b/IkiWiki/Plugin/calendar.pm
@@ -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);
diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
index 3ad2a0e13..91a482ed6 100755..100644
--- a/IkiWiki/Plugin/comments.pm
+++ b/IkiWiki/Plugin/comments.pm
@@ -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;
diff --git a/IkiWiki/Plugin/cvs.pm b/IkiWiki/Plugin/cvs.pm
index 71566d212..0a6cbfaf6 100644
--- a/IkiWiki/Plugin/cvs.pm
+++ b/IkiWiki/Plugin/cvs.pm
@@ -35,10 +35,14 @@ use IkiWiki;
use File::chdir;
+
+# GENERAL PLUGIN API CALLS
+
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);
- }
-EOF
-}
-
sub checkconfig () {
if (! defined $config{cvspath}) {
$config{cvspath}="ikiwiki";
@@ -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);
+ }
+EOF
}
-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;
-}
+# VCS PLUGIN API CALLS
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
}
+
+# INTERNAL SUPPORT ROUTINES
+
+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;
+}
+
1
diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm
index a5c29a352..54051c58c 100644
--- a/IkiWiki/Plugin/editpage.pm
+++ b/IkiWiki/Plugin/editpage.pm
@@ -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."/";
diff --git a/IkiWiki/Plugin/graphviz.pm b/IkiWiki/Plugin/graphviz.pm
index 4ed8b89f1..b9f997e04 100644
--- a/IkiWiki/Plugin/graphviz.pm
+++ b/IkiWiki/Plugin/graphviz.pm
@@ -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;
$SIG{PIPE}="DEFAULT";
- 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}};
diff --git a/IkiWiki/Plugin/highlight.pm b/IkiWiki/Plugin/highlight.pm
index 33d136fbf..4e86207f1 100644
--- a/IkiWiki/Plugin/highlight.pm
+++ b/IkiWiki/Plugin/highlight.pm
@@ -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();
$data_dir->searchDataDir("");
} else {
diff --git a/IkiWiki/Plugin/img.pm b/IkiWiki/Plugin/img.pm
index b98e843d4..b92e24cc0 100644
--- a/IkiWiki/Plugin/img.pm
+++ b/IkiWiki/Plugin/img.pm
@@ -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 {
diff --git a/IkiWiki/Plugin/mdwn.pm b/IkiWiki/Plugin/mdwn.pm
index b892eabee..430194bff 100644
--- a/IkiWiki/Plugin/mdwn.pm
+++ b/IkiWiki/Plugin/mdwn.pm
@@ -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 (! $@) {
diff --git a/IkiWiki/Plugin/recentchangesdiff.pm b/IkiWiki/Plugin/recentchangesdiff.pm
index 71297572d..418822793 100644
--- a/IkiWiki/Plugin/recentchangesdiff.pm
+++ b/IkiWiki/Plugin/recentchangesdiff.pm
@@ -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
diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm
index 096c92616..605f41599 100644
--- a/IkiWiki/Plugin/tag.pm
+++ b/IkiWiki/Plugin/tag.pm
@@ -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]);
}
}
diff --git a/IkiWiki/Receive.pm b/IkiWiki/Receive.pm
index c73adfbbb..5908e09f9 100644
--- a/IkiWiki/Receive.pm
+++ b/IkiWiki/Receive.pm
@@ -35,10 +35,17 @@ EOF
}
"u != $uid";
} @{$config{untrusted_committers}}).
- ") exit(0);\n";
+ ") {\n";
$ret.=<<"EOF";
+ /* 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);
newenviron[i++]=s;
}
diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm
index c85069304..ea7d763bb 100644
--- a/IkiWiki/Setup/Standard.pm
+++ b/IkiWiki/Setup/Standard.pm
@@ -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 {",
diff --git a/IkiWiki/Setup/Yaml.pm b/IkiWiki/Setup/Yaml.pm
index 6da93bb64..6bf20f480 100644
--- a/IkiWiki/Setup/Yaml.pm
+++ b/IkiWiki/Setup/Yaml.pm
@@ -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;
IkiWiki::Setup::merge(Load(encode_utf8($content)));
}
@@ -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));
diff --git a/Makefile.PL b/Makefile.PL
index b19636c60..69ba5e5ef 100755
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -19,11 +19,14 @@ SED?=sed
# Additional configurable path variables.
W3M_CGI_BIN?=$(PREFIX)/lib/w3m/cgi-bin
+SYSCONFDIR?=/etc/ikiwiki
+MANDIR?=$(PREFIX)/share/man
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
PROBABLE_INST_LIB=$(shell \\
if [ "$(INSTALLDIRS)" = "perl" ]; then \\
@@ -42,7 +45,7 @@ PROBABLE_INST_LIB=$(shell \\
ikiwiki.setup:
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
docwiki:
$(PERL) -Iblib/lib $(extramodules) $(tflag) ikiwiki.in -setup docwiki.setup -refresh
+sysconfdir:
+ $(PERL) -pi -e "s|/etc/ikiwiki|$(SYSCONFDIR)|g" $(sysconfdir_scripts)
+
extra_clean:
$(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; \
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 \
done
@@ -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; \
done
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; \
done
@@ -125,15 +131,15 @@ extra_install: underlay_install
install -m 755 $$file $(DESTDIR)$(PREFIX)/lib/ikiwiki/plugins; \
done
- 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.
diff --git a/debian/changelog b/debian/changelog
index f8de0d3e9..c8db76966 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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.
diff --git a/debian/control b/debian/control
index 03b3ea8b3..9403dfb44 100644
--- a/debian/control
+++ b/debian/control
@@ -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),
diff --git a/debian/copyright b/debian/copyright
index 72074d813..74418281d 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -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.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
diff --git a/doc/bugs/Broken_access_to_Ikiwiki_gitweb.mdwn b/doc/bugs/Broken_access_to_Ikiwiki_gitweb.mdwn
index fed6cd026..902e4086f 100644
--- a/doc/bugs/Broken_access_to_Ikiwiki_gitweb.mdwn
+++ b/doc/bugs/Broken_access_to_Ikiwiki_gitweb.mdwn
@@ -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
index 000000000..80e9f2c82
--- /dev/null
+++ b/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn
@@ -0,0 +1,73 @@
+Hello,
+
+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!
+
+Cheers,
+Louis
+
+> 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);
diff --git a/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn b/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn
index aeeb9e21b..eb95e9992 100644
--- a/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn
+++ b/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn
@@ -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
index 000000000..942700ba3
--- /dev/null
+++ b/doc/bugs/Running_on_an_alternative_port_fails.mdwn
@@ -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
+right.
+
+>>> 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
index 000000000..8f87329ae
--- /dev/null
+++ b/doc/bugs/Sub-Discussion_pages_have_a_broken___34__FormattingHelp__34___link.mdwn
@@ -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
index 000000000..07fff88d2
--- /dev/null
+++ b/doc/bugs/UTF-8_in_attachment_filenames.mdwn
@@ -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
index 000000000..3c28e379b
--- /dev/null
+++ b/doc/bugs/W3MMode_still_uses_http:__47____47__localhost__63__.mdwn
@@ -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]]
diff --git a/doc/bugs/attachment:_failed_to_get_filehandle.mdwn b/doc/bugs/attachment:_failed_to_get_filehandle.mdwn
index 54f31a925..acfc60078 100644
--- a/doc/bugs/attachment:_failed_to_get_filehandle.mdwn
+++ b/doc/bugs/attachment:_failed_to_get_filehandle.mdwn
@@ -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
index 000000000..534e5a01f
--- /dev/null
+++ b/doc/bugs/backlink__40__.__41___doesn__39__t_work.mdwn
@@ -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`
+page):
+
+ * 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
index 000000000..f3a39c02b
--- /dev/null
+++ b/doc/bugs/blogspam__95__options_whitelist_vs._IPv6__63__.mdwn
@@ -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:10.11.12.13</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]]
+
diff --git a/doc/bugs/bzr-update-syntax-error.mdwn b/doc/bugs/bzr-update-syntax-error.mdwn
index 800e5ebb2..bf715a29e 100644
--- a/doc/bugs/bzr-update-syntax-error.mdwn
+++ b/doc/bugs/bzr-update-syntax-error.mdwn
@@ -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");
diff --git a/doc/bugs/complex_wiki-code___40__braces__41___in_wikilink-text_breaks_wikilinks.mdwn b/doc/bugs/complex_wiki-code___40__braces__41___in_wikilink-text_breaks_wikilinks.mdwn
index 364fae394..780e695c2 100644
--- a/doc/bugs/complex_wiki-code___40__braces__41___in_wikilink-text_breaks_wikilinks.mdwn
+++ b/doc/bugs/complex_wiki-code___40__braces__41___in_wikilink-text_breaks_wikilinks.mdwn
@@ -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)):
+Example:
<pre>
[[`\[[!taglink TAG\]\]`|plugins/tag]]
</pre>
diff --git a/doc/bugs/conditional_preprocess_during_scan.mdwn b/doc/bugs/conditional_preprocess_during_scan.mdwn
index 254ebac22..23b9fd2cc 100644
--- a/doc/bugs/conditional_preprocess_during_scan.mdwn
+++ b/doc/bugs/conditional_preprocess_during_scan.mdwn
@@ -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
diff --git a/doc/bugs/http_proxy_for_openid.mdwn b/doc/bugs/http_proxy_for_openid.mdwn
index b7ae76aeb..566896ec3 100644
--- a/doc/bugs/http_proxy_for_openid.mdwn
+++ b/doc/bugs/http_proxy_for_openid.mdwn
@@ -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
index 000000000..1e74fe8db
--- /dev/null
+++ b/doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn
@@ -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]]
diff --git a/doc/bugs/img_vs_align.mdwn b/doc/bugs/img_vs_align.mdwn
index c78465a37..5eb4489b0 100644
--- a/doc/bugs/img_vs_align.mdwn
+++ b/doc/bugs/img_vs_align.mdwn
@@ -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]]
diff --git a/doc/bugs/must_save_before_uploading_more_than_one_attachment.mdwn b/doc/bugs/must_save_before_uploading_more_than_one_attachment.mdwn
index 66c763f58..20d5dc8e6 100644
--- a/doc/bugs/must_save_before_uploading_more_than_one_attachment.mdwn
+++ b/doc/bugs/must_save_before_uploading_more_than_one_attachment.mdwn
@@ -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
index 000000000..5cdefcf09
--- /dev/null
+++ b/doc/bugs/octal_umask_setting_is_unintuitive.mdwn
@@ -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
+[ikiwiki-hosting](http://ikiwiki-hosting.branchable.com/)
+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.
+
+--[[smcv]]
+
+> 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]]
diff --git a/doc/bugs/pagespec_error_on_refresh_but_not_rebuild.mdwn b/doc/bugs/pagespec_error_on_refresh_but_not_rebuild.mdwn
index e89545955..df941af37 100644
--- a/doc/bugs/pagespec_error_on_refresh_but_not_rebuild.mdwn
+++ b/doc/bugs/pagespec_error_on_refresh_but_not_rebuild.mdwn
@@ -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
index 000000000..a5a1c6768
--- /dev/null
+++ b/doc/bugs/resized_img_with_only_width_or_height_breaks_ie.mdwn
@@ -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]]
diff --git a/doc/examples.mdwn b/doc/examples.mdwn
index e24973b69..19631ad47 100644
--- a/doc/examples.mdwn
+++ b/doc/examples.mdwn
@@ -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
index f04a9558d..000000000
--- a/doc/examples/blog/posts/Discussion.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-foo bar.
diff --git a/doc/forum.mdwn b/doc/forum.mdwn
index 19ca9ed0b..62b62a401 100644
--- a/doc/forum.mdwn
+++ b/doc/forum.mdwn
@@ -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
index 000000000..ec9980c30
--- /dev/null
+++ b/doc/forum/Are_these_revisions_legit_or_accidentally_committed_jiberish__63__.mdwn
@@ -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
index 000000000..9326f73d5
--- /dev/null
+++ b/doc/forum/Are_these_revisions_legit_or_accidentally_committed_jiberish__63__/comment_1_b425823f800fba82ad2aaaa0dbe6686a._comment
@@ -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
index 000000000..aea5fdbd9
--- /dev/null
+++ b/doc/forum/Broken_after_upgrading_Ikiwiki.mdwn
@@ -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
index 000000000..93360d167
--- /dev/null
+++ b/doc/forum/Broken_after_upgrading_Ikiwiki/comment_1_3d0588a845c58b3aedc35970e8dcc811._comment
@@ -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
index 000000000..47fa4ae7b
--- /dev/null
+++ b/doc/forum/Broken_after_upgrading_Ikiwiki/comment_2_fd65d4b87a735b67543bb0cf4053b652._comment
@@ -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
index 000000000..72d38e76c
--- /dev/null
+++ b/doc/forum/Broken_after_upgrading_Ikiwiki/comment_3_7c8b46eabdb25cbc01c56c7b53ed3b91._comment
@@ -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
index 000000000..51c320067
--- /dev/null
+++ b/doc/forum/Calendar:_listing_multiple_entries_per_day.mdwn
@@ -0,0 +1,17 @@
+Hi,
+
+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.
+
+[[http://ikiwiki.info/todo/Set_arbitrary_date_to_be_used_by_calendar_plugin/]]
+
+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
index 000000000..ca287581a
--- /dev/null
+++ b/doc/forum/Calendar:_listing_multiple_entries_per_day/comment_1_d3dd0b97c63d615e3dee22ceacaa5a30._comment
@@ -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.
+
+<pre>
+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 {
+
+</pre>
+"""]]
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
index 000000000..ef100b555
--- /dev/null
+++ b/doc/forum/Calendar:_listing_multiple_entries_per_day/comment_2_2311b96483bb91dc25d5e3695bbca513._comment
@@ -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
index 000000000..2433967e5
--- /dev/null
+++ b/doc/forum/Calendar:_listing_multiple_entries_per_day/comment_3_d23f0cedd0b9e937eaf200eef55ac457._comment
@@ -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.
+
+<pre>
+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\"]]
+--
+1.7.7.3
+
+:
+
+</pre>
+"""]]
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
index 000000000..0fefb3560
--- /dev/null
+++ b/doc/forum/Can_I_have_different_favicons_for_each_folder__63__.mdwn
@@ -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
index 000000000..dee6e610e
--- /dev/null
+++ b/doc/forum/Can_I_have_different_favicons_for_each_folder__63__/comment_1_a01112ba235e2f44a7655c36ef680e7e._comment
@@ -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
index 000000000..3e5fc8bb5
--- /dev/null
+++ b/doc/forum/Can_Ikiwiki_recognize_multimarkdown_meta_tags__63__.mdwn
@@ -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
index 000000000..11d8c23a8
--- /dev/null
+++ b/doc/forum/Can__39__t_login_using_Google__44___or_openID__44___but_can_use_Ikiwiki_login.mdwn
@@ -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
index 000000000..41ff2fc36
--- /dev/null
+++ b/doc/forum/Can__39__t_login_using_Google__44___or_openID__44___but_can_use_Ikiwiki_login/comment_1_79127e3c09a1d798146088dee5a67708._comment
@@ -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
index 000000000..50b5ea900
--- /dev/null
+++ b/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__.mdwn
@@ -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)?
+
+Regards
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
index 000000000..e6d09b5ab
--- /dev/null
+++ b/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_1_5e916c8fa90470909064ea73531f79d4._comment
@@ -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
index 000000000..07955ac38
--- /dev/null
+++ b/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_2_2fa15f0eaf8c860b82e366130c8563c7._comment
@@ -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="""
+thanks
+"""]]
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
index 000000000..3ab401eb8
--- /dev/null
+++ b/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_3_c5af589dcdfe4f91dba50243762065e5._comment
@@ -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
index 000000000..569a73546
--- /dev/null
+++ b/doc/forum/Debian_squeeze_still_on_3.20100815.7_-_update_recommended__63__/comment_4_3090da7bafbf92a825edec8ffc45af20._comment
@@ -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
index 000000000..5440ddf73
--- /dev/null
+++ b/doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit.mdwn
@@ -0,0 +1,24 @@
+Hi,
+
+today I encountered a strange behaviour of ikiwiki that I'm trying to understand...
+
+I linked to a subpage using
+
+\[[somename|/path/from/root/dir/filename]]
+
+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,
+Chris
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
index 000000000..91e7d9e7a
--- /dev/null
+++ b/doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit/comment_1_ac6bda46ad00bfe980bc76c4a39aa796._comment
@@ -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\"
+thx
+"""]]
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
index 000000000..a14752ffe
--- /dev/null
+++ b/doc/forum/Different_behaviour_when_editing_with_editor_than_with_web-edit/comment_3_10a46f8ee23c8935e20c70842671cee4._comment
@@ -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
index 000000000..4a24323b3
--- /dev/null
+++ b/doc/forum/Disable_account_creation_for_new_users.mdwn
@@ -0,0 +1,9 @@
+Hi,
+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,
+Chris
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
index 000000000..116b2a592
--- /dev/null
+++ b/doc/forum/Disable_account_creation_for_new_users/comment_1_adafddb0aff7c2c1f4574101c4cf9073._comment
@@ -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
index 000000000..d04cfb6db
--- /dev/null
+++ b/doc/forum/Disable_account_creation_for_new_users/comment_2_865591f77966f1657a9a4b2426318c51._comment
@@ -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
+HTTPS.)
+"""]]
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
index 000000000..66b521407
--- /dev/null
+++ b/doc/forum/Disable_account_creation_for_new_users/comment_3_05193e563682f634f13691ee0a8359db._comment
@@ -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
index 000000000..472412de1
--- /dev/null
+++ b/doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn
@@ -0,0 +1,20 @@
+Hi!
+
+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?
+
+Thanks.
+
+Zut
+
+> 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
index 000000000..c6af80ab1
--- /dev/null
+++ b/doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_.mdwn
@@ -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
index 000000000..02f70860d
--- /dev/null
+++ b/doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_/comment_1_64146f306ec8c10614521359b6de4f82._comment
@@ -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
index 000000000..cc1a30adb
--- /dev/null
+++ b/doc/forum/Error:_cannot_write_to___47__home__47__user__47__myiki2__47__.ikiwiki__47__lockfile:_Permission_denied_/comment_2_ed2b4b8f7122b42bbde1189fbd2969dd._comment
@@ -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="""
+<code>
+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
+</code>
+
+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
index 000000000..f470c57cf
--- /dev/null
+++ b/doc/forum/Help_with_tag__95__autocreate.mdwn
@@ -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
index 000000000..d5f144957
--- /dev/null
+++ b/doc/forum/How_to_allow_.markdown_and_.md_at_the_same_time_as_valid_extensions_for_source_files__63__.mdwn
@@ -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
index 000000000..f339f71c4
--- /dev/null
+++ b/doc/forum/How_to_change_registration_page.mdwn
@@ -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
index 000000000..5edd993d7
--- /dev/null
+++ b/doc/forum/How_to_change_registration_page/comment_1_43758a232e4360561bc84f710862ff40._comment
@@ -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.
+
+<pre>
+ name => \"account_creation_password\",
+</pre>
+"""]]
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
index 000000000..a03358ddd
--- /dev/null
+++ b/doc/forum/How_to_configure_po_plugin__63__.mdwn
@@ -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
index 000000000..fc194b3e6
--- /dev/null
+++ b/doc/forum/How_to_configure_po_plugin__63__/comment_1_5e0cc4cdfd126f2f4af64104f02102d6._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="intrigeri"
+ ip="88.80.28.70"
+ 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
index 000000000..e9dd6654b
--- /dev/null
+++ b/doc/forum/How_to_create_first_translation_page_using_po_plugin__63__.mdwn
@@ -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
index 000000000..5dadb600d
--- /dev/null
+++ b/doc/forum/How_to_use___126____47__bin__47__multimarkdown_instead_of_Text::MultiMarkdown.mdwn
@@ -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
index 000000000..e23d3fddf
--- /dev/null
+++ b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__.mdwn
@@ -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
index 000000000..20fd763e2
--- /dev/null
+++ b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_1_a66fd9d7ab4359784a5420cd899a1057._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://kerravonsen.dreamwidth.org/"
+ ip="202.173.183.92"
+ 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
index 000000000..b83042c36
--- /dev/null
+++ b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_2_3351ff773fea3f640f4036bb8c7c7efd._comment
@@ -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
index 000000000..e5eaf2c4c
--- /dev/null
+++ b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_3_273b2b63a9af2bc4eeb030e026436687._comment
@@ -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
index 000000000..472417457
--- /dev/null
+++ b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_4_546771c13ea1b550301586e187d82cb5._comment
@@ -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="""
+why?
+"""]]
diff --git a/doc/forum/Last_visited_pages.mdwn b/doc/forum/Last_visited_pages.mdwn
new file mode 100644
index 000000000..ae87cf177
--- /dev/null
+++ b/doc/forum/Last_visited_pages.mdwn
@@ -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
index 000000000..c5e2cc8ad
--- /dev/null
+++ b/doc/forum/Last_visited_pages/comment_1_e34650064dd645b35da98e80c0311df9._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://kerravonsen.dreamwidth.org/"
+ ip="202.173.183.92"
+ 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
index 000000000..c5e90752d
--- /dev/null
+++ b/doc/forum/Last_visited_pages/comment_2_2a0c4e844da1deaa2c286e87c8eab84d._comment
@@ -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
index 35940cf33..000000000
--- a/doc/forum/Let__39__s_just_rely_on_backlinks_for_this__63__.mdwn
+++ /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
index 000000000..b659212b6
--- /dev/null
+++ b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated.mdwn
@@ -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
index 000000000..576d11f0b
--- /dev/null
+++ b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_2_b44a492c7f10395a31f3c0830ef33f0c._comment
@@ -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
index 000000000..635aa9340
--- /dev/null
+++ b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_2_f9240b217b2d1ee8d51dada9cb1186b3._comment
@@ -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
index 000000000..f845f130f
--- /dev/null
+++ b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_3_c3c5c41a4c220793c6d16f3fd6132272._comment
@@ -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
index 000000000..1a5a91466
--- /dev/null
+++ b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_4_1f6f9e3939a454c1eb8d2fb29bd519de._comment
@@ -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
index 000000000..137c198cc
--- /dev/null
+++ b/doc/forum/Migrated_ikiwiki_to_new_host._Web_page_is_not_updated/comment_5_8611fc62797e70a0d2a61d94fcb03170._comment
@@ -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
index 000000000..78703bc27
--- /dev/null
+++ b/doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__/comment_1_e5ce524c5d34b1d4218172296bd99100._comment
@@ -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
index 000000000..a9bb2791a
--- /dev/null
+++ b/doc/forum/Migrating_old_repository_to_new_ikiwiki_system__63__/comment_3_65c4a4895f6541ff0ff2d094ff447bba._comment
@@ -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
index 000000000..5e4e56fde
--- /dev/null
+++ b/doc/forum/Need_some_help_on_starting_to_use_po_plugin_for_creating_pages_in_multiple_languages.mdwn
@@ -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
index 000000000..e58844bac
--- /dev/null
+++ b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__.mdwn
@@ -0,0 +1,12 @@
+Hi,
+
+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
+chris
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
index 000000000..06d2a332b
--- /dev/null
+++ b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_bf1bec748d6ab419276a73a7001024cf._comment
@@ -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
index 000000000..3078a1473
--- /dev/null
+++ b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_2_14a1b269be6dbcc9b2068d3e18b55711._comment
@@ -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
index 000000000..383ae17cc
--- /dev/null
+++ b/doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog.mdwn
@@ -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
index 000000000..4d2c93238
--- /dev/null
+++ b/doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog/comment_1_45ecaf6efa2065837fa54a42737f0a66._comment
@@ -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
+plugins).
+
+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
index 000000000..ecb6f5df9
--- /dev/null
+++ b/doc/forum/Perhaps_I__39__m_doing_it_wrong_-_tracking_non-post_files_in_a_blog/comment_2_45ca7ef4190c281d703c8c7ca6979298._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="dave"
+ ip="24.209.97.191"
+ 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
index 000000000..0c328a9f1
--- /dev/null
+++ b/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar.mdwn
@@ -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
index 000000000..1bc0cc509
--- /dev/null
+++ b/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_1_018b977ff7ee59fc53838e0c20c3a9a7._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="jean_magnan"
+ ip="81.56.145.104"
+ subject="comment 1"
+ date="2011-12-19T10:20:59Z"
+ content="""
+Hi,
+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
index 000000000..2b6237bc4
--- /dev/null
+++ b/doc/forum/Recent_changes_on_main_site_or_on_a_sidebar/comment_2_927c11f18315baa39f08ca4982ed2ab1._comment
@@ -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
index 000000000..614815c9b
--- /dev/null
+++ b/doc/forum/Run_script_on_markdown_source.mdwn
@@ -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
index 000000000..f5b1d58d1
--- /dev/null
+++ b/doc/forum/Should_files_in_.ikiwiki_be_committed_and_pushed__63__.mdwn
@@ -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
index 000000000..43e7a0068
--- /dev/null
+++ b/doc/forum/Should_files_in_.ikiwiki_be_committed_and_pushed__63__/comment_1_8e65d7d8298e3c31d2a16446a71c8049._comment
@@ -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
index 000000000..f1c7e50da
--- /dev/null
+++ b/doc/forum/Split_a_wiki.mdwn
@@ -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
+
+pageA1,pageA2,...,pageB1,pageB2,...
+
+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,...
+
+and
+
+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
index 000000000..66401914a
--- /dev/null
+++ b/doc/forum/Split_a_wiki/comment_1_1599c26891b2071a2f1ca3fd90627fc4._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://kerravonsen.dreamwidth.org/"
+ ip="202.173.183.92"
+ 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
index 000000000..8040ad5e2
--- /dev/null
+++ b/doc/forum/Split_a_wiki/comment_2_1c54d3594f0350340f8dfb3e95c29ffd._comment
@@ -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
index 000000000..e2dbd2546
--- /dev/null
+++ b/doc/forum/Split_a_wiki/comment_3_9eac1d1b93df27d849acc574b1f0f26d._comment
@@ -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
index 000000000..450529697
--- /dev/null
+++ b/doc/forum/Split_a_wiki/comment_4_e193ba447c0188f72ba589180b5d529e._comment
@@ -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
index 000000000..704f017ca
--- /dev/null
+++ b/doc/forum/Xapian_search:_empty_postlist_table.mdwn
@@ -0,0 +1,34 @@
+Hi,
+
+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.
+
+<pre>
+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:
+mexon:~/Test/.ikiwiki/xapian/default$
+</pre>
+
+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
+troubleshooting?
+
+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
index 000000000..23e539f06
--- /dev/null
+++ b/doc/forum/Xapian_search:_empty_postlist_table/comment_1_de9a7c94beec2707eda0924ca58be9df._comment
@@ -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; 1.2.7.0 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
index 000000000..41cdf3d4a
--- /dev/null
+++ b/doc/forum/Xapian_search:_empty_postlist_table/comment_2_55f191e4b1306a318a30319f01802229._comment
@@ -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:
+
+<pre>
+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
+</pre>
+
+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
index 000000000..05f9c874e
--- /dev/null
+++ b/doc/forum/Xapian_search:_empty_postlist_table/comment_3_0bd424a89c3a52ff393a1e7e00c806be._comment
@@ -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 1.2.8.0, 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:
+
+<pre>
+mexon:~/ikiwiki-temp/Search-Xapian-1.2.8.0$ make test
+PERL_DL_NONLAZY=1 /usr/bin/perl \"-MExtUtils::Command::MM\" \"-e\" \"test_harness(0, 'blib/lib', 'blib/arch')\" t/*.t
+t/01use...............
+# 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-1.2.8.0/blib/arch/auto/Search/Xapian/Xapian.so' 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.
+</pre>
+
+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
index 000000000..70383372b
--- /dev/null
+++ b/doc/forum/ikiwiki_generates_html_files_with_600_permission..mdwn
@@ -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
index 000000000..7008a05ac
--- /dev/null
+++ b/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_1_6d73d412a9cc6f6ae426b62885c1f157._comment
@@ -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
index 000000000..7e0818ce6
--- /dev/null
+++ b/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_2_1392fcde369d11a264f31f6b8993ccec._comment
@@ -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
index 000000000..6ed955061
--- /dev/null
+++ b/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_3_962306f22ceb17afb4150e766e9a05b3._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="ikiwikert"
+ ip="134.99.22.236"
+ 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
index 000000000..838b13756
--- /dev/null
+++ b/doc/forum/ikiwiki_generates_html_files_with_600_permission./comment_4_8b988d85cfde123798238d0348764c79._comment
@@ -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
index 000000000..8167a60f8
--- /dev/null
+++ b/doc/forum/index_attachments.mdwn
@@ -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.
+
+--[[jerojasro]]
diff --git a/doc/forum/index_attachments/comment_1_18b9531d273292b45051eef6a306ca26._comment b/doc/forum/index_attachments/comment_1_18b9531d273292b45051eef6a306ca26._comment
new file mode 100644
index 000000000..056c4139a
--- /dev/null
+++ b/doc/forum/index_attachments/comment_1_18b9531d273292b45051eef6a306ca26._comment
@@ -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
index 000000000..a7eec29cb
--- /dev/null
+++ b/doc/forum/index_attachments/comment_2._comment
@@ -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
index 000000000..b589ae823
--- /dev/null
+++ b/doc/forum/index_attachments/comment_3_050e5847641a27e0c14232632f3e700a._comment
@@ -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
index 000000000..1a2726290
--- /dev/null
+++ b/doc/forum/index_attachments/comment_4._comment
@@ -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)
+"""]]
diff --git a/doc/forum/pandoc-iki_plugin.mdwn b/doc/forum/pandoc-iki_plugin.mdwn
index 6a25fd723..b9cc6b3d2 100644
--- a/doc/forum/pandoc-iki_plugin.mdwn
+++ b/doc/forum/pandoc-iki_plugin.mdwn
@@ -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
index 000000000..8293b098f
--- /dev/null
+++ b/doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn
@@ -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.
+
+--[[KathrynAndersen]]
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
index 000000000..6c7a59b62
--- /dev/null
+++ b/doc/forum/w3mmode___91__Save_Page__93___results_in_403.mdwn
@@ -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]]
diff --git a/doc/git.mdwn b/doc/git.mdwn
index eb3cc439b..2e58c6992 100644
--- a/doc/git.mdwn
+++ b/doc/git.mdwn
@@ -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
diff --git a/doc/ikiwiki/directive/graph.mdwn b/doc/ikiwiki/directive/graph.mdwn
index 433187268..8b066c2f2 100644
--- a/doc/ikiwiki/directive/graph.mdwn
+++ b/doc/ikiwiki/directive/graph.mdwn
@@ -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
-page.
+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:
diff --git a/doc/ikiwiki/directive/meta.mdwn b/doc/ikiwiki/directive/meta.mdwn
index 6b381f138..72cfc6f56 100644
--- a/doc/ikiwiki/directive/meta.mdwn
+++ b/doc/ikiwiki/directive/meta.mdwn
@@ -109,7 +109,7 @@ Supported fields:
\[[!meta openid="http://joeyh.myopenid.com/"
server="http://www.myopenid.com/server"
- 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
guid.
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
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index e9853129c..96b94a163 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -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.
diff --git a/doc/index.mdwn b/doc/index.mdwn
index ddf1ecd84..4c22ce0e0 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -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
discussions.
-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 ]].
diff --git a/doc/install.mdwn b/doc/install.mdwn
index f38ae2aab..9c5d5939b 100644
--- a/doc/install.mdwn
+++ b/doc/install.mdwn
@@ -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
wrappers.
-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.
diff --git a/doc/install/discussion.mdwn b/doc/install/discussion.mdwn
index b4ec5ebf4..b27cc4bac 100644
--- a/doc/install/discussion.mdwn
+++ b/doc/install/discussion.mdwn
@@ -349,3 +349,10 @@ I've attempted to mergeably patch these in my git, commit
5c177c96ac98b24aaa0613ca241fb113f1b32c55.
--[[schmonz]]
+
+-----
+
+[[!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
index c4006cbe7..000000000
--- a/doc/news/version_3.20110711.mdwn
+++ /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
index 8744d688d..000000000
--- a/doc/news/version_3.20110712.mdwn
+++ /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
index da291dafb..000000000
--- a/doc/news/version_3.20110715.mdwn
+++ /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
index bff02c3af..000000000
--- a/doc/news/version_3.20110905.mdwn
+++ /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
index 000000000..5af8ae647
--- /dev/null
+++ b/doc/news/version_3.20111107.mdwn
@@ -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
index 000000000..18c4f8d12
--- /dev/null
+++ b/doc/news/version_3.20111229.mdwn
@@ -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
index 000000000..de53c5d67
--- /dev/null
+++ b/doc/news/version_3.20120109.mdwn
@@ -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
index 000000000..ba665c666
--- /dev/null
+++ b/doc/news/version_3.20120115.mdwn
@@ -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
diff --git a/doc/plugins/contrib/album.mdwn b/doc/plugins/contrib/album.mdwn
index 8dfbbf716..836a98f33 100644
--- a/doc/plugins/contrib/album.mdwn
+++ b/doc/plugins/contrib/album.mdwn
@@ -1,144 +1,118 @@
[[!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]]
+directives.
-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
+recommended.
-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
-[[plugins/comments]].
-
-(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`
+template:
-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
-this:
+----
- # 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
automatically.
-* 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
index 000000000..433eec8bd
--- /dev/null
+++ b/doc/plugins/contrib/ikiwiki/directive/album.mdwn
@@ -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
index 000000000..2385bb535
--- /dev/null
+++ b/doc/plugins/contrib/ikiwiki/directive/albumimage.mdwn
@@ -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
index 000000000..7e5749e05
--- /dev/null
+++ b/doc/plugins/contrib/ikiwiki/directive/albumsection.mdwn
@@ -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
+this:
+
+ # 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
index 000000000..5d338901d
--- /dev/null
+++ b/doc/plugins/contrib/ikiwiki/directive/jssearchfield.mdwn
@@ -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"
+parameter.
+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.
+
+## OPTIONS
+
+**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.
+
+## SEARCHING
+
+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
index 000000000..91d8a4edf
--- /dev/null
+++ b/doc/plugins/contrib/ikiwiki/directive/trailinline.mdwn
@@ -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
index 000000000..73b1985a5
--- /dev/null
+++ b/doc/plugins/contrib/ikiwiki/directive/trailitem.mdwn
@@ -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
index 000000000..4106ed33b
--- /dev/null
+++ b/doc/plugins/contrib/ikiwiki/directive/trailitems.mdwn
@@ -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
index 000000000..0e40e2411
--- /dev/null
+++ b/doc/plugins/contrib/ikiwiki/directive/traillink.mdwn
@@ -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
index 000000000..e1603f11b
--- /dev/null
+++ b/doc/plugins/contrib/ikiwiki/directive/trailoptions.mdwn
@@ -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
index 000000000..2d41ee24f
--- /dev/null
+++ b/doc/plugins/contrib/jssearchfield.mdwn
@@ -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',
+
+## PREREQUISITES
+
+ IkiWiki
+ IkiWiki::Plugin::field
+ HTML::Template
+
+## DOWNLOAD
+
+* browse at GitHub: <http://github.com/rubykat/ikiplugins/blob/master/IkiWiki/Plugin/jssearchfield.pm>
+* git repo at git://github.com/rubykat/ikiplugins.git
diff --git a/doc/plugins/contrib/mandoc.mdwn b/doc/plugins/contrib/mandoc.mdwn
index 15d2826ed..672a268cc 100644
--- a/doc/plugins/contrib/mandoc.mdwn
+++ b/doc/plugins/contrib/mandoc.mdwn
@@ -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
diff --git a/doc/plugins/contrib/mscgen.mdwn b/doc/plugins/contrib/mscgen.mdwn
index 63d6512c3..792aaa4e3 100644
--- a/doc/plugins/contrib/mscgen.mdwn
+++ b/doc/plugins/contrib/mscgen.mdwn
@@ -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
index 000000000..54c2f53d0
--- /dev/null
+++ b/doc/plugins/contrib/newpage.mdwn
@@ -0,0 +1,29 @@
+[[!template id=plugin name=newpage author="[[rubykat]]"]]
+[[!tag type/web]]
+[[!toc]]
+## NAME
+
+IkiWiki::Plugin::newpage - add a "create new page" form to actions
+
+## SYNOPSIS
+
+ # activate the plugin
+ add_plugins => [qw{goodstuff newpage ....}],
+
+## DESCRIPTION
+
+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.
+
+## DOWNLOAD
+
+* 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
index 000000000..fb186463d
--- /dev/null
+++ b/doc/plugins/contrib/newpage/discussion.mdwn
@@ -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
index 000000000..cb642ad33
--- /dev/null
+++ b/doc/plugins/contrib/pagespec_alias.mdwn
@@ -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>
diff --git a/doc/plugins/contrib/pandoc.mdwn b/doc/plugins/contrib/pandoc.mdwn
index c8e2e9a94..264aafd95 100644
--- a/doc/plugins/contrib/pandoc.mdwn
+++ b/doc/plugins/contrib/pandoc.mdwn
@@ -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>.
diff --git a/doc/plugins/contrib/trail.mdwn b/doc/plugins/contrib/trail.mdwn
index def91d85a..bfd4d3d0b 100644
--- a/doc/plugins/contrib/trail.mdwn
+++ b/doc/plugins/contrib/trail.mdwn
@@ -1,95 +1,133 @@
-[[!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
+Demo:
-----
+* [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]],
+[[ikiwiki/directive/trailitems]]
+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]]`).
diff --git a/doc/plugins/htmlscrubber.mdwn b/doc/plugins/htmlscrubber.mdwn
index 98933d99e..08c81212b 100644
--- a/doc/plugins/htmlscrubber.mdwn
+++ b/doc/plugins/htmlscrubber.mdwn
@@ -10,9 +10,9 @@ Parser, documented at
<http://web.archive.org/web/20110726052341/http://feedparser.org/docs/html-sanitization.html>.
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
diff --git a/doc/plugins/mdwn.mdwn b/doc/plugins/mdwn.mdwn
index ce1b6097a..8a7308305 100644
--- a/doc/plugins/mdwn.mdwn
+++ b/doc/plugins/mdwn.mdwn
@@ -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
diff --git a/doc/plugins/theme.mdwn b/doc/plugins/theme.mdwn
index ebbb0be8e..d2c62062b 100644
--- a/doc/plugins/theme.mdwn
+++ b/doc/plugins/theme.mdwn
@@ -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
diff --git a/doc/plugins/wmd/discussion.mdwn b/doc/plugins/wmd/discussion.mdwn
index 42af97ec3..b57ef4057 100644
--- a/doc/plugins/wmd/discussion.mdwn
+++ b/doc/plugins/wmd/discussion.mdwn
@@ -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]]
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 9a5ca60a0..dcab041dc 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -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($$)`
diff --git a/doc/rcs/cvs.mdwn b/doc/rcs/cvs.mdwn
index 9beb08ece..2b191f257 100644
--- a/doc/rcs/cvs.mdwn
+++ b/doc/rcs/cvs.mdwn
@@ -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]].
diff --git a/doc/rcs/cvs/discussion.mdwn b/doc/rcs/cvs/discussion.mdwn
index 645b2388b..e10892e7d 100644
--- a/doc/rcs/cvs/discussion.mdwn
+++ b/doc/rcs/cvs/discussion.mdwn
@@ -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]]
diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 3aaf6d885..2f173677b 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -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 )
endmodule
"""]]
+#<asd>
+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
index 000000000..5478d7a67
--- /dev/null
+++ b/doc/sandbox/Test_it.mdwn
@@ -0,0 +1 @@
+Test it just now!
diff --git a/doc/sandbox/sandbocen.mdwn b/doc/sandbox/sandbocen.mdwn
new file mode 100644
index 000000000..8f7e049c5
--- /dev/null
+++ b/doc/sandbox/sandbocen.mdwn
@@ -0,0 +1,5 @@
+Great!
+
+<code>
+if (sample == test) goto Dijkstra
+</code>
diff --git a/doc/setup/discussion.mdwn b/doc/setup/discussion.mdwn
index 388d5a49c..7ab935181 100644
--- a/doc/setup/discussion.mdwn
+++ b/doc/setup/discussion.mdwn
@@ -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.
diff --git a/doc/shortcuts.mdwn b/doc/shortcuts.mdwn
index d81ec98fc..07210f9bf 100644
--- a/doc/shortcuts.mdwn
+++ b/doc/shortcuts.mdwn
@@ -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"]]
diff --git a/doc/shortcuts/discussion.mdwn b/doc/shortcuts/discussion.mdwn
index aac98457e..11903a127 100644
--- a/doc/shortcuts/discussion.mdwn
+++ b/doc/shortcuts/discussion.mdwn
@@ -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]]
diff --git a/doc/sitemap.mdwn b/doc/sitemap.mdwn
index 5265d6378..095ef95df 100644
--- a/doc/sitemap.mdwn
+++ b/doc/sitemap.mdwn
@@ -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/*"]]
diff --git a/doc/themes/discussion.mdwn b/doc/themes/discussion.mdwn
index 87333b535..f2fc8cadf 100644
--- a/doc/themes/discussion.mdwn
+++ b/doc/themes/discussion.mdwn
@@ -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
index 000000000..4f2e13700
--- /dev/null
+++ b/doc/tips/Adding_Disqus_to_your_wiki/discussion.mdwn
@@ -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?
diff --git a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn
index 8d1d52b49..e60b413dd 100644
--- a/doc/tips/convert_mediawiki_to_ikiwiki.mdwn
+++ b/doc/tips/convert_mediawiki_to_ikiwiki.mdwn
@@ -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:
diff --git a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn
index 4a7163eae..f1b0598ee 100644
--- a/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn
+++ b/doc/tips/convert_mediawiki_to_ikiwiki/discussion.mdwn
@@ -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
----
diff --git a/doc/tips/laptop_wiki_with_git/discussion.mdwn b/doc/tips/laptop_wiki_with_git/discussion.mdwn
index 6ce72ae7b..297a2a6a7 100644
--- a/doc/tips/laptop_wiki_with_git/discussion.mdwn
+++ b/doc/tips/laptop_wiki_with_git/discussion.mdwn
@@ -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?)
+[[Micheal]]
diff --git a/doc/todo/Improve_markdown_speed.mdwn b/doc/todo/Improve_markdown_speed.mdwn
new file mode 100644
index 000000000..de3230c9e
--- /dev/null
+++ b/doc/todo/Improve_markdown_speed.mdwn
@@ -0,0 +1,33 @@
+I'm not sure where the bottleneck is for running ikiwiki over a site like
+my blog
+[Natalian](http://source.natalian-org.branchable.com/?p=source.git;),
+though I like to think the markdown processing could be speeded up by the
+support of the C implementation of Markdown called
+[Sundown](https://github.com/tanoku/sundown).
+
+>> 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]]
+
+[[wishlist]]
diff --git a/doc/todo/Modern_standard_layout.mdwn b/doc/todo/Modern_standard_layout.mdwn
new file mode 100644
index 000000000..37f1ee740
--- /dev/null
+++ b/doc/todo/Modern_standard_layout.mdwn
@@ -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]]
diff --git a/doc/todo/Pagination_next_prev_links.mdwn b/doc/todo/Pagination_next_prev_links.mdwn
index f1c12d33f..8474c9c27 100644
--- a/doc/todo/Pagination_next_prev_links.mdwn
+++ b/doc/todo/Pagination_next_prev_links.mdwn
@@ -4,12 +4,20 @@ They don't want to back out of post to an index. They want an easy button to cli
<http://codex.wordpress.org/Next_and_Previous_Links>
-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]]
+
+
+[[wishlist]]
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
index 000000000..5fd787607
--- /dev/null
+++ b/doc/todo/Render_multiple_destinations_from_one_source.mdwn
@@ -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]]
diff --git a/doc/todo/Set_arbitrary_date_to_be_used_by_calendar_plugin.mdwn b/doc/todo/Set_arbitrary_date_to_be_used_by_calendar_plugin.mdwn
index 4bc828e6e..e0074eef8 100644
--- a/doc/todo/Set_arbitrary_date_to_be_used_by_calendar_plugin.mdwn
+++ b/doc/todo/Set_arbitrary_date_to_be_used_by_calendar_plugin.mdwn
@@ -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
index 000000000..fdf0dea50
--- /dev/null
+++ b/doc/todo/Split_plugins_with_external_dependencies_into_separate_Debian_packages.mdwn
@@ -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]]
diff --git a/doc/todo/Support_MultiMarkdown_3.X.mdwn b/doc/todo/Support_MultiMarkdown_3.X.mdwn
index f7f0ec8e5..ad724442b 100644
--- a/doc/todo/Support_MultiMarkdown_3.X.mdwn
+++ b/doc/todo/Support_MultiMarkdown_3.X.mdwn
@@ -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
index 000000000..1f9a12d9c
--- /dev/null
+++ b/doc/todo/Wikilink_to_a_symbolic_link.mdwn
@@ -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.
diff --git a/doc/todo/allow_site-wide_meta_definitions.mdwn b/doc/todo/allow_site-wide_meta_definitions.mdwn
index 38c30c23f..f548f1a5b 100644
--- a/doc/todo/allow_site-wide_meta_definitions.mdwn
+++ b/doc/todo/allow_site-wide_meta_definitions.mdwn
@@ -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]]
diff --git a/doc/todo/comment_moderation_feed.mdwn b/doc/todo/comment_moderation_feed.mdwn
index 267706b1b..996de152d 100644
--- a/doc/todo/comment_moderation_feed.mdwn
+++ b/doc/todo/comment_moderation_feed.mdwn
@@ -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
inline.
+
+----
+
+See [[tips/comments feed]] --liw
+
+> Indeed, and the demo blog comes with a comments page with such feeds
+> already set up. [[done]] --[[Joey]]
diff --git a/doc/todo/configurable_tidy_command_for_htmltidy.mdwn b/doc/todo/configurable_tidy_command_for_htmltidy.mdwn
index e317184b5..2a7ebce0a 100644
--- a/doc/todo/configurable_tidy_command_for_htmltidy.mdwn
+++ b/doc/todo/configurable_tidy_command_for_htmltidy.mdwn
@@ -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
index 000000000..e7f6bc401
--- /dev/null
+++ b/doc/todo/hyphenation.mdwn
@@ -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.
diff --git a/doc/todo/inline_raw_files.mdwn b/doc/todo/inline_raw_files.mdwn
index 8228186f9..52a4be726 100644
--- a/doc/todo/inline_raw_files.mdwn
+++ b/doc/todo/inline_raw_files.mdwn
@@ -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/
usage
=====
diff --git a/doc/todo/mdwn_itex.mdwn b/doc/todo/mdwn_itex.mdwn
index 3e304fa76..ae9a8f37a 100644
--- a/doc/todo/mdwn_itex.mdwn
+++ b/doc/todo/mdwn_itex.mdwn
@@ -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
index 000000000..4fb30adf9
--- /dev/null
+++ b/doc/todo/mdwn_preview/discussion.mdwn
@@ -0,0 +1 @@
++1, not sure where this feature is going. I'm keen to seen this!
diff --git a/doc/todo/multi-thread_ikiwiki.mdwn b/doc/todo/multi-thread_ikiwiki.mdwn
index 1494fed7a..358185a22 100644
--- a/doc/todo/multi-thread_ikiwiki.mdwn
+++ b/doc/todo/multi-thread_ikiwiki.mdwn
@@ -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]]
diff --git a/doc/todo/natural_sorting.mdwn b/doc/todo/natural_sorting.mdwn
index 5df17e95b..3c42a4f94 100644
--- a/doc/todo/natural_sorting.mdwn
+++ b/doc/todo/natural_sorting.mdwn
@@ -7,7 +7,7 @@ page titles if they have numeric components. the
provides an algorithm for that.
there is a
-[patch](http://git.ikiwiki.info/?p=ikiwiki;a=commit;h=55b83cb7bd1cd7c60bb45dc22c3745dd80a63fed)
+patch 55b83cb7bd1cd7c60bb45dc22c3745dd80a63fed
attached that makes the [[plugins/inline]] plugin use Sort::Naturally if sort
is set to "title_natural".
diff --git a/doc/todo/org_mode.mdwn b/doc/todo/org_mode.mdwn
index 3e9d95376..ef7f4dbaf 100644
--- a/doc/todo/org_mode.mdwn
+++ b/doc/todo/org_mode.mdwn
@@ -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
+plugin.
+
[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
diff --git a/doc/todo/pagespec_aliases.mdwn b/doc/todo/pagespec_aliases.mdwn
index 209ec5435..748444a2f 100644
--- a/doc/todo/pagespec_aliases.mdwn
+++ b/doc/todo/pagespec_aliases.mdwn
@@ -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]]
diff --git a/doc/todo/pdf_output.mdwn b/doc/todo/pdf_output.mdwn
index 1a1411093..29c89e4eb 100644
--- a/doc/todo/pdf_output.mdwn
+++ b/doc/todo/pdf_output.mdwn
@@ -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]]
diff --git a/doc/todo/rewrite_ikiwiki_in_haskell.mdwn b/doc/todo/rewrite_ikiwiki_in_haskell.mdwn
index 48ed744b1..e48765b0e 100644
--- a/doc/todo/rewrite_ikiwiki_in_haskell.mdwn
+++ b/doc/todo/rewrite_ikiwiki_in_haskell.mdwn
@@ -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]]
diff --git a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
index 1edebe4e8..b6495194a 100644
--- a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
+++ b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
@@ -12,3 +12,46 @@ Congratulations for demonstrating that April fools jokes can still be subtle
>>> It doesn't really. I recently (re-)read about couchdb and thought that
>>> what it was trying to do had some comparisons with the thinking going on
>>> in [[todo/structured_page_data]]. -- [[Jon]]
+
+-----
+
+I'm torn about this idea, if it's actually serious. I'm very comfortable
+programming in Perl, and have written quite a few modules for IkiWiki, and
+it would be a huge pain to have to start from scratch all over again. On
+the other hand, this could be a motivation for me to learn Haskell. My
+only encounter with Haskell has been a brief time when I was using the
+Xmonad window manager, but it looks like an interesting language.
+Functional programming is cool.
+
+There are a lot of interesting plusses for Haskell you note (in the parent
+page), but it's true that the idea is horribly daunting (as [[Joey]] said
+"If only I had a spare year"). Is there any way that you could "start
+small"? Because nothing will ever happen if the task is too daunting to
+even start.
+
+> This seems destined to remain a thought experiment unless something like
+> that can be done, or I get a serious case of second system disease.
+>
+> I've considered doing things like using the external plugin interface
+> to run a separate haskell program, which would allow implementing
+> arbitrary plugins in haskell (starting with a pandoc plugin..),
+> and could perhaps grow to subsume the perl code. However, this would
+> stick us with the perl data structures, which are not a very good fit
+> for haskell. --[[Joey]]
+
+On further thought... perhaps it would be easier to fork or contribute to
+an existing Haskell-based wiki, such as <a
+href="http://jaspervdj.be/hakyll">Hakyll</a>?
+
+--[[KathrynAndersen]]
+
+> As far as I know there are no other wikis (haskell or otherwise)
+> that are wiki compilers. Since we know from experience that dealing
+> with static compilation turns out to be one of the trickiest parts of
+> ikiwiki, I'm doubtful about trying to bolt that into one. --[[Joey]]
+
+>> Haykll isn't a wiki but it does do static compilation. The missing
+>> parts are: the web interface, the wiki link processing, and page
+>> dependency stuff. -- [[tychoish]]
+
+>>> (nods) Which is why I suggested it. I'm not sure whether it would be easier to "bolt on" those things than static compilation, but it could be worth looking at, at least. -- [[KathrynAndersen]]
diff --git a/doc/todo/sortbylastcomment_plugin.mdwn b/doc/todo/sortbylastcomment_plugin.mdwn
index 71dfb67c8..84cf86e21 100644
--- a/doc/todo/sortbylastcomment_plugin.mdwn
+++ b/doc/todo/sortbylastcomment_plugin.mdwn
@@ -9,3 +9,5 @@ You'll find it in this repository, in the 'sortbylastcomment' branch:
[[!tag wishlist patch]]
> Reviewed, tested: looks good to me. We need it for the [Tails forum](https://tails.boum.org/forum/). --[[intrigeri]]
+
+>> Hi, is there a chance of seeing this plugin getting included in a release at any point soon? --sajolida
diff --git a/doc/todo/sorting_by_path.mdwn b/doc/todo/sorting_by_path.mdwn
new file mode 100644
index 000000000..a483c331a
--- /dev/null
+++ b/doc/todo/sorting_by_path.mdwn
@@ -0,0 +1,18 @@
+[[!tag patch]]
+[[!template id=gitbranch branch=smcv/trail3 author="[[smcv]]"]]
+
+My branch for [[plugins/contrib/trail]] also includes `path`
+and `path_natural` sort orders, which sort the entire page name,
+e.g. "a a/z ab ab/c b", much like [[ikiwiki/directive/map]].
+I used `path` as the default order for the
+[[plugins/contrib/ikiwiki/directive/trailitems]] directive,
+since it seemed the most sensible.
+([[plugins/contrib/ikiwiki/directive/trailinline]] uses
+`age` as its default, to be consistent with `inline`.)
+
+It's one commit (including a regression test) which can be
+cherry-picked if you don't want the rest of `trail`.
+
+--[[smcv]]
+
+> [[done]] --[[Joey]]
diff --git a/doc/todo/submodule_support.mdwn b/doc/todo/submodule_support.mdwn
new file mode 100644
index 000000000..d6a7edb03
--- /dev/null
+++ b/doc/todo/submodule_support.mdwn
@@ -0,0 +1,15 @@
+I would love to be able to publish my theme in my personnal wiki. The theme is in a separate git repository, and i feel it would be pretty awesome if it was rendered within my main ikiwiki site. I have tried the following:
+
+ git submodule add /usr/share/ikiwiki/themes/night_city/
+ git commit -m"add the theme to my site" ; git push
+
+But this made really weird things on the other side. The files from the theme end up flat in the parent directory. Now I have reverted the above change and ikiwiki *still* generates those files. Not sure what is going on.
+
+To be really clear here: this is an arbitrary source code repository that I want to include, I do not mean to enable the theme with this, this could very well be presentation material, C source code or whatever else... In fact, I think this would be a powerful way to do syntax highlightning for source code published on your website...
+
+Other people had experience with this? Or other suggestions on how to publish repositories within my site? -- [[anarcat]]
+
+> Ikiwiki does not support git submodules.
+>
+> You can use the [[plugins/underlay]] plugin to merge the
+> contents of other directories into your wiki's source. --[[Joey]]
diff --git a/doc/todo/supporting_comments_via_disussion_pages.mdwn b/doc/todo/supporting_comments_via_disussion_pages.mdwn
index aae0b3008..420ae4a7e 100644
--- a/doc/todo/supporting_comments_via_disussion_pages.mdwn
+++ b/doc/todo/supporting_comments_via_disussion_pages.mdwn
@@ -218,3 +218,5 @@ I've updated smcvpostcomment and publicised it as [[plugins/contrib/comments]].
> While there is still room for improvement and entirely other approaches,
> I am calling this done since smcv's comments plugin is ready. --[[Joey]]
+
+[[done]]
diff --git a/doc/todo/test_coverage.mdwn b/doc/todo/test_coverage.mdwn
new file mode 100644
index 000000000..56e11e01a
--- /dev/null
+++ b/doc/todo/test_coverage.mdwn
@@ -0,0 +1,24 @@
+[[!tag patch]]
+[[!template id=gitbranch branch=smcv/coverage author="[[smcv]]"]]
+
+It would be nice for `make coverage` (or something) to produce a HTML
+test-coverage report. I found this very useful for test-driven development of
+[[plugins/contrib/trail]].
+
+Limitations of the current branch, which uses [[!cpan Devel::Cover]]:
+
+* Some tests use `./blib` and some use `.` so coverage gets split between
+ the two copies of each module; not a problem for [[plugins/contrib/trail]]
+ which only has one test.
+
+> How annoying. I think in at least some cases there is reason to use
+> `./blib` -- perhaps everything that users `.` should be changed to use
+> it. --[[Joey]]
+
+* The [[plugins/git]] and [[plugins/mercurial]] plugins want to `chdir`,
+ and so does [[!cpan Devel::Cover]], so they fight. For now, those tests
+ are disabled under `make coverage`.
+
+--[[smcv]]
+
+> [[merged|done]] --[[Joey]]
diff --git a/doc/todo/themes_should_ship_with_templates.mdwn b/doc/todo/themes_should_ship_with_templates.mdwn
new file mode 100644
index 000000000..875e5ce89
--- /dev/null
+++ b/doc/todo/themes_should_ship_with_templates.mdwn
@@ -0,0 +1,19 @@
+if i understand [[todo/multiple_template_directories]] correctly, i read it as templates directories being separate from themes. shouldn't a themer be able to ship more than just a CSS and instead override the (say) page.tmpl page? -- [[anarcat]]
+
+> A theme can ship any files it wants to, including templates (in the
+> templates/ directory).
+>
+> So far none of them do; I'd much rather have one version of page.tmpl to
+> maintain than one per theme.. --[[Joey]]
+
+> > that, dear author, is amazingly simple, intuitive and useful. why didn't i try this before! :) thank you very much!
+> >
+> > i do agree that having a completely different template file is tricky, but I think it's important for themes to be able to modify those files, otherwise making themes is *really* hard. besides the burden of maintenance falls on the theme maintainer, and as long as it's not in ikiwiki core, you have nothing to worry about... right? ;)
+> >
+> > i have just ported the [night_city theme](http://www.openwebdesign.org/viewdesign.phtml?id=3318) to ikiwiki, and it was a nightmare when i wasn't modifying the page.tmpl... but now it's done! i'll try to publish my changes somewhere when i finish figuring out how to share small things like that easily. ;) ([[suggestions|submodule_support]]?)
+> >
+> > i guess the only thing to be done here is to update the documentation so that this is clearer - where do you suggest I do that? --[[anarcat]]
+> >
+> > > i have updated the [[plugins/theme]] documentation, hopefully that was the right place. so i think this is [[done]] --[[anarcat]]
+
+>>>> I would love it it you would share your theme! Thanks, Adam. :-)
diff --git a/doc/todo/websetup_should_link_to_plugin_descriptions.mdwn b/doc/todo/websetup_should_link_to_plugin_descriptions.mdwn
new file mode 100644
index 000000000..8b15fb7d0
--- /dev/null
+++ b/doc/todo/websetup_should_link_to_plugin_descriptions.mdwn
@@ -0,0 +1,3 @@
+A [[wishlist]] item.
+
+It would be nice if the websetup plugin could link to plugin descriptions. When it refers to a plugin by name, the name could be a link to <http://ikiwiki.info/plugins/$NAME/> (or other suitable location). --liw
diff --git a/doc/todo/wikitrails.mdwn b/doc/todo/wikitrails.mdwn
index ca97c9404..f2f87ac82 100644
--- a/doc/todo/wikitrails.mdwn
+++ b/doc/todo/wikitrails.mdwn
@@ -1,17 +1,25 @@
## summary
at times it is useful to have a guided tour or trail through a subset of the pages of a wiki; in pmwiki, this is implemented as [wikitrails](http://www.pmwiki.org/wiki/PmWiki/WikiTrails).
+### smcv's implementation
+
+... is the out-of-tree [[plugins/contrib/trail]] plugin, see there for details.
+
+> And will be the one landing in ikiwiki. So, I'm closing this bug report. [[done]] --[[Joey]]
+
+### chrysn's implementation
+
i'm working on a python xmlrpc plugin for ikiwiki to support wikitrails, both as a navigation feature (have "forward" and "back" links based on a sequence) and a modified inline that includes all pages in the trail with appropriate modifications (suitable for printing if necessary).
the current status is published on `git://github.com/github076986099/ikiwiki-plugins.git`; as of now, i don't have a public demo of it.
feedback on both the concept and the code is very much appreciated by [[discussion]] or [email](mailto:chrysn@fsfe.org).
-## usage
+#### usage
two preprocessor commands are provided:
-### \[[!trail index="my_indexpage"]]
+##### \[[!trail index="my_indexpage"]]
embeds a navigation object with forward and back links as well as an indicator of the current position in the trail.
@@ -19,15 +27,15 @@ if index is not specified, a suitable page up the path is used.
this works very well together with the [[sidebar|plugins/sidebar]] plugin if the pages in a directory are roughly the same as the pages in the trail and the `index` is directory index page; just put the \[[!trail]] in the sidebar.
-### \[[!trailinclude index="my_indexpage"]]
+##### \[[!trailinclude index="my_indexpage"]]
all pages linked from the index page are included in the same way as \[[!inline]] does, but in the proper sequence, with headings according to the indent in the source page and adoptions for the headings inside the page (a level 2 heading in a page that is a sub-sub-chapter in the whole trail will become a level 5 heading when trailincluded).
-## the index page
+#### the index page
the index page is parsed as markdown; numbered lists and "`*`" bulleted lists are discovered.
-## current issues
+#### current issues
* rebuilding --- currently, there is no propper rebuilding of pages (will use `will_render` and `add_depends`). care has to be taken of how not yet created pages play into this.
* inline recursion --- there is simply no guard yet
diff --git a/doc/todo/wikitrails/discussion.mdwn b/doc/todo/wikitrails/discussion.mdwn
index 9dbbb6bc8..1ceb51f0d 100644
--- a/doc/todo/wikitrails/discussion.mdwn
+++ b/doc/todo/wikitrails/discussion.mdwn
@@ -1,3 +1,7 @@
+(This mainly discusses the original implementation (chrysn's). --[[smcv]])
+
+----
+
This is a nice idea, I do have my gripes about the imeplementation.
Assuming that the index's list is in mdwn format is not ideal. I guess the
diff --git a/doc/todo/wmd_editor_live_preview.mdwn b/doc/todo/wmd_editor_live_preview.mdwn
new file mode 100644
index 000000000..d76fb2ba4
--- /dev/null
+++ b/doc/todo/wmd_editor_live_preview.mdwn
@@ -0,0 +1,11 @@
+Some time ago there was [[a question|http://ikiwiki.info/forum/wmd_editor_double_preview/]] in the forum about wmd editor and preview. However there were no answers:
+
+I use the wmd editor in my ikiwiki. However live preview seems not to be a fully correct preview so nevertheless I have to hit the preview button to get a correct preview. However then I have two previews so that I have to scroll down to see the correct one.
+
+Is it possible to disable the live preview or to replace the live preview with the correct one after pressing the preview button?
+
+> There's another page already tracking this UI problem: [[mdwn_preview]]
+> There is a patch there, but AFAIK nobody has done any more work on
+> WMD integration with ikiwiki. --[[Joey]]
+
+>> I tried to apply the patch via git apply, however get an error: fatal: corrupt patch at line 63, any idea?
diff --git a/doc/usage.mdwn b/doc/usage.mdwn
index b9516d740..44d32a01d 100644
--- a/doc/usage.mdwn
+++ b/doc/usage.mdwn
@@ -384,4 +384,4 @@ also be configured using a setup file.
Joey Hess <joey@ikiwiki.info>
-Warning: this page is automatically made into ikiwiki's man page via [mdwn2man](http://git.ikiwiki.info/?p=ikiwiki;a=blob;f=mdwn2man;hb=HEAD). Edit with care
+Warning: Automatically converted into a man page by mdwn2man. Edit with care
diff --git a/doc/users/Erkan_Yilmaz.mdwn b/doc/users/Erkan_Yilmaz.mdwn
new file mode 100644
index 000000000..070a3a45a
--- /dev/null
+++ b/doc/users/Erkan_Yilmaz.mdwn
@@ -0,0 +1,2 @@
+* [[recentchanges]]
+* my site: [here](http://iaskquestions.com)
diff --git a/doc/users/NeilSmithline.mdwn b/doc/users/NeilSmithline.mdwn
new file mode 100644
index 000000000..27370248e
--- /dev/null
+++ b/doc/users/NeilSmithline.mdwn
@@ -0,0 +1 @@
+Neil Smithline, that's me!
diff --git a/doc/users/fil.mdwn b/doc/users/fil.mdwn
new file mode 100644
index 000000000..b17399383
--- /dev/null
+++ b/doc/users/fil.mdwn
@@ -0,0 +1 @@
+http://hands.com/~phil
diff --git a/doc/users/jon.mdwn b/doc/users/jon.mdwn
index eb01821ff..3d5304365 100644
--- a/doc/users/jon.mdwn
+++ b/doc/users/jon.mdwn
@@ -1,4 +1,7 @@
-[[!meta title="Jon Dowland"]]
+[[!meta title="Jon Dowland"]][[!toc levels=2]]
+
+## intro
+
I'm looking at ikiwiki both for my personal site but also as a
team-documentation management system for a small-sized group of UNIX
sysadmins.
@@ -54,7 +57,9 @@ Penultimately, the following are merely half-formed thoughts:
* I'd like to make profiling ikiwiki in action very easy for newcomers.
Perhaps even a plugin that created a file /profile or similar on build.
+## backlinks
+
Finally, backlinks (since I have issues with the current backlinks
implementation, see [[bugs/backlinks onhover thing can go weird]]):
-[[!inline pages="link(users/Jon)" archive="yes" feeds="no"]]
+[[!map pages="link(users/Jon)"]]
diff --git a/doc/users/pelle.mdwn b/doc/users/pelle.mdwn
new file mode 100644
index 000000000..5475b67e8
--- /dev/null
+++ b/doc/users/pelle.mdwn
@@ -0,0 +1 @@
+Have migrated some company internal wiki's from MediaWiki to IkiWiki. Going from mysql+php to git+perl is a blessing, never going to look back!
diff --git a/doc/users/schmonz.mdwn b/doc/users/schmonz.mdwn
index ec282c990..fc7558b24 100644
--- a/doc/users/schmonz.mdwn
+++ b/doc/users/schmonz.mdwn
@@ -1,5 +1,10 @@
-[Amitai Schlair](http://www.netbsd.org/~schmonz/) recently discovered ikiwiki and finds himself using it for all sorts of things. His attempts at contributing:
+[Amitai Schlair](http://www.schmonz.com/) finds himself using ikiwiki
+for all sorts of things. His attempts at contributing:
-[[!map pages="!*/Discussion and ((link(users/schmonz) and plugins/*) or rcs/cvs)"]]
+[[!map
+pages="!*/Discussion and ((link(users/schmonz) and plugins/*) or rcs/cvs)"
+]]
-I've also written a plugin for [WIND authentication](http://www.columbia.edu/acis/rad/authmethods/wind/), which may or may not be of general utility.
+He's also written a plugin for [WIND
+authentication](http://www.columbia.edu/acis/rad/authmethods/wind/), which
+may or may not be of general utility.
diff --git a/doc/users/Terry_Golubiewski.mdwn b/doc/users/tjgolubi.mdwn
index 15b995270..edf871843 100644
--- a/doc/users/Terry_Golubiewski.mdwn
+++ b/doc/users/tjgolubi.mdwn
@@ -1,2 +1,3 @@
+[[!meta title="Terry Golubiewski"]]
Terry Golubiewski likes to program in C++ and manages software projects.
Terry is just starting to use ikiwiki.
diff --git a/doc/users/wtk.mdwn b/doc/users/wtk.mdwn
index a34473577..d00911a76 100644
--- a/doc/users/wtk.mdwn
+++ b/doc/users/wtk.mdwn
@@ -3,4 +3,4 @@
* Git branch: `wtk`.
* [Ikiwiki-based blog][blog]
-[blog]: http://www.physics.drexel.edu/~wking/unfolding-disasters/
+[blog]: http://blog.tremily.us/
diff --git a/ikiwiki-makerepo b/ikiwiki-makerepo
index 6951ca0de..c3a13c214 100755
--- a/ikiwiki-makerepo
+++ b/ikiwiki-makerepo
@@ -86,7 +86,6 @@ git)
cd "$srcdir"
git init
echo /.ikiwiki > .gitignore
- echo /recentchanges >> .gitignore
git add .
git commit -m "initial commit"
git remote add origin "$repository"
diff --git a/ikiwiki.in b/ikiwiki.in
index adff1411e..e6b64f439 100755
--- a/ikiwiki.in
+++ b/ikiwiki.in
@@ -108,11 +108,9 @@ sub getconfig () {
if (! defined $var || ! defined $val) {
die gettext("usage: --set-yaml var=value"), "\n";
}
- eval q{use YAML::Any};
- eval q{use YAML} if $@;
+ eval q{use YAML::XS; use Encode};
die $@ if $@;
- eval q{$YAML::Syck::ImplicitUnicode=1};
- $config{$var}=Load($val."\n");
+ $config{$var}=Load(encode_utf8($val)."\n");
},
"version" => sub {
print "ikiwiki version $IkiWiki::version\n";
diff --git a/ikiwiki.spec b/ikiwiki.spec
index f974e524a..0c7f435d9 100644
--- a/ikiwiki.spec
+++ b/ikiwiki.spec
@@ -1,5 +1,5 @@
Name: ikiwiki
-Version: 3.20111106
+Version: 3.20120202
Release: 1%{?dist}
Summary: A wiki compiler
diff --git a/po/bg.po b/po/bg.po
index e20ec5a35..4963f86be 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki-bg\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2007-01-12 01:19+0200\n"
"Last-Translator: Damyan Ivanov <dam@modsodtsys.com>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -52,7 +52,7 @@ msgstr "Предпочитанията са запазени."
msgid "You are banned."
msgstr "Достъпът ви е забранен."
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "Грешка"
@@ -139,7 +139,7 @@ msgstr "грешка при обработване на шаблона"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr "готово"
@@ -176,15 +176,15 @@ msgstr ""
msgid "bad attachment filename"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
msgid "this attachment is not yet saved"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -324,14 +324,14 @@ msgstr "премахване на старата страница „%s”"
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr "създаване на %s"
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr "промяна на %s"
@@ -379,55 +379,55 @@ msgstr "грешка при четене на „%s”: %s"
msgid "%s is an attachment, not a page."
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
msgid "you are not allowed to revert a merge"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, fuzzy, perl-format
msgid "Failed to revert commit %s"
msgstr "крешка при компилиране на файла %s"
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, fuzzy, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr "При използване на приеставката „search” е необходимо е да се укаже %s"
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
#, fuzzy
msgid "failed to run graphviz"
msgstr "приставката „linkmap”: грешка при изпълнение на „dot”"
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -452,7 +452,7 @@ msgstr "грешка при запис на файла „%s”: %s"
msgid "wrong size format \"%s\" (should be WxH)"
msgstr ""
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, fuzzy, perl-format
msgid "failed to resize: %s"
msgstr "грешка при запис на файла „%s”: %s"
@@ -553,7 +553,7 @@ msgstr "шаблонът „%s” не е намерен"
msgid "redir cycle is not allowed"
msgstr "шаблонът „%s” не е намерен"
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
msgid "sort=meta requires a parameter"
msgstr ""
@@ -667,71 +667,71 @@ msgid ""
"po_link_to=default"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, perl-format
msgid "POT file (%s) does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, fuzzy, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr "крешка при компилиране на файла %s"
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, fuzzy, perl-format
msgid "failed to update %s"
msgstr "крешка при компилиране на файла %s"
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, fuzzy, perl-format
msgid "failed to copy the POT file to %s"
msgstr "крешка при компилиране на файла %s"
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, fuzzy, perl-format
msgid "failed to translate %s"
msgstr "грешка при запис на файла „%s”: %s"
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, fuzzy, perl-format
msgid "failed to write %s"
msgstr "грешка при запис на файла „%s”: %s"
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
#, fuzzy
msgid "failed to translate"
msgstr "приставката „linkmap”: грешка при изпълнение на „dot”"
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
@@ -864,16 +864,16 @@ msgstr ""
msgid "%s is not a file"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr ""
@@ -939,12 +939,12 @@ msgstr "грешка при запис на файла „%s”: %s"
msgid "rsync_command exited %d"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, perl-format
msgid "need Digest::SHA to index %s"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr ""
@@ -1256,11 +1256,11 @@ msgstr ""
msgid "usage: --set-yaml var=value"
msgstr ""
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr "обновяване на уики..."
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr "осъвременяване на уики..."
@@ -1274,45 +1274,50 @@ msgstr ""
"При използване на пареметъра „--cgi” е необходимо да се укаже и "
"местоположението на уикито чрез параметъра „--url”"
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, perl-format
+msgid "unsupported umask setting %s"
+msgstr ""
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr ""
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr ""
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, fuzzy, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr "открита е циклична завидимост при %s на „%s” на дълбочина %i"
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "пропускане на невалидното име на файл „%s”"
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr "шаблонът „%s” не е намерен"
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr ""
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, fuzzy, perl-format
msgid "invalid sort type %s"
msgstr "непознат вид сортиране „%s”"
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr "непознат вид сортиране „%s”"
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, fuzzy, perl-format
msgid "cannot match pages: %s"
msgstr "грешка при четене на „%s”: %s"
diff --git a/po/cs.po b/po/cs.po
index 64ca444b4..5cb42b937 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2009-09-11 20:23+0200\n"
"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
@@ -52,7 +52,7 @@ msgstr "Nastavení uloženo."
msgid "You are banned."
msgstr "Jste vyhoštěni."
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "Chyba"
@@ -138,7 +138,7 @@ msgstr "nepodařilo se zpracovat:"
msgid "deleting bucket.."
msgstr "mažu bucket..."
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr "hotovo"
@@ -172,16 +172,16 @@ msgstr "zakázáno proměnnou allowed_attachments"
msgid "bad attachment filename"
msgstr "chybné jméno souboru s přílohou"
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr "příloha nahrána"
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
#, fuzzy
msgid "this attachment is not yet saved"
msgstr "%s není ani příloha, ani stránka."
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -326,14 +326,14 @@ msgstr "odstraňuji starý náhled %s"
msgid "%s is not an editable page"
msgstr "%s není editovatelná stránka"
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr "vytvářím %s"
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr "upravuji %s"
@@ -377,55 +377,55 @@ msgstr "není stránkou"
msgid "%s is an attachment, not a page."
msgstr "%s není ani příloha, ani stránka."
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr "nejste oprávněni měnit %s"
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr "nemůžete pracovat se souborem s přístupovým oprávněními %s"
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr "nejste oprávněni měnit přístupová oprávnění souborů"
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
#, fuzzy
msgid "you are not allowed to revert a merge"
msgstr "nejste oprávněni měnit %s"
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, fuzzy, perl-format
msgid "Failed to revert commit %s"
msgstr "nelze zkompilovat %s"
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr "%s musíte zadat při každém použití modulu %s"
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
msgid "failed to run graphviz"
msgstr "nepodařilo se spustit graphviz"
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr "program není platným programem graphviz"
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr "tohighlight obsahuje neznámý typ souboru „%s“"
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr "Zdrojový kód: %s"
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr "varování: perlový modul highlight není dostupný; pokračuji bez něj"
@@ -448,7 +448,7 @@ msgstr "nelze číst %s: %s"
msgid "wrong size format \"%s\" (should be WxH)"
msgstr "chybné rozměry „%s“ (formát má být ŠxV)"
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, perl-format
msgid "failed to resize: %s"
msgstr "nelze změnit velikost: %s"
@@ -539,7 +539,7 @@ msgstr "stránka, na kterou vede přesměrování, nebyla nalezena"
msgid "redir cycle is not allowed"
msgstr "cykly nejsou v přesměrování povoleny"
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
#, fuzzy
msgid "sort=meta requires a parameter"
msgstr "vyžaduje parametry „from“ a „to“"
@@ -655,11 +655,11 @@ msgid ""
msgstr ""
"po_link_to=negotiated vyžaduje zapnuté usedirs, používám po_link_to=default"
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr "aktualizovány PO soubory"
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
@@ -667,7 +667,7 @@ msgstr ""
"Nemohu odstranit překlad. Nicméně pokud bude odstraněna hlavní stránka, "
"budou odstraněny také její překlady."
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
@@ -675,56 +675,56 @@ msgstr ""
"Nemohu přejmenovat překlad. Nicméně pokud bude přejmenována hlavní stránka, "
"budou přejmenovány také její překlady."
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, perl-format
msgid "POT file (%s) does not exist"
msgstr "POT soubor (%s) neexistuje"
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr "nepodařilo se zkopírovat PO soubor na %s"
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, perl-format
msgid "failed to update %s"
msgstr "nepodařilo se aktualizovat %s"
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, perl-format
msgid "failed to copy the POT file to %s"
msgstr "nepodařilo se zkopírovat POT soubor na %s"
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr "N/A"
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, perl-format
msgid "failed to translate %s"
msgstr "nepodařilo se přeložit %s"
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr "odstraněny zastaralé PO soubory"
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, perl-format
msgid "failed to write %s"
msgstr "nepodařilo se zapsat %s"
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
msgid "failed to translate"
msgstr "překlad se nezdařil"
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
"neplatná gettext data, pro pokračování v úpravách se vraťte na předchozí "
"stránku"
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
@@ -855,16 +855,16 @@ msgstr "%s není ve zdrojovém adresáři a proto nelze smazat"
msgid "%s is not a file"
msgstr "%s není souborem"
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr "potvrďte odstranění %s"
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr "Vyberte prosím přílohy, které se mají odstranit."
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr "odstraněno"
@@ -929,12 +929,12 @@ msgstr "nepodařilo se přečíst %s"
msgid "rsync_command exited %d"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, fuzzy, perl-format
msgid "need Digest::SHA to index %s"
msgstr "pro indexování %s je potřeba Digest::SHA1"
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr "hledání"
@@ -1245,11 +1245,11 @@ msgstr "použití: --set proměnná=hodnota"
msgid "usage: --set-yaml var=value"
msgstr "použití: --set proměnná=hodnota"
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr "znovusestavuji wiki..."
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr "obnovuji wiki..."
@@ -1261,45 +1261,50 @@ msgstr "Diskuse"
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "Při použití --cgi musíte pomocí --url zadat url k wiki"
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, fuzzy, perl-format
+msgid "unsupported umask setting %s"
+msgstr "nepodporovaný formát stránky %s"
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr "nelze použít několik rcs modulů"
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "nepodařilo se nahrát externí modul vyžadovaný modulem %s: %s"
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr "Byla rozpoznána smyčka na %s v hloubce %i"
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, perl-format
msgid "bad file name %s"
msgstr "chybné jméno souboru %s"
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr "šablona %s nebyla nalezena"
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr "ano"
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, fuzzy, perl-format
msgid "invalid sort type %s"
msgstr "neznámý typ řazení %s"
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr "neznámý typ řazení %s"
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, perl-format
msgid "cannot match pages: %s"
msgstr "nelze vybrat stránky: %s"
diff --git a/po/da.po b/po/da.po
index 093a471ac..5d612c662 100644
--- a/po/da.po
+++ b/po/da.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 3.20110430\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2011-05-05 13:30+0200\n"
"Last-Translator: Jonas Smedegaard <dr@jones.dk>\n"
"Language-Team: None\n"
@@ -56,7 +56,7 @@ msgstr "Indstillinger gemt"
msgid "You are banned."
msgstr "Du er banlyst."
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "Fejl"
@@ -141,7 +141,7 @@ msgstr "behandling af skabelon mislykkedes:"
msgid "deleting bucket.."
msgstr "sletter bundt.."
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr "færdig"
@@ -175,16 +175,16 @@ msgstr "forhindret af allowed_attachments"
msgid "bad attachment filename"
msgstr "dårligt vedhæftningsfilnavn"
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr "vedhæftningsoplægning"
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
#, fuzzy
msgid "this attachment is not yet saved"
msgstr "%s er en vedhæftning, ikke en side."
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -326,14 +326,14 @@ msgstr "fjerner gammelt smugkig %s"
msgid "%s is not an editable page"
msgstr "%s er ikke en redigérbar side"
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr "opretter %s"
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr "redigerer %s"
@@ -377,54 +377,54 @@ msgstr "ikke en side"
msgid "%s is an attachment, not a page."
msgstr "%s er en vedhæftning, ikke en side."
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr "Du har ikke lov til at ændre %s"
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr "du kan ikke påvirke en fil med modus %s"
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr "du har ikke lov til at ændre modus for filer"
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
msgid "you are not allowed to revert a merge"
msgstr "Du har ikke lov til at tilbageføre en sammenlægning"
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, perl-format
msgid "Failed to revert commit %s"
msgstr "tilbageføring af indlæg %s mislykkedes"
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr "Skal angive %s når udvidelsen %s bruges"
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
msgid "failed to run graphviz"
msgstr "graphviz-kørsel mislykkedes"
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr "prog er ikke et gyldigt graphviz-program"
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr "tohighlight indeholder ukendt filtype '%s'"
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr "Kildekode: %s"
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -449,7 +449,7 @@ msgstr "læsning af %s mislykkedes: %s"
msgid "wrong size format \"%s\" (should be WxH)"
msgstr "forkert størrelsesformat \"%s\" (burde være WxH)"
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, perl-format
msgid "failed to resize: %s"
msgstr "Ændring af størrelse mislykkedes: %s"
@@ -541,7 +541,7 @@ msgstr "henvisningsside ikke fundet"
msgid "redir cycle is not allowed"
msgstr "ring af henvisninger er ikke tilladt"
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
msgid "sort=meta requires a parameter"
msgstr "sort=meta kræver en parameter"
@@ -658,11 +658,11 @@ msgstr ""
"po_link_to=negotiated kræver at usedirs er aktiveret, falder tilbage til "
"po_link_to=default"
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr "opdaterer PO-filer"
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
@@ -670,7 +670,7 @@ msgstr ""
"Kan ikke fjerne en oversættelse. Fjern i stedet hovedsiden, så fjernes dens "
"oversættelser også."
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
@@ -678,55 +678,55 @@ msgstr ""
"Kan ikke omdøbe en oversættelse. Omdøb i stedet hovedsiden, så omdøbes dens "
"oversættelser også."
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, perl-format
msgid "POT file (%s) does not exist"
msgstr "POT-filen %s eksisterer ikke"
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr "kopiering af underlags-PO-fil til %s mislykkedes"
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, perl-format
msgid "failed to update %s"
msgstr "opdatering af %s mislykkedes"
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, perl-format
msgid "failed to copy the POT file to %s"
msgstr "kopiering af POT-filen til %s mislykkedes"
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr "N/A"
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, perl-format
msgid "failed to translate %s"
msgstr "oversættelse af %s mislykkedes"
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr "forældede PO filer fjernet"
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, perl-format
msgid "failed to write %s"
msgstr "skrivning af %s mislykkedes"
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
msgid "failed to translate"
msgstr "oversættelse mislykkedes"
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
"forkert gettext-data, gå tilbage til forrige side og fortsæt redigering"
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr "%s har forkert syntaks: skal bruge CODE|NAME"
@@ -857,16 +857,16 @@ msgstr "%s er ikke i srcdir, så kan ikke blive slettet"
msgid "%s is not a file"
msgstr "%s er ikke en fil"
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr "bekræft at %s bliver fjernet"
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr "Vælg vedhæftning der skal slettes."
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr "fjernet"
@@ -931,12 +931,12 @@ msgstr "afvikling af rsync_command mislykkedes: %s"
msgid "rsync_command exited %d"
msgstr "rsync_command sluttede (exit code) %d"
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, perl-format
msgid "need Digest::SHA to index %s"
msgstr "behøver Digest::SHA til indeks %s"
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr "søg"
@@ -1246,11 +1246,11 @@ msgstr "brug: --set var=værdi"
msgid "usage: --set-yaml var=value"
msgstr "brug: --set-yaml var=værdi"
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr "genopbygger wiki..."
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr "genopfrisker wiki..."
@@ -1262,46 +1262,51 @@ msgstr "Diskussion"
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "Skal angive url til wiki med --url når der bruges --cgi"
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, fuzzy, perl-format
+msgid "unsupported umask setting %s"
+msgstr "Ikke-understøttet sideformat %s"
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr "kan ikke bruge flere samtidige RCS-udvidelser"
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr ""
"indlæsning af ekstern udvidelse krævet af udvidelsen %s mislykkedes: %s"
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr "forudberegningssløkke fundet på %s ved dybde %i"
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, perl-format
msgid "bad file name %s"
msgstr "dårligt filnavn %s"
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr "skabelon %s ikke fundet"
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr "ja"
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, perl-format
msgid "invalid sort type %s"
msgstr "forkert sorteringstype %s"
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr "ukendt sorteringsform %s"
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, perl-format
msgid "cannot match pages: %s"
msgstr "kan ikke få sider til at passe sammen: %s"
diff --git a/po/de.po b/po/de.po
index 368deb19a..9cc9e388b 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 3.14159\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2010-03-14 16:09+0530\n"
"Last-Translator: Sebastian Kuhnert <mail@sebastian-kuhnert.de>\n"
"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
@@ -53,7 +53,7 @@ msgstr "Einstellungen gespeichert."
msgid "You are banned."
msgstr "Sie sind ausgeschlossen worden."
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "Fehler"
@@ -139,7 +139,7 @@ msgstr "Fehler beim Ablauf:"
msgid "deleting bucket.."
msgstr "lösche Behälter (bucket)..."
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr "fertig"
@@ -174,16 +174,16 @@ msgstr "durch allowed_attachements verboten"
msgid "bad attachment filename"
msgstr "fehlerhafter Dateiname für Anhang"
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr "Anhang hochladen"
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
#, fuzzy
msgid "this attachment is not yet saved"
msgstr "Seite %s ist ein Anhang und keine Seite."
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -328,14 +328,14 @@ msgstr "entferne alte Vorschau %s"
msgid "%s is not an editable page"
msgstr "Seite %s kann nicht bearbeitet werden"
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr "erstelle %s"
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr "bearbeite %s"
@@ -379,55 +379,55 @@ msgstr "Keine Seite"
msgid "%s is an attachment, not a page."
msgstr "Seite %s ist ein Anhang und keine Seite."
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr "Sie dürfen %s nicht verändern"
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr "Sie können eine Datei mit den Zugriffsrechten %s nicht nutzen"
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr "Sie dürfen die Zugriffsrechte der Datei nicht ändern"
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
#, fuzzy
msgid "you are not allowed to revert a merge"
msgstr "Sie dürfen %s nicht verändern"
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, fuzzy, perl-format
msgid "Failed to revert commit %s"
msgstr "erzeugen von %s fehlgeschlagen"
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr "%s muss angegeben werden, wenn die %s Erweiterung verwandt wird"
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
msgid "failed to run graphviz"
msgstr "graphviz konnte nicht ausgeführt werden"
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr "prog ist kein gültiges graphviz-Programm"
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr "tohighlight enteilt unbekannten Dateityp '%s'"
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr "Quellcode: %s"
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -452,7 +452,7 @@ msgstr "Lesen von %s fehlgeschlagen: %s"
msgid "wrong size format \"%s\" (should be WxH)"
msgstr "falsches Format in \"%s\" für size (sollte BxH sein)"
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, perl-format
msgid "failed to resize: %s"
msgstr "Größenänderung fehlgeschlagen: %s"
@@ -548,7 +548,7 @@ msgstr "Umleitungsseite nicht gefunden"
msgid "redir cycle is not allowed"
msgstr "Zyklische Umleitungen sind nicht erlaubt"
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
#, fuzzy
msgid "sort=meta requires a parameter"
msgstr "erfordert die Parameter 'from' und 'to'"
@@ -667,11 +667,11 @@ msgstr ""
"po_link_to=negotiated benötigt usedirs eingeschaltet, greife zurück auf "
"po_link_to=default"
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr "PO-Dateien aktualisiert"
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
@@ -679,7 +679,7 @@ msgstr ""
"Übersetzung kann nicht entfernt werden. Wenn die Master Seite entfernt wird, "
"werden auch ihre Übersetzungen entfernt."
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
@@ -687,56 +687,56 @@ msgstr ""
"Eine Übersetzung kann nicht umbenannt werden. Wenn die Master Seite "
"unbenannt wird, werden auch ihre Übersetzungen unbenannt."
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, perl-format
msgid "POT file (%s) does not exist"
msgstr "POT-Datei (%s) existiert nicht"
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr "konnte die PO-Datei nicht aus dem Underlay nach %s kopieren"
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, perl-format
msgid "failed to update %s"
msgstr "aktualisieren von %s fehlgeschlagen"
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, perl-format
msgid "failed to copy the POT file to %s"
msgstr "kopieren der POT-Datei nach %s fehlgeschlagen"
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr "N/A"
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, perl-format
msgid "failed to translate %s"
msgstr "übersetzen von %s fehlgeschlagen"
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr "überflüssige PO-Dateien wurden entfernt"
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, perl-format
msgid "failed to write %s"
msgstr "schreiben von %s fehlgeschlagen"
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
msgid "failed to translate"
msgstr "übersetzen fehlgeschlagen"
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
"ungültige gettext Datei, gehe zurück zur vorherigen Seite um weiter zu "
"arbeiten"
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
@@ -869,16 +869,16 @@ msgstr "%s ist nicht im srcdir und kann deshalb nicht gelöscht werden"
msgid "%s is not a file"
msgstr "%s ist keine Datei"
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr "bestätigen Sie die Entfernung von %s"
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr "Bitte wählen Sie die zu entfernenden Anhänge aus."
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr "entfernt"
@@ -943,12 +943,12 @@ msgstr "konnte das rsync_command nicht ausführen: %s"
msgid "rsync_command exited %d"
msgstr "rsync_command gibt Fehler %d zurück"
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, fuzzy, perl-format
msgid "need Digest::SHA to index %s"
msgstr "benötige Digest::SHA1 um einen Index von %s zu erstellen"
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr "suchen"
@@ -1265,11 +1265,11 @@ msgstr "Aufruf: --set Variable=Wert"
msgid "usage: --set-yaml var=value"
msgstr "Aufruf: --set Variable=Wert"
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr "erzeuge Wiki neu.."
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr "aktualisiere Wiki.."
@@ -1283,46 +1283,51 @@ msgstr ""
"Es muss eine URL zum Wiki mit --url angegeben werden, wenn --cgi verwandt "
"wird"
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, fuzzy, perl-format
+msgid "unsupported umask setting %s"
+msgstr "nicht unterstütztes Seitenformat %s"
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr ""
"Es können nicht mehrere Versionskontrollsystem-Erweiterungen verwandt werden"
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "Laden der für %s benötigten externen Erweiterung fehlgeschlagen: %s"
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr "Präprozessorschleife auf %s in Tiefe %i erkannt"
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, perl-format
msgid "bad file name %s"
msgstr "fehlerhafter Dateiname %s"
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr "Vorlage %s nicht gefunden"
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr "ja"
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, fuzzy, perl-format
msgid "invalid sort type %s"
msgstr "Unbekannter Sortierungstyp %s"
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr "Unbekannter Sortierungstyp %s"
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, perl-format
msgid "cannot match pages: %s"
msgstr "Kann die Seiten nicht zuordnen: %s"
diff --git a/po/es.po b/po/es.po
index 0df9b6380..86f49f2c2 100644
--- a/po/es.po
+++ b/po/es.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: es\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2009-06-14 12:32+0200\n"
"Last-Translator: Victor Moral <victor@taquiones.net>\n"
"Language-Team: <en@li.org>\n"
@@ -57,7 +57,7 @@ msgstr "Las preferencias se han guardado."
msgid "You are banned."
msgstr "Ha sido expulsado."
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "Error"
@@ -144,7 +144,7 @@ msgstr "se ha producido un error fatal mientras procesaba la plantilla:"
msgid "deleting bucket.."
msgstr "borrando el directorio.."
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr "completado"
@@ -181,16 +181,16 @@ msgstr "prohibido por la claúsula allowed_attachments"
msgid "bad attachment filename"
msgstr "nombre de archivo adjunto erróneo"
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr "enviado el adjunto"
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
#, fuzzy
msgid "this attachment is not yet saved"
msgstr "la página %s no es modificable"
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -335,14 +335,14 @@ msgstr "eliminando la antigua previsualización %s"
msgid "%s is not an editable page"
msgstr "la página %s no es modificable"
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr "creando página %s"
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr "modificando página %s"
@@ -387,55 +387,55 @@ msgstr "no encuentro páginas coincidentes: %s"
msgid "%s is an attachment, not a page."
msgstr "la página %s no es modificable"
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr "No puede cambiar %s"
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr "no puede actuar sobre un archivo con permisos %s"
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr "No puede cambiar los permisos de acceso de un archivo"
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
#, fuzzy
msgid "you are not allowed to revert a merge"
msgstr "No puede cambiar %s"
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, fuzzy, perl-format
msgid "Failed to revert commit %s"
msgstr "ha fallado la compilación del programa %s"
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, fuzzy, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr "Es obligatorio indicar %s cuando se utiliza el complemento de búsqueda"
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
msgid "failed to run graphviz"
msgstr "no he podido ejecutar el programa graphviz "
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr "prog no es un programa graphviz válido "
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr "la directiva tohighlight contiene el tipo de archivo desconocido '%s' "
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr "Código fuente: %s"
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -461,7 +461,7 @@ msgstr "no puedo leer de %s: %s "
msgid "wrong size format \"%s\" (should be WxH)"
msgstr ""
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, perl-format
msgid "failed to resize: %s"
msgstr "dimensionamiento fallido: %s"
@@ -556,7 +556,7 @@ msgstr "falta la página a donde redirigir"
msgid "redir cycle is not allowed"
msgstr "ciclo de redirección no permitido"
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
#, fuzzy
msgid "sort=meta requires a parameter"
msgstr "los parámetros 'from' y 'to' son obligatorios"
@@ -675,71 +675,71 @@ msgid ""
"po_link_to=default"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, fuzzy, perl-format
msgid "POT file (%s) does not exist"
msgstr "No existe la página %s."
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, fuzzy, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr "ha fallado la compilación del programa %s"
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, fuzzy, perl-format
msgid "failed to update %s"
msgstr "ha fallado la compilación del programa %s"
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, fuzzy, perl-format
msgid "failed to copy the POT file to %s"
msgstr "ha fallado la compilación del programa %s"
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, fuzzy, perl-format
msgid "failed to translate %s"
msgstr "dimensionamiento fallido: %s"
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, fuzzy, perl-format
msgid "failed to write %s"
msgstr "dimensionamiento fallido: %s"
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
#, fuzzy
msgid "failed to translate"
msgstr "no he podido ejecutar el programa dot"
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
@@ -870,16 +870,16 @@ msgstr "%s no está en el directorio fuente por lo que no puede ser borrada"
msgid "%s is not a file"
msgstr "%s no es un archivo"
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr "confirme el borrado de %s"
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr "Por favor seleccione los adjuntos que serán borrados."
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr "borrado"
@@ -944,12 +944,12 @@ msgstr "no puedo leer de %s: %s "
msgid "rsync_command exited %d"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, fuzzy, perl-format
msgid "need Digest::SHA to index %s"
msgstr "se necesita la instalación de Digest::SHA1 para indexar %s"
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr "buscar"
@@ -1270,11 +1270,11 @@ msgstr "uso: --set variable=valor"
msgid "usage: --set-yaml var=value"
msgstr "uso: --set variable=valor"
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr "reconstruyendo el wiki.."
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr "actualizando el wiki.."
@@ -1288,47 +1288,52 @@ msgstr ""
"Es obligatorio especificar un url al wiki con el parámetro --url si se "
"utiliza el parámetro --cgi"
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, fuzzy, perl-format
+msgid "unsupported umask setting %s"
+msgstr "formato de página %s no soportado"
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr "no puedo emplear varios complementos rcs"
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "no he podido cargar el complemento externo %s necesario para %s"
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr ""
"se ha detectado en la página %s un bucle de preprocesado en la iteración "
"número %i"
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, perl-format
msgid "bad file name %s"
msgstr "el nombre de archivo %s es erróneo"
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr "no he encontrado la plantilla %s"
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr "si"
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, fuzzy, perl-format
msgid "invalid sort type %s"
msgstr "no conozco este tipo de ordenación %s"
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr "no conozco este tipo de ordenación %s"
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, perl-format
msgid "cannot match pages: %s"
msgstr "no encuentro páginas coincidentes: %s"
diff --git a/po/fr.po b/po/fr.po
index 19036038d..a1fa14f9d 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 3.141\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2010-10-03 10:42+0200\n"
"Last-Translator: Philippe Batailler <philippe.batailler@free.fr>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@@ -54,7 +54,7 @@ msgstr "Les préférences ont été enregistrées."
msgid "You are banned."
msgstr "Vous avez été banni."
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "Erreur"
@@ -139,7 +139,7 @@ msgstr "Échec du traitementdu modèle :"
msgid "deleting bucket.."
msgstr "Suppression du compartiment S3 (« bucket »)..."
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr "Terminé"
@@ -173,16 +173,16 @@ msgstr "Action interdite par allowed_attachments"
msgid "bad attachment filename"
msgstr "Nom de la pièce jointe incorrect"
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr "Envoi de la pièce jointe"
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
#, fuzzy
msgid "this attachment is not yet saved"
msgstr "%s est une pièce jointe, pas une page."
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -324,14 +324,14 @@ msgstr "Suppression de l'ancienne prévisualisation %s"
msgid "%s is not an editable page"
msgstr "%s n'est pas une page éditable"
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr "Création de %s"
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr "Édition de %s"
@@ -375,55 +375,55 @@ msgstr "Ce n'est pas une page."
msgid "%s is an attachment, not a page."
msgstr "%s est une pièce jointe, pas une page."
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr "Vous n'êtes pas autorisé à modifier %s"
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr "Vous ne pouvez pas modifier un fichier dont le mode est %s"
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr "Vous n'êtes pas autorisé à modifier le mode des fichiers"
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
#, fuzzy
msgid "you are not allowed to revert a merge"
msgstr "Vous n'êtes pas autorisé à modifier %s"
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, fuzzy, perl-format
msgid "Failed to revert commit %s"
msgstr "Échec de la compilation de %s"
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr "Vous devez indiquer %s lors de l'utilisation du greffon %s."
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
msgid "failed to run graphviz"
msgstr "Échec du lancement de graphviz"
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr "Ce programme n'est pas un programme graphviz valable"
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr "tohighlight contient un type de fichier inconnu : '%s'"
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr "Code source : %s"
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -448,7 +448,7 @@ msgstr "Échec de la lecture de %s : %s"
msgid "wrong size format \"%s\" (should be WxH)"
msgstr "Format de la taille incorrect \"%s\", (devrait être LxH)"
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, perl-format
msgid "failed to resize: %s"
msgstr "Échec du redimensionnement : %s"
@@ -542,7 +542,7 @@ msgstr "Page de redirection introuvable"
msgid "redir cycle is not allowed"
msgstr "Redirection cyclique non autorisée"
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
msgid "sort=meta requires a parameter"
msgstr "sort=meta demande un paramètre."
@@ -664,11 +664,11 @@ msgstr ""
"po_link_to=negotiated nécessite que usedirs soit activé, retour à "
"po_link_to=default."
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr "Fichiers PO mis à jour."
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
@@ -676,7 +676,7 @@ msgstr ""
"Impossible de supprimer cette traduction. Si la page maître est supprimée, "
"alors ses traductions seront supprimées."
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
@@ -684,56 +684,56 @@ msgstr ""
"Impossible de renommer cette traduction. Si la page maître est renommée, "
"alors ses traductions pourront être renommées."
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, perl-format
msgid "POT file (%s) does not exist"
msgstr "Le fichier POT %s n'existe pas."
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr "Impossible de copier le fichier PO underlay dans %s"
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, perl-format
msgid "failed to update %s"
msgstr "Impossible de mettre à jour %s"
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, perl-format
msgid "failed to copy the POT file to %s"
msgstr "Impossible de copier le fichier POT dans %s"
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr "N/A"
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, perl-format
msgid "failed to translate %s"
msgstr "Impossible de traduire %s"
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr "Fichiers PO obsolètes supprimés."
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, perl-format
msgid "failed to write %s"
msgstr "Impossible de modifier %s"
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
msgid "failed to translate"
msgstr "Impossible de traduire"
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
"Données gettext incorrectes, retour à la page précédente pour la poursuite "
"des modifications."
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr "La syntaxe de %s n'est pas correcte : il faut utiliser CODE|NOM"
@@ -866,16 +866,16 @@ msgstr "%s n'est pas dans srcdir et ne peut donc pas être supprimé"
msgid "%s is not a file"
msgstr "%s n'est pas un fichier"
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr "Suppression de %s confirmée"
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr "Veuillez choisir la pièce jointe à supprimer"
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr "supprimé"
@@ -940,12 +940,12 @@ msgstr "Impossible d'exécuter la commande rsync : %s"
msgid "rsync_command exited %d"
msgstr "la commande rsync s'est terminée avec le code : %d"
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, perl-format
msgid "need Digest::SHA to index %s"
msgstr "Digest::SHA1 est nécessaire pour indexer %s"
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr "recherche"
@@ -1262,11 +1262,11 @@ msgstr "Syntaxe : -- set var=valeur"
msgid "usage: --set-yaml var=value"
msgstr "Syntaxe : --set-yaml var=valeur"
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr "Reconstruction du wiki..."
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr "Rafraîchissement du wiki..."
@@ -1279,45 +1279,50 @@ msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"Vous devez indiquer l'URL du wiki par --url lors de l'utilisation de --cgi"
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, fuzzy, perl-format
+msgid "unsupported umask setting %s"
+msgstr "Format de page non reconnu %s"
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr "Impossible d'utiliser plusieurs systèmes de contrôle des versions"
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "Impossible de charger le greffon externe nécessaire au greffon %s : %s"
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr "Une boucle de prétraitement a été détectée sur %s à hauteur de %i"
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, perl-format
msgid "bad file name %s"
msgstr "Nom de fichier incorrect %s"
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr "Modèle de page %s introuvable"
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr "oui"
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, perl-format
msgid "invalid sort type %s"
msgstr "Type de tri %s inconnu"
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr "Type de tri %s inconnu"
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, perl-format
msgid "cannot match pages: %s"
msgstr "Impossible de trouver les pages : %s"
diff --git a/po/gu.po b/po/gu.po
index 5791cf65c..123cadd4a 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki-gu\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2007-01-11 16:05+0530\n"
"Last-Translator: Kartik Mistry <kartik.mistry@gmail.com>\n"
"Language-Team: Gujarati <team@utkarsh.org>\n"
@@ -51,7 +51,7 @@ msgstr "પ્રાથમિકતાઓ સંગ્રહાઇ."
msgid "You are banned."
msgstr "તમારા પર પ્રતિબંધ છે."
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "ક્ષતિ"
@@ -137,7 +137,7 @@ msgstr "ક્રિયા કરવામાં નિષ્ફળ:"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr "સંપૂર્ણ"
@@ -174,16 +174,16 @@ msgstr ""
msgid "bad attachment filename"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
#, fuzzy
msgid "this attachment is not yet saved"
msgstr "%s એ સુધારી શકાય તેવું પાનું નથી"
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -323,14 +323,14 @@ msgstr "જુનાં પાનાં દૂર કરે છે %s"
msgid "%s is not an editable page"
msgstr "%s એ સુધારી શકાય તેવું પાનું નથી"
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr "%s બનાવે છે"
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr "%s સુધારે છે"
@@ -378,54 +378,54 @@ msgstr "વાંચી શકાતી નથી %s: %s"
msgid "%s is an attachment, not a page."
msgstr "%s એ સુધારી શકાય તેવું પાનું નથી"
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
msgid "you are not allowed to revert a merge"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, fuzzy, perl-format
msgid "Failed to revert commit %s"
msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ"
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, fuzzy, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr "જ્યારે શોધ પ્લગઇન ઉપયોગ કરતા હોવ ત્યારે %s સ્પષ્ટ કરવું જ પડશે"
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
msgid "failed to run graphviz"
msgstr "ગ્રાફવિઝ ચલાવવામાં નિષ્ફળ"
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr "કાર્યક્રમએ યોગ્ય ગ્રાફવિઝ કાર્યક્રમ નથી"
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -450,7 +450,7 @@ msgstr "%s વાંચવામાં નિષ્ફળ: %s"
msgid "wrong size format \"%s\" (should be WxH)"
msgstr ""
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, perl-format
msgid "failed to resize: %s"
msgstr "માપ બદલવામાં નિષ્ફળ: %s"
@@ -544,7 +544,7 @@ msgstr "ફીડ મળ્યું નહી"
msgid "redir cycle is not allowed"
msgstr "ફીડ મળ્યું નહી"
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
msgid "sort=meta requires a parameter"
msgstr ""
@@ -658,71 +658,71 @@ msgid ""
"po_link_to=default"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, perl-format
msgid "POT file (%s) does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, fuzzy, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ"
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, fuzzy, perl-format
msgid "failed to update %s"
msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ"
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, fuzzy, perl-format
msgid "failed to copy the POT file to %s"
msgstr "%s કમ્પાઇલ કરવામાં નિષ્ફળ"
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, fuzzy, perl-format
msgid "failed to translate %s"
msgstr "માપ બદલવામાં નિષ્ફળ: %s"
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, fuzzy, perl-format
msgid "failed to write %s"
msgstr "%s લખવામાં નિષ્ફળ: %s"
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
#, fuzzy
msgid "failed to translate"
msgstr "ડોટ ચલાવવામાં નિષ્ફળ"
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
@@ -855,16 +855,16 @@ msgstr "%s એ %s દ્વારા તાળું મરાયેલ છે
msgid "%s is not a file"
msgstr "%s એ સુધારી શકાય તેવું પાનું નથી"
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr ""
@@ -930,12 +930,12 @@ msgstr "%s વાંચવામાં નિષ્ફળ: %s"
msgid "rsync_command exited %d"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, perl-format
msgid "need Digest::SHA to index %s"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr ""
@@ -1244,11 +1244,11 @@ msgstr ""
msgid "usage: --set-yaml var=value"
msgstr ""
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr "વીકી ફરીથી બનાવે છે.."
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr "વીકીને તાજી કરે છે.."
@@ -1260,45 +1260,50 @@ msgstr "ચર્ચા"
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "જ્યારે --cgi ઉપયોગ કરતાં હોય ત્યારે વીકીનું યુઆરએલ સ્પષ્ટ કરવું જ પડશે"
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, perl-format
+msgid "unsupported umask setting %s"
+msgstr ""
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr ""
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr ""
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, fuzzy, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr "%s પર શોધાયેલ લુપ %s પર ચલાવે છે %i ઉંડાણ પર"
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "ખરાબ ફાઇલ નામ છોડી દે છે %s"
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr "ટેમ્પલેટ %s મળ્યું નહી"
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr ""
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, fuzzy, perl-format
msgid "invalid sort type %s"
msgstr "અજાણ્યો ગોઠવણી પ્રકાર %s"
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr "અજાણ્યો ગોઠવણી પ્રકાર %s"
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, fuzzy, perl-format
msgid "cannot match pages: %s"
msgstr "વાંચી શકાતી નથી %s: %s"
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index d96522e64..970b94724 100644
--- a/po/ikiwiki.pot
+++ b/po/ikiwiki.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-06 16:29-0400\n"
+"POT-Creation-Date: 2012-02-02 22:29-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -52,7 +52,7 @@ msgstr ""
msgid "You are banned."
msgstr ""
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1454
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1480
msgid "Error"
msgstr ""
@@ -137,7 +137,7 @@ msgstr ""
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:225
msgid "done"
msgstr ""
@@ -171,15 +171,15 @@ msgstr ""
msgid "bad attachment filename"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:295
+#: ../IkiWiki/Plugin/attachment.pm:296
msgid "attachment upload"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:346
+#: ../IkiWiki/Plugin/attachment.pm:347
msgid "this attachment is not yet saved"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:363
+#: ../IkiWiki/Plugin/attachment.pm:365
msgid "just uploaded"
msgstr ""
@@ -203,83 +203,83 @@ msgstr ""
msgid "There are no broken links!"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:114
+#: ../IkiWiki/Plugin/comments.pm:113
#, perl-format
msgid "this comment needs %s"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:117
+#: ../IkiWiki/Plugin/comments.pm:116
msgid "moderation"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:138 ../IkiWiki/Plugin/format.pm:50
+#: ../IkiWiki/Plugin/comments.pm:137 ../IkiWiki/Plugin/format.pm:50
#, perl-format
msgid "unsupported page format %s"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:143
+#: ../IkiWiki/Plugin/comments.pm:142
msgid "comment must have content"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:201
+#: ../IkiWiki/Plugin/comments.pm:200
msgid "Anonymous"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:263
+#: ../IkiWiki/Plugin/comments.pm:262
msgid "Comment Moderation"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:379 ../IkiWiki/Plugin/editpage.pm:95
+#: ../IkiWiki/Plugin/comments.pm:378 ../IkiWiki/Plugin/editpage.pm:95
#: ../IkiWiki/Plugin/editpage.pm:101
msgid "bad page name"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:382
+#: ../IkiWiki/Plugin/comments.pm:381
#, perl-format
msgid "commenting on %s"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:399
+#: ../IkiWiki/Plugin/comments.pm:398
#, perl-format
msgid "page '%s' doesn't exist, so you can't comment"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:406
+#: ../IkiWiki/Plugin/comments.pm:405
#, perl-format
msgid "comments on page '%s' are closed"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:520
+#: ../IkiWiki/Plugin/comments.pm:519
msgid "comment stored for moderation"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:522
+#: ../IkiWiki/Plugin/comments.pm:521
msgid "Your comment will be posted after moderator review"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:535
+#: ../IkiWiki/Plugin/comments.pm:534
msgid "Added a comment"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:539
+#: ../IkiWiki/Plugin/comments.pm:538
#, perl-format
msgid "Added a comment: %s"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:608 ../IkiWiki/Plugin/userlist.pm:55
+#: ../IkiWiki/Plugin/comments.pm:607 ../IkiWiki/Plugin/userlist.pm:55
#: ../IkiWiki/Plugin/websetup.pm:272
msgid "you are not logged in as an admin"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:660
+#: ../IkiWiki/Plugin/comments.pm:659
msgid "Comment moderation"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:701
+#: ../IkiWiki/Plugin/comments.pm:700
msgid "comment moderation"
msgstr ""
-#: ../IkiWiki/Plugin/comments.pm:862
+#: ../IkiWiki/Plugin/comments.pm:861
#, perl-format
msgid "%i comment"
msgid_plural "%i comments"
@@ -289,7 +289,7 @@ msgstr[1] ""
#. translators: Here "Comment" is a verb;
#. translators: the user clicks on it to
#. translators: post a comment.
-#: ../IkiWiki/Plugin/comments.pm:872
+#: ../IkiWiki/Plugin/comments.pm:871
msgid "Comment"
msgstr ""
@@ -371,7 +371,7 @@ msgid "%s is an attachment, not a page."
msgstr ""
#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
-#: ../IkiWiki.pm:1674
+#: ../IkiWiki.pm:1700
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
@@ -399,11 +399,11 @@ msgstr ""
msgid "Must specify %s when using the %s plugin"
msgstr ""
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
msgid "failed to run graphviz"
msgstr ""
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr ""
@@ -440,7 +440,7 @@ msgstr ""
msgid "wrong size format \"%s\" (should be WxH)"
msgstr ""
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, perl-format
msgid "failed to resize: %s"
msgstr ""
@@ -504,11 +504,11 @@ msgstr ""
msgid "%s is locked and cannot be edited"
msgstr ""
-#: ../IkiWiki/Plugin/mdwn.pm:45
+#: ../IkiWiki/Plugin/mdwn.pm:52
msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed"
msgstr ""
-#: ../IkiWiki/Plugin/mdwn.pm:70
+#: ../IkiWiki/Plugin/mdwn.pm:96
#, perl-format
msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
msgstr ""
@@ -816,7 +816,7 @@ msgstr ""
msgid "confirm reversion of %s"
msgstr ""
-#: ../IkiWiki/Plugin/recentchangesdiff.pm:36
+#: ../IkiWiki/Plugin/recentchangesdiff.pm:47
msgid "(Diff truncated)"
msgstr ""
@@ -1217,11 +1217,11 @@ msgstr ""
msgid "usage: --set-yaml var=value"
msgstr ""
-#: ../ikiwiki.in:216
+#: ../ikiwiki.in:214
msgid "rebuilding wiki.."
msgstr ""
-#: ../ikiwiki.in:219
+#: ../ikiwiki.in:217
msgid "refreshing wiki.."
msgstr ""
@@ -1233,45 +1233,50 @@ msgstr ""
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, perl-format
+msgid "unsupported umask setting %s"
+msgstr ""
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr ""
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr ""
-#: ../IkiWiki.pm:1436
+#: ../IkiWiki.pm:1462
#, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr ""
-#: ../IkiWiki.pm:1630
+#: ../IkiWiki.pm:1656
#, perl-format
msgid "bad file name %s"
msgstr ""
-#: ../IkiWiki.pm:1930
+#: ../IkiWiki.pm:1956
#, perl-format
msgid "template %s not found"
msgstr ""
-#: ../IkiWiki.pm:2180
+#: ../IkiWiki.pm:2206
msgid "yes"
msgstr ""
-#: ../IkiWiki.pm:2257
+#: ../IkiWiki.pm:2283
#, perl-format
msgid "invalid sort type %s"
msgstr ""
-#: ../IkiWiki.pm:2278
+#: ../IkiWiki.pm:2304
#, perl-format
msgid "unknown sort type %s"
msgstr ""
-#: ../IkiWiki.pm:2414
+#: ../IkiWiki.pm:2440
#, perl-format
msgid "cannot match pages: %s"
msgstr ""
diff --git a/po/it.po b/po/it.po
index 70a33dabf..872a39e62 100644
--- a/po/it.po
+++ b/po/it.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2009-08-16 11:01+0100\n"
"Last-Translator: Luca Bruno <lucab@debian.org>\n"
"Language-Team: Italian TP <tp@lists.linux.it>\n"
@@ -50,7 +50,7 @@ msgstr "Preferenze salvate."
msgid "You are banned."
msgstr "Avete ricevuto un ban."
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "Errore"
@@ -137,7 +137,7 @@ msgstr "errore nell'elaborazione:"
msgid "deleting bucket.."
msgstr "eliminazione contenitore..."
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr "fatto"
@@ -171,16 +171,16 @@ msgstr "non permesso da allowed_attachments"
msgid "bad attachment filename"
msgstr "nome file dell'allegato non valido"
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr "carica allegato"
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
#, fuzzy
msgid "this attachment is not yet saved"
msgstr "%s è un allegato, non una pagina."
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -325,14 +325,14 @@ msgstr "rimozione vecchia anteprima %s"
msgid "%s is not an editable page"
msgstr "%s non è una pagina modificabile"
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr "creazione %s"
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr "modifica %s"
@@ -376,55 +376,55 @@ msgstr "non è una pagina"
msgid "%s is an attachment, not a page."
msgstr "%s è un allegato, non una pagina."
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr "non è permesso modificare %s"
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr "non è permesso lavorare su un file in modalità %s"
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr "non è permesso cambiare la modalità del file"
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
#, fuzzy
msgid "you are not allowed to revert a merge"
msgstr "non è permesso modificare %s"
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, fuzzy, perl-format
msgid "Failed to revert commit %s"
msgstr "errore nel compilare %s"
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr "Occorre specificare %s quando si usa il plugin %s"
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
msgid "failed to run graphviz"
msgstr "errore nell'eseguire graphviz"
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr "prog non è un programma graphviz valido"
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr "tohighlight contiene il tipo di file sconosciuto «%s»"
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr "Sorgente: %s"
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -449,7 +449,7 @@ msgstr "impossibile leggere %s: %s"
msgid "wrong size format \"%s\" (should be WxH)"
msgstr "Formato dimensione «%s» non valido (dovrebbe essere LxA)"
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, perl-format
msgid "failed to resize: %s"
msgstr "impossibile ridimensionare: %s"
@@ -542,7 +542,7 @@ msgstr "pagina di reindirizzamento non trovata"
msgid "redir cycle is not allowed"
msgstr "ciclo di reindirizzamento non ammesso"
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
#, fuzzy
msgid "sort=meta requires a parameter"
msgstr "sono richiesti i parametri \"to\" e \"from\""
@@ -664,11 +664,11 @@ msgstr ""
"po_link_to=negotiated richiede che venga abilitato usedirs, verrà utilizzato "
"po_link_to=default"
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr "file PO aggiornati"
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
@@ -676,7 +676,7 @@ msgstr ""
"Impossibile eliminare una traduzione. Tuttavia, se la pagina principale è "
"stata eliminata anche le traduzioni lo saranno."
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
@@ -684,56 +684,56 @@ msgstr ""
"Impossibile rinominare una traduzione. Tuttavia, se la pagina principale è "
"stata rinominata anche le traduzioni lo saranno."
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, perl-format
msgid "POT file (%s) does not exist"
msgstr "Il file POT (%s) non esiste"
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr "impossibile copiare il file PO di underlay in %s"
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, perl-format
msgid "failed to update %s"
msgstr "impossibile aggiornare %s"
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, perl-format
msgid "failed to copy the POT file to %s"
msgstr "impossibile copiare il file POT in %s"
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr "N/D"
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, perl-format
msgid "failed to translate %s"
msgstr "impossibile tradurre %s"
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr "file PO obsoleti rimossi"
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, perl-format
msgid "failed to write %s"
msgstr "impossibile scrivere %s"
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
msgid "failed to translate"
msgstr "impossibile tradurre"
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
"dati gettext non validi, tornare alle pagina precedente per continuare le "
"modifiche"
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
@@ -866,16 +866,16 @@ msgstr "%s non è in src, quindi non può essere eliminato"
msgid "%s is not a file"
msgstr "%s non è un file"
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr "conferma rimozione di %s"
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr "Selezionare l'allegato da rimuovere."
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr "rimosso"
@@ -940,12 +940,12 @@ msgstr "impossibile leggere %s"
msgid "rsync_command exited %d"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, fuzzy, perl-format
msgid "need Digest::SHA to index %s"
msgstr "è necessario Digest::SHA1 per l'indice di %s"
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr "cerca"
@@ -1257,11 +1257,11 @@ msgstr "utilizzo: --set var=valore"
msgid "usage: --set-yaml var=value"
msgstr "utilizzo: --set var=valore"
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr "ricostruzione wiki..."
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr "aggiornamento wiki..."
@@ -1273,45 +1273,50 @@ msgstr "Discussione"
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "Occorre specificare l'url del wiki tramite --url quando si usa --cgi"
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, fuzzy, perl-format
+msgid "unsupported umask setting %s"
+msgstr "formato pagina %s non supportato"
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr "impossibile usare più plugin rcs"
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr "impossibile caricare il plugin esterno per il plugin %s: %s"
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr "ciclo del preprocessore individuato su %s alla profondità %i"
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, perl-format
msgid "bad file name %s"
msgstr "nome file %s scorretto"
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr "modello %s non trovato"
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr "sì"
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, fuzzy, perl-format
msgid "invalid sort type %s"
msgstr "ordinamento %s sconosciuto"
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr "ordinamento %s sconosciuto"
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, perl-format
msgid "cannot match pages: %s"
msgstr "impossibile trovare pagine corrispondenti: %s"
diff --git a/po/pl.po b/po/pl.po
index e7b09df32..902ae8260 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 1.51\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2007-04-27 22:05+0200\n"
"Last-Translator: Pawel Tecza <ptecza@net.icm.edu.pl>\n"
"Language-Team: Debian L10n Polish <debian-l10n-polish@lists.debian.org>\n"
@@ -54,7 +54,7 @@ msgstr "Preferencje zapisane."
msgid "You are banned."
msgstr "Twój dostęp został zabroniony przez administratora."
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "Błąd"
@@ -141,7 +141,7 @@ msgstr "awaria w trakcie przetwarzania:"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr "gotowe"
@@ -178,16 +178,16 @@ msgstr ""
msgid "bad attachment filename"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
#, fuzzy
msgid "this attachment is not yet saved"
msgstr "Strona %s nie może być edytowana"
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -327,14 +327,14 @@ msgstr "usuwanie starej strony %s"
msgid "%s is not an editable page"
msgstr "Strona %s nie może być edytowana"
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr "tworzenie %s"
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr "edycja %s"
@@ -382,55 +382,55 @@ msgstr "awaria w trakcie odczytu %s: %s"
msgid "%s is an attachment, not a page."
msgstr "Strona %s nie może być edytowana"
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
msgid "you are not allowed to revert a merge"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, fuzzy, perl-format
msgid "Failed to revert commit %s"
msgstr "awaria w trakcie kompilowania %s"
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, fuzzy, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr "Wtyczka do wyszukiwarka wymaga podania %s"
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
#, fuzzy
msgid "failed to run graphviz"
msgstr "awaria w trakcie uruchamiania wtyczki graphviz"
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr "prog nie jest poprawnym programem graphviz"
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -455,7 +455,7 @@ msgstr "awaria w trakcie odczytu %s: %s"
msgid "wrong size format \"%s\" (should be WxH)"
msgstr ""
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, fuzzy, perl-format
msgid "failed to resize: %s"
msgstr "awaria w trakcie zmiany rozmiaru: %s"
@@ -557,7 +557,7 @@ msgstr "nieznaleziony kanał RSS"
msgid "redir cycle is not allowed"
msgstr "nieznaleziony kanał RSS"
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
msgid "sort=meta requires a parameter"
msgstr ""
@@ -671,71 +671,71 @@ msgid ""
"po_link_to=default"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, perl-format
msgid "POT file (%s) does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, fuzzy, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr "awaria w trakcie kompilowania %s"
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, fuzzy, perl-format
msgid "failed to update %s"
msgstr "awaria w trakcie kompilowania %s"
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, fuzzy, perl-format
msgid "failed to copy the POT file to %s"
msgstr "awaria w trakcie kompilowania %s"
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, fuzzy, perl-format
msgid "failed to translate %s"
msgstr "awaria w trakcie zmiany rozmiaru: %s"
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, fuzzy, perl-format
msgid "failed to write %s"
msgstr "awaria w trakcie zapisu %s: %s"
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
#, fuzzy
msgid "failed to translate"
msgstr "awaria w trakcie uruchamiania dot"
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
@@ -870,16 +870,16 @@ msgstr ""
msgid "%s is not a file"
msgstr "Strona %s nie może być edytowana"
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr ""
@@ -945,12 +945,12 @@ msgstr "awaria w trakcie odczytu %s: %s"
msgid "rsync_command exited %d"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, perl-format
msgid "need Digest::SHA to index %s"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr ""
@@ -1265,11 +1265,11 @@ msgstr ""
msgid "usage: --set-yaml var=value"
msgstr ""
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr "przebudowywanie wiki..."
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr "odświeżanie wiki..."
@@ -1283,45 +1283,50 @@ msgstr ""
"Użycie parametru --cgi wymaga podania adresu URL do wiki za pomocą parametru "
"--url"
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, perl-format
+msgid "unsupported umask setting %s"
+msgstr ""
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr ""
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr ""
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, fuzzy, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr "polecenie preprocesora %s wykryte w %s na głębokości %i"
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "pomijanie nieprawidłowej nazwy pliku %s"
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr "nieznaleziony szablon %s"
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr ""
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, fuzzy, perl-format
msgid "invalid sort type %s"
msgstr "nieznany sposób sortowania %s"
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr "nieznany sposób sortowania %s"
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, fuzzy, perl-format
msgid "cannot match pages: %s"
msgstr "awaria w trakcie odczytu %s: %s"
diff --git a/po/sv.po b/po/sv.po
index 064c3665b..666524d03 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2007-01-10 23:47+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -51,7 +51,7 @@ msgstr "Inställningar sparades."
msgid "You are banned."
msgstr "Du är bannlyst."
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "Fel"
@@ -138,7 +138,7 @@ msgstr "misslyckades med att behandla mall:"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr "klar"
@@ -175,15 +175,15 @@ msgstr ""
msgid "bad attachment filename"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
msgid "this attachment is not yet saved"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -323,14 +323,14 @@ msgstr "tar bort gammal sida %s"
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr "skapar %s"
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr "redigerar %s"
@@ -378,55 +378,55 @@ msgstr "kan inte läsa %s: %s"
msgid "%s is an attachment, not a page."
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
msgid "you are not allowed to revert a merge"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, fuzzy, perl-format
msgid "Failed to revert commit %s"
msgstr "misslyckades med att kompilera %s"
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, fuzzy, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr "Måste ange %s när sökinsticket används"
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
#, fuzzy
msgid "failed to run graphviz"
msgstr "linkmap misslyckades att köra dot"
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -451,7 +451,7 @@ msgstr "misslyckades med att skriva %s: %s"
msgid "wrong size format \"%s\" (should be WxH)"
msgstr ""
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, fuzzy, perl-format
msgid "failed to resize: %s"
msgstr "misslyckades med att skriva %s: %s"
@@ -549,7 +549,7 @@ msgstr "mallen %s hittades inte"
msgid "redir cycle is not allowed"
msgstr "mallen %s hittades inte"
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
msgid "sort=meta requires a parameter"
msgstr ""
@@ -663,71 +663,71 @@ msgid ""
"po_link_to=default"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, perl-format
msgid "POT file (%s) does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, fuzzy, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr "misslyckades med att kompilera %s"
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, fuzzy, perl-format
msgid "failed to update %s"
msgstr "misslyckades med att kompilera %s"
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, fuzzy, perl-format
msgid "failed to copy the POT file to %s"
msgstr "misslyckades med att kompilera %s"
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, fuzzy, perl-format
msgid "failed to translate %s"
msgstr "misslyckades med att skriva %s: %s"
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, fuzzy, perl-format
msgid "failed to write %s"
msgstr "misslyckades med att skriva %s: %s"
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
#, fuzzy
msgid "failed to translate"
msgstr "linkmap misslyckades att köra dot"
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
@@ -859,16 +859,16 @@ msgstr "%s är låst av %s och kan inte redigeras"
msgid "%s is not a file"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr ""
@@ -934,12 +934,12 @@ msgstr "misslyckades med att skriva %s: %s"
msgid "rsync_command exited %d"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, perl-format
msgid "need Digest::SHA to index %s"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr ""
@@ -1251,11 +1251,11 @@ msgstr ""
msgid "usage: --set-yaml var=value"
msgstr ""
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr "bygger om wiki.."
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr "uppdaterar wiki.."
@@ -1267,45 +1267,50 @@ msgstr "Diskussion"
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "Måste ange url till wiki med --url när --cgi används"
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, perl-format
+msgid "unsupported umask setting %s"
+msgstr ""
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr ""
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr ""
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, fuzzy, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr "%s förbehandlingsslinga detekterades på %s, djup %i"
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "hoppar över felaktigt filnamn %s"
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr "mallen %s hittades inte"
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr ""
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, fuzzy, perl-format
msgid "invalid sort type %s"
msgstr "okänd sorteringstyp %s"
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr "okänd sorteringstyp %s"
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, fuzzy, perl-format
msgid "cannot match pages: %s"
msgstr "kan inte läsa %s: %s"
diff --git a/po/tr.po b/po/tr.po
index 07360da08..ecf76c6ec 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 3.20091031\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2009-11-08 03:04+0200\n"
"Last-Translator: Recai Oktaş <roktas@debian.org>\n"
"Language-Team: Turkish <debian-l10n-turkish@lists.debian.org>\n"
@@ -48,7 +48,7 @@ msgstr "Tercihler kaydedildi."
msgid "You are banned."
msgstr ""
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "Hata"
@@ -133,7 +133,7 @@ msgstr ""
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr ""
@@ -167,15 +167,15 @@ msgstr ""
msgid "bad attachment filename"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
msgid "this attachment is not yet saved"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -315,14 +315,14 @@ msgstr ""
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr ""
@@ -366,54 +366,54 @@ msgstr ""
msgid "%s is an attachment, not a page."
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
msgid "you are not allowed to revert a merge"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, perl-format
msgid "Failed to revert commit %s"
msgstr ""
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr ""
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
msgid "failed to run graphviz"
msgstr ""
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -436,7 +436,7 @@ msgstr ""
msgid "wrong size format \"%s\" (should be WxH)"
msgstr ""
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, perl-format
msgid "failed to resize: %s"
msgstr ""
@@ -526,7 +526,7 @@ msgstr ""
msgid "redir cycle is not allowed"
msgstr ""
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
msgid "sort=meta requires a parameter"
msgstr ""
@@ -638,70 +638,70 @@ msgid ""
"po_link_to=default"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, perl-format
msgid "POT file (%s) does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, perl-format
msgid "failed to update %s"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, perl-format
msgid "failed to copy the POT file to %s"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, perl-format
msgid "failed to translate %s"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, perl-format
msgid "failed to write %s"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
msgid "failed to translate"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
@@ -832,16 +832,16 @@ msgstr ""
msgid "%s is not a file"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr ""
@@ -906,12 +906,12 @@ msgstr ""
msgid "rsync_command exited %d"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, perl-format
msgid "need Digest::SHA to index %s"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr ""
@@ -1215,11 +1215,11 @@ msgstr ""
msgid "usage: --set-yaml var=value"
msgstr ""
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr ""
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr ""
@@ -1231,45 +1231,50 @@ msgstr ""
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, perl-format
+msgid "unsupported umask setting %s"
+msgstr ""
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr ""
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr ""
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr ""
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, perl-format
msgid "bad file name %s"
msgstr ""
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr ""
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr ""
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, perl-format
msgid "invalid sort type %s"
msgstr ""
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr ""
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, perl-format
msgid "cannot match pages: %s"
msgstr ""
diff --git a/po/vi.po b/po/vi.po
index b33475e23..47c34effa 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-11 18:36-0400\n"
+"POT-Creation-Date: 2011-11-30 16:33-0400\n"
"PO-Revision-Date: 2007-01-13 15:31+1030\n"
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
@@ -52,7 +52,7 @@ msgstr "Tùy thích đã được lưu."
msgid "You are banned."
msgstr "Bạn bị cấm ra."
-#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1453
+#: ../IkiWiki/CGI.pm:464 ../IkiWiki/CGI.pm:465 ../IkiWiki.pm:1470
msgid "Error"
msgstr "Lỗi"
@@ -139,7 +139,7 @@ msgstr "mẫu không xử lý được:"
msgid "deleting bucket.."
msgstr ""
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:226
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:227
msgid "done"
msgstr "xong"
@@ -176,15 +176,15 @@ msgstr ""
msgid "bad attachment filename"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:293
+#: ../IkiWiki/Plugin/attachment.pm:295
msgid "attachment upload"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:344
+#: ../IkiWiki/Plugin/attachment.pm:346
msgid "this attachment is not yet saved"
msgstr ""
-#: ../IkiWiki/Plugin/attachment.pm:361
+#: ../IkiWiki/Plugin/attachment.pm:363
msgid "just uploaded"
msgstr ""
@@ -323,14 +323,14 @@ msgstr "đang gỡ bỏ trang cũ %s"
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/Plugin/editpage.pm:305
+#: ../IkiWiki/Plugin/editpage.pm:307
#, perl-format
msgid "creating %s"
msgstr "đang tạo %s"
-#: ../IkiWiki/Plugin/editpage.pm:323 ../IkiWiki/Plugin/editpage.pm:342
-#: ../IkiWiki/Plugin/editpage.pm:353 ../IkiWiki/Plugin/editpage.pm:398
-#: ../IkiWiki/Plugin/editpage.pm:440
+#: ../IkiWiki/Plugin/editpage.pm:325 ../IkiWiki/Plugin/editpage.pm:344
+#: ../IkiWiki/Plugin/editpage.pm:355 ../IkiWiki/Plugin/editpage.pm:400
+#: ../IkiWiki/Plugin/editpage.pm:442
#, perl-format
msgid "editing %s"
msgstr "đang sửa %s"
@@ -378,55 +378,55 @@ msgstr "không thể đọc %s: %s"
msgid "%s is an attachment, not a page."
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:776 ../IkiWiki/Plugin/git.pm:839
-#: ../IkiWiki.pm:1671
+#: ../IkiWiki/Plugin/git.pm:777 ../IkiWiki/Plugin/git.pm:840
+#: ../IkiWiki.pm:1690
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:798
+#: ../IkiWiki/Plugin/git.pm:799
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:802
+#: ../IkiWiki/Plugin/git.pm:803
msgid "you are not allowed to change file modes"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:872
+#: ../IkiWiki/Plugin/git.pm:873
msgid "you are not allowed to revert a merge"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:891
+#: ../IkiWiki/Plugin/git.pm:892
#, fuzzy, perl-format
msgid "Failed to revert commit %s"
msgstr "lỗi biên dịch %s"
-#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:39
+#: ../IkiWiki/Plugin/google.pm:26 ../IkiWiki/Plugin/search.pm:41
#, fuzzy, perl-format
msgid "Must specify %s when using the %s plugin"
msgstr "Cần phải xác định %s khi dùng bổ sung tìm kiếm"
-#: ../IkiWiki/Plugin/graphviz.pm:68
+#: ../IkiWiki/Plugin/graphviz.pm:87
#, fuzzy
msgid "failed to run graphviz"
msgstr "linkmap không chạy dot được"
-#: ../IkiWiki/Plugin/graphviz.pm:91
+#: ../IkiWiki/Plugin/graphviz.pm:143
msgid "prog not a valid graphviz program"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:88
+#: ../IkiWiki/Plugin/highlight.pm:83
#, perl-format
msgid "tohighlight contains unknown file type '%s'"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:99
+#: ../IkiWiki/Plugin/highlight.pm:94
#, perl-format
msgid "Source code: %s"
msgstr ""
-#: ../IkiWiki/Plugin/highlight.pm:184
+#: ../IkiWiki/Plugin/highlight.pm:179
msgid ""
"warning: highlight perl module not available; falling back to pass through"
msgstr ""
@@ -451,7 +451,7 @@ msgstr "lỗi ghi %s: %s"
msgid "wrong size format \"%s\" (should be WxH)"
msgstr ""
-#: ../IkiWiki/Plugin/img.pm:123
+#: ../IkiWiki/Plugin/img.pm:122
#, fuzzy, perl-format
msgid "failed to resize: %s"
msgstr "lỗi ghi %s: %s"
@@ -549,7 +549,7 @@ msgstr "không tìm thấy mẫu %s"
msgid "redir cycle is not allowed"
msgstr "không tìm thấy mẫu %s"
-#: ../IkiWiki/Plugin/meta.pm:425
+#: ../IkiWiki/Plugin/meta.pm:427
msgid "sort=meta requires a parameter"
msgstr ""
@@ -663,71 +663,71 @@ msgid ""
"po_link_to=default"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:461
+#: ../IkiWiki/Plugin/po.pm:468
msgid "updated PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:484
+#: ../IkiWiki/Plugin/po.pm:491
msgid ""
"Can not remove a translation. If the master page is removed, however, its "
"translations will be removed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:504
+#: ../IkiWiki/Plugin/po.pm:511
msgid ""
"Can not rename a translation. If the master page is renamed, however, its "
"translations will be renamed as well."
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:950
+#: ../IkiWiki/Plugin/po.pm:957
#, perl-format
msgid "POT file (%s) does not exist"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:964
+#: ../IkiWiki/Plugin/po.pm:971
#, fuzzy, perl-format
msgid "failed to copy underlay PO file to %s"
msgstr "lỗi biên dịch %s"
-#: ../IkiWiki/Plugin/po.pm:973
+#: ../IkiWiki/Plugin/po.pm:980
#, fuzzy, perl-format
msgid "failed to update %s"
msgstr "lỗi biên dịch %s"
-#: ../IkiWiki/Plugin/po.pm:979
+#: ../IkiWiki/Plugin/po.pm:986
#, fuzzy, perl-format
msgid "failed to copy the POT file to %s"
msgstr "lỗi biên dịch %s"
-#: ../IkiWiki/Plugin/po.pm:1015
+#: ../IkiWiki/Plugin/po.pm:1022
msgid "N/A"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1026
+#: ../IkiWiki/Plugin/po.pm:1033
#, fuzzy, perl-format
msgid "failed to translate %s"
msgstr "lỗi ghi %s: %s"
-#: ../IkiWiki/Plugin/po.pm:1105
+#: ../IkiWiki/Plugin/po.pm:1112
msgid "removed obsolete PO files"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1162 ../IkiWiki/Plugin/po.pm:1174
-#: ../IkiWiki/Plugin/po.pm:1213
+#: ../IkiWiki/Plugin/po.pm:1169 ../IkiWiki/Plugin/po.pm:1181
+#: ../IkiWiki/Plugin/po.pm:1220
#, fuzzy, perl-format
msgid "failed to write %s"
msgstr "lỗi ghi %s: %s"
-#: ../IkiWiki/Plugin/po.pm:1172
+#: ../IkiWiki/Plugin/po.pm:1179
#, fuzzy
msgid "failed to translate"
msgstr "linkmap không chạy dot được"
-#: ../IkiWiki/Plugin/po.pm:1225
+#: ../IkiWiki/Plugin/po.pm:1232
msgid "invalid gettext data, go back to previous page to continue edit"
msgstr ""
-#: ../IkiWiki/Plugin/po.pm:1268
+#: ../IkiWiki/Plugin/po.pm:1275
#, perl-format
msgid "%s has invalid syntax: must use CODE|NAME"
msgstr ""
@@ -859,16 +859,16 @@ msgstr "%s bị %s khoá nên không thể sửa được"
msgid "%s is not a file"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:150
+#: ../IkiWiki/Plugin/remove.pm:149
#, perl-format
msgid "confirm removal of %s"
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:187
+#: ../IkiWiki/Plugin/remove.pm:186
msgid "Please select the attachments to remove."
msgstr ""
-#: ../IkiWiki/Plugin/remove.pm:231
+#: ../IkiWiki/Plugin/remove.pm:230
msgid "removed"
msgstr ""
@@ -934,12 +934,12 @@ msgstr "lỗi ghi %s: %s"
msgid "rsync_command exited %d"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:196
+#: ../IkiWiki/Plugin/search.pm:199
#, perl-format
msgid "need Digest::SHA to index %s"
msgstr ""
-#: ../IkiWiki/Plugin/search.pm:250
+#: ../IkiWiki/Plugin/search.pm:253
msgid "search"
msgstr ""
@@ -1251,11 +1251,11 @@ msgstr ""
msgid "usage: --set-yaml var=value"
msgstr ""
-#: ../ikiwiki.in:215
+#: ../ikiwiki.in:216
msgid "rebuilding wiki.."
msgstr "đang xây dựng lại wiki.."
-#: ../ikiwiki.in:218
+#: ../ikiwiki.in:219
msgid "refreshing wiki.."
msgstr "đang làm tươi wiki.."
@@ -1268,45 +1268,50 @@ msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"Cần phải xác định địa chỉ URL tới wiki với « --url » khi dùng « --cgi »"
-#: ../IkiWiki.pm:629
+#: ../IkiWiki.pm:605
+#, perl-format
+msgid "unsupported umask setting %s"
+msgstr ""
+
+#: ../IkiWiki.pm:645
msgid "cannot use multiple rcs plugins"
msgstr ""
-#: ../IkiWiki.pm:659
+#: ../IkiWiki.pm:675
#, perl-format
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr ""
-#: ../IkiWiki.pm:1435
+#: ../IkiWiki.pm:1452
#, fuzzy, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr "vòng lặp tiền xử lý %s được phát hiện trên %s ở độ sâu %i"
-#: ../IkiWiki.pm:1627
+#: ../IkiWiki.pm:1646
#, fuzzy, perl-format
msgid "bad file name %s"
msgstr "đang bỏ qua tên tập tin sai %s"
-#: ../IkiWiki.pm:1927
+#: ../IkiWiki.pm:1946
#, perl-format
msgid "template %s not found"
msgstr "không tìm thấy mẫu %s"
-#: ../IkiWiki.pm:2177
+#: ../IkiWiki.pm:2196
msgid "yes"
msgstr ""
-#: ../IkiWiki.pm:2254
+#: ../IkiWiki.pm:2273
#, fuzzy, perl-format
msgid "invalid sort type %s"
msgstr "kiểu sắp xếp không rõ %s"
-#: ../IkiWiki.pm:2275
+#: ../IkiWiki.pm:2294
#, perl-format
msgid "unknown sort type %s"
msgstr "kiểu sắp xếp không rõ %s"
-#: ../IkiWiki.pm:2411
+#: ../IkiWiki.pm:2430
#, fuzzy, perl-format
msgid "cannot match pages: %s"
msgstr "không thể đọc %s: %s"
diff --git a/t/cvs.t b/t/cvs.t
index 5ed377ed5..9afd5a7e9 100755
--- a/t/cvs.t
+++ b/t/cvs.t
@@ -1,88 +1,539 @@
#!/usr/bin/perl
use warnings;
use strict;
-my $dir;
-BEGIN {
- $dir="/tmp/ikiwiki-test-cvs.$$";
- my $cvs=`which cvs`;
- chomp $cvs;
- my $cvsps=`which cvsps`;
- chomp $cvsps;
- if (! -x $cvs || ! -x $cvsps) {
- eval q{
- use Test::More skip_all => "cvs or cvsps not available"
- }
- }
- if (! mkdir($dir)) {
- die $@;
+use Test::More; my $total_tests = 42;
+use IkiWiki;
+
+my $default_test_methods = '^test_*';
+my @required_programs = qw(
+ cvs
+ cvsps
+);
+my @required_modules = qw(
+ File::chdir
+ File::MimeInfo
+ Date::Parse
+ File::Temp
+ File::ReadBackwards
+);
+my $dir = "/tmp/ikiwiki-test-cvs.$$";
+
+# TESTS FOR GENERAL META-BEHAVIOR
+
+sub test_web_comments {
+ # how much of the web-edit workflow are we actually testing?
+ # because we want to test comments:
+ # - when the first comment for page.mdwn is added, and page/ is
+ # created to hold the comment, page/ isn't added to CVS control,
+ # so the comment isn't either
+ # - side effect for moderated comments: after approval they
+ # show up normally AND are still pending, too
+ # - comments.pm treats rcs_commit_staged() as returning conflicts?
+}
+
+sub test_chdir_magic {
+ # cvs.pm operations are always occurring inside $config{srcdir}
+ # other ikiwiki operations are occurring wherever, and are unaffected
+ # when are we bothering with "local $CWD" and when aren't we?
+}
+
+sub test_cvs_info {
+ # inspect "Repository revision" (used in code)
+ # inspect "Sticky Options" (used in tests to verify existence of "-kb")
+}
+
+sub test_cvs_run_cvs {
+ # extract the stdout-redirect thing
+ # - prove that it silences stdout
+ # - prove that stderr comes through just fine
+ # prove that when cvs exits nonzero (fail), function exits false
+ # prove that when cvs exits zero (success), function exits true
+ # always pass -f, just in case
+ # steal from git.pm: safe_git(), run_or_{die,cry,non}
+ # - open() instead of system()
+ # always call cvs_run_cvs(), don't ever run 'cvs' directly
+}
+
+sub test_cvs_run_cvsps {
+ # parameterize command like run_cvs()
+ # expose config vars for e.g. "--cvs-direct -z 30"
+ # always pass -x (unless proven otherwise)
+ # always pass -b HEAD (configurable like gitmaster_branch?)
+}
+
+sub test_cvs_parse_cvsps {
+ # extract method from rcs_recentchanges
+ # document expected changeset format
+ # document expected changeset delimiter
+ # try: cvsps -q -x -p && ls | sort -rn | head -100
+ # - benchmark against current impl (that uses File::ReadBackwards)
+}
+
+sub test_cvs_parse_log_accum {
+ # add new, preferred method for rcs_recentchanges to use
+ # teach log_accum to record commits (into transient?)
+ # script cvsps to bootstrap (or replace?) commit history
+ # teach ikiwiki-makerepo to set up log_accum and commit_prep
+ # why are NetBSD commit mails unreliable?
+ # - is it working for CVS commits and failing for web commits?
+}
+
+sub test_cvs_is_controlling {
+ # with no args:
+ # - if srcdir is in CVS, return true
+ # - else, return false
+ # with a dir arg:
+ # - if dir is in CVS, return true
+ # - else, return false
+ # with a file arg:
+ # - is there anything that wants the answer? if so, answer
+ # - else, die
+}
+
+
+# TESTS FOR GENERAL PLUGIN API CALLS
+
+sub test_checkconfig {
+ # undef cvspath, expect "ikiwiki"
+ # define cvspath normally, get it back
+ # define cvspath in a subdir, get it back?
+ # define cvspath with extra slashes, get sanitized version back
+ # - yoink test_extra_path_slashes
+ # undef cvs_wrapper, expect $config{wrappers} same size as before
+
+ my $initial_cvspath = $config{cvspath};
+ $config{cvspath} = "/ikiwiki//";
+ IkiWiki::checkconfig();
+ is(
+ $config{cvspath},
+ $initial_cvspath,
+ q{rcs_recentchanges assumes checkconfig has sanitized cvspath},
+ );
+}
+
+sub test_getsetup {
+ # anything worth testing?
+}
+
+sub test_genwrapper {
+ # testable directly? affects rcs_add, but are we exercising this?
+}
+
+
+# TESTS FOR VCS PLUGIN API CALLS
+
+sub test_rcs_update {
+ # can it assume we're under CVS control? or must it check?
+ # anything else worth testing?
+}
+
+sub test_rcs_prepedit {
+ # can it assume we're under CVS control? or must it check?
+ # for existing file, returns latest revision in repo
+ # - what's this used for? should it return latest revision in checkout?
+ # for new file, returns empty string
+}
+
+sub test_rcs_commit {
+ # can it assume we're under CVS control? or must it check?
+ # if someone else changed the page since rcs_prepedit was called:
+ # - try to merge into our working copy
+ # - if merge succeeds, proceed to commit
+ # - else, return page content with the conflict markers in it
+ # commit:
+ # - if success, return undef
+ # - else, revert + return content with the conflict markers in it
+ # git.pm receives "session" param -- useful here?
+ # web commits start with "web commit {by,from} "
+ # seeing File::chdir errors on commit?
+}
+
+sub test_rcs_commit_staged {
+ # if commit succeeds, return undef
+ # else, warn and return error message (really? or just non-undef?)
+}
+
+sub test_rcs_add {
+ my @changes = IkiWiki::rcs_recentchanges(3);
+ is_total_number_of_changes(\@changes, 0);
+
+ my $message = "add a top-level ASCII (non-UTF-8) page via VCS API";
+ my $file = q{test0.mdwn};
+ add_and_commit($file, $message, q{* some plain ASCII text});
+ is_newly_added($file);
+ is_in_keyword_substitution_mode($file, undef);
+ @changes = IkiWiki::rcs_recentchanges(3);
+ is_total_number_of_changes(\@changes, 1);
+ is_most_recent_change(\@changes, stripext($file), $message);
+
+ $message = "add a top-level dir via VCS API";
+ my $dir1 = q{test3};
+ can_mkdir($dir1);
+ IkiWiki::rcs_add($dir1);
+ # XXX test that the wrapper hangs here without our genwrapper()
+ # XXX test that the wrapper doesn't hang here with it
+ @changes = IkiWiki::rcs_recentchanges(3);
+ is_total_number_of_changes(\@changes, 1); # despite the dir add
+ IkiWiki::rcs_commit(
+ file => $dir1,
+ message => $message,
+ token => "oom",
+ );
+ @changes = IkiWiki::rcs_recentchanges(3);
+ is_total_number_of_changes(\@changes, 1); # dirs aren't tracked
+
+ $message = "add a non-ASCII (UTF-8) text file in an un-added dir";
+ can_mkdir($_) for (qw(test4 test4/test5));
+ $file = q{test4/test5/test1.mdwn};
+ add_and_commit($file, $message, readfile("t/test1.mdwn"));
+ is_newly_added($file);
+ is_in_keyword_substitution_mode($file, undef);
+ @changes = IkiWiki::rcs_recentchanges(3);
+ is_total_number_of_changes(\@changes, 2);
+ is_most_recent_change(\@changes, stripext($file), $message);
+
+ $message = "add a binary file in an un-added dir, and commit_staged";
+ can_mkdir(q{test6});
+ $file = q{test6/test7.ico};
+ my $bindata_in = readfile("doc/favicon.ico", 1);
+ my $bindata_out = sub { readfile($config{srcdir} . "/$file", 1) };
+ writefile($file, $config{srcdir}, $bindata_in, 1);
+ is(&$bindata_out(), $bindata_in, q{binary files match before commit});
+ IkiWiki::rcs_add($file);
+ IkiWiki::rcs_commit_staged(message => $message);
+ is_newly_added($file);
+ is_in_keyword_substitution_mode($file, q{-kb});
+ is(&$bindata_out(), $bindata_in, q{binary files match after commit});
+ @changes = IkiWiki::rcs_recentchanges(3);
+ is_total_number_of_changes(\@changes, 3);
+ is_most_recent_change(\@changes, $file, $message);
+ ok(
+ unlink($config{srcdir} . "/$file"),
+ q{can remove file in order to re-fetch it from repo},
+ );
+ ok(! -e $config{srcdir} . "/$file", q{really removed file});
+ IkiWiki::rcs_update();
+ is(&$bindata_out(), $bindata_in, q{binary files match after re-fetch});
+
+ $message = "add a UTF-8 and a binary file in different dirs";
+ my $file1 = "test8/test9.mdwn";
+ my $file2 = "test10/test11.ico";
+ can_mkdir(qw(test8 test10));
+ writefile($file1, $config{srcdir}, readfile('t/test2.mdwn'));
+ writefile($file2, $config{srcdir}, $bindata_in, 1);
+ IkiWiki::rcs_add($_) for ($file1, $file2);
+ IkiWiki::rcs_commit_staged(message => $message);
+ is_newly_added($_) for ($file1, $file2);
+ is_in_keyword_substitution_mode($file1, undef);
+ is_in_keyword_substitution_mode($file2, '-kb');
+ @changes = IkiWiki::rcs_recentchanges(3);
+ is_total_number_of_changes(\@changes, 3);
+ @changes = IkiWiki::rcs_recentchanges(4);
+ is_total_number_of_changes(\@changes, 4);
+ # XXX test for both files in the commit, and no other files
+ is_most_recent_change(\@changes, $file2, $message);
+
+ # prevent web edits from attempting to create .../CVS/foo.mdwn
+ # on case-insensitive filesystems, also prevent .../cvs/foo.mdwn
+ # unless your "CVS" is something else and we've made it configurable
+
+ # can it assume we're under CVS control? or must it check?
+
+ # extract method: filetype-guessing
+ # add a binary file, remove it, add a text file by same name, no -kb?
+ # add a text file, remove it, add a binary file by same name, -kb?
+}
+
+sub test_rcs_remove {
+ # can it assume we're under CVS control? or must it check?
+ # remove a top-level file
+ # - rcs_commit
+ # - inspect recentchanges: one new change, file removed
+ # remove two files (in different dirs)
+ # - rcs_commit_staged
+ # - inspect recentchanges: one new change, both files removed
+}
+
+sub test_rcs_rename {
+ # can it assume we're under CVS control? or must it check?
+ # rename a file in the same dir
+ # - rcs_commit_staged
+ # - inspect recentchanges: one new change, one file removed, one added
+ # rename a file into a different dir
+ # - rcs_commit_staged
+ # - inspect recentchanges: one new change, one file removed, one added
+ # rename a file into a not-yet-existing dir
+ # - rcs_commit_staged
+ # - inspect recentchanges: one new change, one file removed, one added
+ # is it safe to use "mv"? what if $dest is somehow outside the wiki?
+}
+
+sub test_rcs_recentchanges {
+ my @changes = IkiWiki::rcs_recentchanges(3);
+ is_total_number_of_changes(\@changes, 0);
+
+ my $message = "Add a page via CVS directly";
+ my $file = q{test2.mdwn};
+ writefile($file, $config{srcdir}, readfile(q{t/test2.mdwn}));
+ system "cd $config{srcdir}"
+ . " && cvs add $file >/dev/null 2>&1";
+ system "cd $config{srcdir}"
+ . " && cvs commit -m \"$message\" $file >/dev/null";
+
+ @changes = IkiWiki::rcs_recentchanges(3);
+ is_total_number_of_changes(\@changes, 1);
+ is_most_recent_change(\@changes, stripext($file), $message);
+
+ # CVS commits run ikiwiki once for every committed file (!)
+ # - commit_prep alone should fix this
+ # CVS multi-dir commits show only the first dir in recentchanges
+ # - commit_prep might also fix this?
+ # CVS post-commit hook is amped off to avoid locking against itself
+ # - commit_prep probably doesn't fix this... but maybe?
+ # can it assume we're under CVS control? or must it check?
+ # don't worry whether we're called with a number (we always are)
+ # other rcs tests already inspect much of the returned structure
+ # CVS commits say "cvs" and get the right committer
+ # web commits say "web" and get the right committer
+ # - and don't start with "web commit {by,from} "
+ # "nickname" -- can we ever meaningfully set this?
+
+ # prefer log_accum, then cvsps, else die
+ # run the high-level recentchanges tests 2x (once for each method)
+ # - including in other test subs that check recentchanges?
+}
+
+sub test_rcs_diff {
+ # can it assume we're under CVS control? or must it check?
+ # in list context, return all lines (with \n), up to $maxlines if set
+ # in scalar context, return the whole diff, up to $maxlines if set
+}
+
+sub test_rcs_getctime {
+ # can it assume we're under CVS control? or must it check?
+ # given a file, find its creation time, else return 0
+ # first implement in the obvious way
+ # then cache
+}
+
+sub test_rcs_getmtime {
+ # can it assume we're under CVS control? or must it check?
+ # given a file, find its modification time, else return 0
+ # first implement in the obvious way
+ # then cache
+}
+
+sub test_rcs_receive {
+ my $description = q{rcs_receive doesn't make sense for CVS};
+ exists $IkiWiki::hooks{rcs}{rcs_receive}
+ ? fail($description)
+ : pass($description);
+}
+
+sub test_rcs_preprevert {
+ # can it assume we're under CVS control? or must it check?
+ # given a patchset number, return structure describing what'd happen:
+ # - see doc/plugins/write.mdwn:rcs_receive()
+ # don't forget about attachments
+}
+
+sub test_rcs_revert {
+ # test rcs_recentchanges() real darn well
+ # extract read-backwards patchset parser from rcs_recentchanges()
+ # recentchanges: given max, return list of changeset/files/etc.
+ # revert: given changeset ID, return list of file/rev/action
+ #
+ # can it assume we're under CVS control? or must it check?
+ # given a patchset number, stage the revert for rcs_commit_staged()
+ # if commit succeeds, return undef
+ # else, warn and return error message (really? or just non-undef?)
+}
+
+sub main {
+ my $test_methods = defined $ENV{TEST_METHOD}
+ ? $ENV{TEST_METHOD}
+ : $default_test_methods;
+
+ _startup($test_methods eq $default_test_methods);
+ _runtests(_get_matching_test_subs($test_methods));
+ _shutdown($test_methods eq $default_test_methods);
+}
+
+main();
+
+
+# INTERNAL SUPPORT ROUTINES
+
+sub _plan_for_test_more {
+ my $can_plan = shift;
+
+ foreach my $program (@required_programs) {
+ my $program_path = `which $program`;
+ chomp $program_path;
+ return plan(skip_all => "$program not available")
+ unless -x $program_path;
}
- foreach my $module ('File::ReadBackwards', 'File::MimeInfo') {
+
+ foreach my $module (@required_modules) {
eval qq{use $module};
- if ($@) {
- eval qq{
- use Test::More skip_all => "$module not available"
- }
- }
+ return plan(skip_all => "$module not available")
+ if $@;
}
+
+ return plan(skip_all => "can't create $dir: $!")
+ unless mkdir($dir);
+ return plan(skip_all => "can't remove $dir: $!")
+ unless rmdir($dir);
+
+ return unless $can_plan;
+
+ return plan(tests => $total_tests);
}
-use Test::More tests => 12;
-
-BEGIN { use_ok("IkiWiki"); }
-
-%config=IkiWiki::defaultconfig();
-$config{rcs} = "cvs";
-$config{srcdir} = "$dir/src";
-$config{cvsrepo} = "$dir/repo";
-$config{cvspath} = "ikiwiki";
-IkiWiki::loadplugins();
-IkiWiki::checkconfig();
-
-my $cvsrepo = "$dir/repo";
-
-system "cvs -d $cvsrepo init >/dev/null";
-system "mkdir $dir/ikiwiki >/dev/null";
-system "cd $dir/ikiwiki && cvs -d $cvsrepo import -m import ikiwiki VENDOR RELEASE >/dev/null";
-system "rm -rf $dir/ikiwiki >/dev/null";
-system "cvs -d $cvsrepo co -d $config{srcdir} ikiwiki >/dev/null";
-
-# Web commit
-my $test1 = readfile("t/test1.mdwn");
-writefile('test1.mdwn', $config{srcdir}, $test1);
-IkiWiki::rcs_add("test1.mdwn");
-IkiWiki::rcs_commit(
- files => "test1.mdwn",
- message => "Added the first page",
- token => "moo"
-);
-my @changes;
-@changes = IkiWiki::rcs_recentchanges(3);
-
-is($#changes, 0);
-is($changes[0]{message}[0]{"line"}, "Added the first page");
-is($changes[0]{pages}[0]{"page"}, "test1");
-
-# Manual commit
-my $message = "Added the second page";
-
-my $test2 = readfile("t/test2.mdwn");
-writefile('test2.mdwn', $config{srcdir}, $test2);
-system "cd $config{srcdir} && cvs add test2.mdwn >/dev/null 2>&1";
-system "cd $config{srcdir} && cvs commit -m \"$message\" test2.mdwn >/dev/null";
-
-@changes = IkiWiki::rcs_recentchanges(3);
-is($#changes, 1);
-is($changes[0]{message}[0]{"line"}, $message);
-is($changes[0]{pages}[0]{"page"}, "test2");
-is($changes[1]{pages}[0]{"page"}, "test1");
-
-# extra slashes in the path shouldn't break things
-$config{cvspath} = "/ikiwiki//";
-IkiWiki::checkconfig();
-@changes = IkiWiki::rcs_recentchanges(3);
-is($#changes, 1);
-is($changes[0]{message}[0]{"line"}, $message);
-is($changes[0]{pages}[0]{"page"}, "test2");
-is($changes[1]{pages}[0]{"page"}, "test1");
-
-system "rm -rf $dir";
+# http://stackoverflow.com/questions/607282/whats-the-best-way-to-discover-all-subroutines-a-perl-module-has
+
+use B qw/svref_2object/;
+
+sub in_package {
+ my ($coderef, $package) = @_;
+ my $cv = svref_2object($coderef);
+ return if not $cv->isa('B::CV') or $cv->GV->isa('B::SPECIAL');
+ return $cv->GV->STASH->NAME eq $package;
+}
+
+sub list_module {
+ my $module = shift;
+ no strict 'refs';
+ return grep {
+ defined &{"$module\::$_"} and in_package(\&{*$_}, $module)
+ } keys %{"$module\::"};
+}
+
+
+# support for xUnit-style testing, a la Test::Class
+
+sub _startup {
+ my $can_plan = shift;
+ _plan_for_test_more($can_plan);
+ _generate_test_config();
+}
+
+sub _shutdown {
+ my $had_plan = shift;
+ done_testing() unless $had_plan;
+}
+
+sub _setup {
+ _generate_test_repo();
+}
+
+sub _teardown {
+ system "rm -rf $dir";
+}
+
+sub _runtests {
+ my @coderefs = (@_);
+ for (@coderefs) {
+ _setup();
+ $_->();
+ _teardown();
+ }
+}
+
+sub _get_matching_test_subs {
+ my $re = shift;
+ no strict 'refs';
+ return map { \&{*$_} } grep { /$re/ } sort(list_module('main'));
+}
+
+sub _generate_test_config {
+ %config = IkiWiki::defaultconfig();
+ $config{rcs} = "cvs";
+ $config{srcdir} = "$dir/src";
+ $config{cvsrepo} = "$dir/repo";
+ $config{cvspath} = "ikiwiki";
+ IkiWiki::loadplugins();
+ IkiWiki::checkconfig();
+}
+
+sub _generate_test_repo {
+ die "can't create $dir: $!"
+ unless mkdir($dir);
+
+ my $cvs = "cvs -d $config{cvsrepo}";
+ my $dn = ">/dev/null";
+ system "$cvs init $dn";
+ system "mkdir $dir/$config{cvspath} $dn";
+ system "cd $dir/$config{cvspath} && "
+ . "$cvs import -m import $config{cvspath} VENDOR RELEASE $dn";
+ system "rm -rf $dir/$config{cvspath} $dn";
+ system "$cvs co -d $config{srcdir} $config{cvspath} $dn";
+}
+
+sub add_and_commit {
+ my ($file, $message, $contents) = @_;
+ writefile($file, $config{srcdir}, $contents);
+ IkiWiki::rcs_add($file);
+ IkiWiki::rcs_commit(
+ file => $file,
+ message => $message,
+ token => "moo",
+ );
+}
+
+sub can_mkdir {
+ my $dir = shift;
+ ok(
+ mkdir($config{srcdir} . "/$dir"),
+ qq{can mkdir $dir},
+ );
+}
+
+sub is_newly_added {
+ my $file = shift;
+ is(
+ IkiWiki::Plugin::cvs::cvs_info("Repository revision", $file),
+ '1.1',
+ qq{$file is newly added to CVS},
+ );
+}
+
+sub is_in_keyword_substitution_mode {
+ my ($file, $mode) = @_;
+ $mode = '(none)' unless defined $mode;
+ is(
+ IkiWiki::Plugin::cvs::cvs_info("Sticky Options", $file),
+ $mode,
+ qq{$file is in CVS with expected keyword substitution mode},
+ );
+}
+
+sub is_total_number_of_changes {
+ my ($changes, $expected_total) = @_;
+ is(
+ $#{$changes},
+ $expected_total - 1,
+ qq{total commits == $expected_total},
+ );
+}
+
+sub is_most_recent_change {
+ my ($changes, $page, $message) = @_;
+ is(
+ $changes->[0]{message}[0]{"line"},
+ $message,
+ q{most recent commit's first message line matches},
+ );
+ is(
+ $changes->[0]{pages}[0]{"page"},
+ $page,
+ q{most recent commit's first pagename matches},
+ );
+}
+
+sub stripext {
+ my ($file, $extension) = @_;
+ $extension = '\..+?' unless defined $extension;
+ $file =~ s|$extension$||g;
+ return $file;
+}
diff --git a/t/htmlize.t b/t/htmlize.t
index a436748f9..1569c8dcf 100755
--- a/t/htmlize.t
+++ b/t/htmlize.t
@@ -1,7 +1,7 @@
#!/usr/bin/perl
use warnings;
use strict;
-use Test::More tests => 32;
+use Test::More tests => 31;
use Encode;
BEGIN { use_ok("IkiWiki"); }
@@ -14,9 +14,8 @@ IkiWiki::checkconfig();
is(IkiWiki::htmlize("foo", "foo", "mdwn", "foo\n\nbar\n"), "<p>foo</p>\n\n<p>bar</p>\n",
"basic");
-is(IkiWiki::htmlize("foo", "foo", "mdwn", readfile("t/test1.mdwn")),
- Encode::decode_utf8(qq{<p><img src="../images/o.jpg" alt="o" title="&oacute;" />\nóóóóó</p>\n}),
- "utf8; bug #373203");
+my $val=Encode::encode_utf8(IkiWiki::htmlize("foo", "foo", "mdwn", readfile("t/test1.mdwn")));
+ok($val =~/&oacute;/ && $val =~/óóóóó/, "utf8; bug #373203");
ok(IkiWiki::htmlize("foo", "foo", "mdwn", readfile("t/test2.mdwn")),
"this file crashes markdown if it's fed in as decoded utf-8");
@@ -26,8 +25,6 @@ sub gotcha {
}
ok(!gotcha(q{<a href="javascript:alert('GOTCHA')">click me</a>}),
"javascript url");
-ok(!gotcha(q{<a href="javascript&#x3A;alert('GOTCHA')">click me</a>}),
- "partially encoded javascript url");
ok(!gotcha(q{<a href="jscript:alert('GOTCHA')">click me</a>}),
"jscript url");
ok(!gotcha(q{<a href="vbscript:alert('GOTCHA')">click me</a>}),