Merge branch 'prv/po' into pub/po

master
intrigeri 2008-11-04 23:39:35 +01:00
commit 4097834357
18 changed files with 280 additions and 111 deletions

View File

@ -23,7 +23,8 @@ sub preprocess (@) { #{{{
error(sprintf(gettext("unsupported page format %s"), $format)); error(sprintf(gettext("unsupported page format %s"), $format));
} }
return IkiWiki::htmlize($params{page}, $params{destpage}, $format, $text); return IkiWiki::htmlize($params{page}, $params{destpage}, $format,
IkiWiki::preprocess($params{page}, $params{destpage}, $text));
} #}}} } #}}}
1 1

View File

@ -19,11 +19,12 @@ use Memoize;
my %translations; my %translations;
our %filtered; our %filtered;
## FIXME: makes some test cases cry once every two tries; this may be
## related to the artificial way the testsuite is run, or not.
# memoize("istranslatable");
memoize("_istranslation"); memoize("_istranslation");
memoize("percenttranslated"); memoize("percenttranslated");
# FIXME: memoizing istranslatable() makes some test cases fail once every
# two tries; this may be related to the artificial way the testsuite is
# run, or not.
# memoize("istranslatable");
# backup references to subs that will be overriden # backup references to subs that will be overriden
my %origsubs; my %origsubs;
@ -37,7 +38,8 @@ sub import {
hook(type => "needsbuild", id => "po", call => \&needsbuild); hook(type => "needsbuild", id => "po", call => \&needsbuild);
hook(type => "filter", id => "po", call => \&filter); hook(type => "filter", id => "po", call => \&filter);
hook(type => "htmlize", id => "po", call => \&htmlize); hook(type => "htmlize", id => "po", call => \&htmlize);
hook(type => "pagetemplate", id => "po", call => \&pagetemplate); hook(type => "pagetemplate", id => "po", call => \&pagetemplate, last => 1);
hook(type => "editcontent", id => "po", call => \&editcontent);
inject(name => "IkiWiki::bestlink", call => \&mybestlink); inject(name => "IkiWiki::bestlink", call => \&mybestlink);
inject(name => "IkiWiki::beautify_urlpath", call => \&mybeautify_urlpath); inject(name => "IkiWiki::beautify_urlpath", call => \&mybeautify_urlpath);
inject(name => "IkiWiki::targetpage", call => \&mytargetpage); inject(name => "IkiWiki::targetpage", call => \&mytargetpage);
@ -110,14 +112,16 @@ sub checkconfig () { #{{{
sub potfile ($) { #{{{ sub potfile ($) { #{{{
my $masterfile=shift; my $masterfile=shift;
(my $name, my $dir, my $suffix) = fileparse($masterfile, qr/\.[^.]*/); (my $name, my $dir, my $suffix) = fileparse($masterfile, qr/\.[^.]*/);
return File::Spec->catfile($dir, $name . ".pot"); $dir='' if $dir eq './';
return File::Spec->catpath('', $dir, $name . ".pot");
} #}}} } #}}}
sub pofile ($$) { #{{{ sub pofile ($$) { #{{{
my $masterfile=shift; my $masterfile=shift;
my $lang=shift; my $lang=shift;
(my $name, my $dir, my $suffix) = fileparse($masterfile, qr/\.[^.]*/); (my $name, my $dir, my $suffix) = fileparse($masterfile, qr/\.[^.]*/);
return File::Spec->catfile($dir, $name . "." . $lang . ".po"); $dir='' if $dir eq './';
return File::Spec->catpath('', $dir, $name . "." . $lang . ".po");
} #}}} } #}}}
sub refreshpot ($) { #{{{ sub refreshpot ($) { #{{{
@ -171,17 +175,22 @@ sub needsbuild () { #{{{
# refresh/create POT and PO files as needed # refresh/create POT and PO files as needed
my $updated_po_files=0; my $updated_po_files=0;
foreach my $page (keys %pagesources) { foreach my $page (keys %pagesources) {
my $pageneedsbuild = grep { $_ eq $pagesources{$page} } @$needsbuild;
if (istranslatable($page)) { if (istranslatable($page)) {
my $pageneedsbuild = grep { $_ eq $pagesources{$page} } @$needsbuild;
my $updated_pot_file=0;
my $file=srcfile($pagesources{$page}); my $file=srcfile($pagesources{$page});
if ($pageneedsbuild || ! -e potfile($file)) { if ($pageneedsbuild || ! -e potfile($file)) {
refreshpot($file); refreshpot($file);
$updated_pot_file=1;
} }
my @pofiles; my @pofiles;
foreach my $lang (keys %{$config{po_slave_languages}}) { foreach my $lang (keys %{$config{po_slave_languages}}) {
my $pofile=pofile($file, $lang); my $pofile=pofile($file, $lang);
if ($pageneedsbuild || ! -e $pofile) { my $pofile_rel=pofile($pagesources{$page}, $lang);
if ($pageneedsbuild || $updated_pot_file || ! -e $pofile) {
push @pofiles, $pofile; push @pofiles, $pofile;
push @$needsbuild, $pofile_rel
unless grep { $_ eq $pofile_rel } @$needsbuild;
} }
} }
if (@pofiles) { if (@pofiles) {
@ -192,7 +201,7 @@ sub needsbuild () { #{{{
} }
} }
# check staged changes in and trigger a wiki refresh. # check staged changes in
if ($updated_po_files) { if ($updated_po_files) {
if ($config{rcs}) { if ($config{rcs}) {
IkiWiki::disable_commit_hook(); IkiWiki::disable_commit_hook();
@ -201,8 +210,6 @@ sub needsbuild () { #{{{
IkiWiki::enable_commit_hook(); IkiWiki::enable_commit_hook();
IkiWiki::rcs_update(); IkiWiki::rcs_update();
} }
IkiWiki::refresh();
IkiWiki::saveindex();
# refresh module's private variables # refresh module's private variables
undef %filtered; undef %filtered;
undef %translations; undef %translations;
@ -211,7 +218,6 @@ sub needsbuild () { #{{{
} }
} }
# make existing translations depend on the corresponding master page # make existing translations depend on the corresponding master page
foreach my $master (keys %translations) { foreach my $master (keys %translations) {
foreach my $slave (values %{$translations{$master}}) { foreach my $slave (values %{$translations{$master}}) {
@ -282,25 +288,31 @@ sub mybestlink ($$) { #{{{
return ""; return "";
} #}}} } #}}}
# We use filter to convert PO to the master page's type, # We use filter to convert PO to the master page's format,
# since other plugins should not work on PO files # since the rest of ikiwiki should not work on PO files.
sub filter (@) { #{{{ sub filter (@) { #{{{
my %params = @_; my %params = @_;
my $page = $params{page}; my $page = $params{page};
my $destpage = $params{destpage}; my $destpage = $params{destpage};
my $content = decode_utf8(encode_utf8($params{content})); my $content = decode_utf8(encode_utf8($params{content}));
# decide if this is a PO file that should be converted into a translated document, return $content if ( ! istranslation($page)
# and perform various sanity checks || ( exists $filtered{$page}{$destpage}
if (! istranslation($page) || $filtered{$page}{$destpage}) { && $filtered{$page}{$destpage} eq 1 ));
return $content;
} # CRLF line terminators make poor Locale::Po4a feel bad
$content=~s/\r\n/\n/g;
# Locale::Po4a needs an input file, and I'm too lazy to learn
# how to disguise a variable as a file
my $infile = File::Temp->new(TEMPLATE => "ikiwiki-po-filter-in.XXXXXXXXXX",
TMPDIR => 1)->filename;
writefile(basename($infile), File::Spec->tmpdir, $content);
my ($masterpage, $lang) = ($page =~ /(.*)[.]([a-z]{2})$/); my ($masterpage, $lang) = ($page =~ /(.*)[.]([a-z]{2})$/);
my $file=srcfile(exists $params{file} ? $params{file} : $IkiWiki::pagesources{$page});
my $masterfile = srcfile($pagesources{$masterpage}); my $masterfile = srcfile($pagesources{$masterpage});
my (@pos,@masters); my (@pos,@masters);
push @pos,$file; push @pos,$infile;
push @masters,$masterfile; push @masters,$masterfile;
my %options = ( my %options = (
"markdown" => (pagetype($masterfile) eq 'mdwn') ? 1 : 0, "markdown" => (pagetype($masterfile) eq 'mdwn') ? 1 : 0,
@ -311,11 +323,11 @@ sub filter (@) { #{{{
'file_in_name' => \@masters, 'file_in_name' => \@masters,
'file_in_charset' => 'utf-8', 'file_in_charset' => 'utf-8',
'file_out_charset' => 'utf-8', 'file_out_charset' => 'utf-8',
) or error("[po/filter:$file]: failed to translate"); ) or error("[po/filter:$infile]: failed to translate");
my $tmpfh = File::Temp->new(TEMPLATE => "/tmp/ikiwiki-po-filter-out.XXXXXXXXXX"); my $tmpout = File::Temp->new(TEMPLATE => "ikiwiki-po-filter-out.XXXXXXXXXX",
my $tmpout = $tmpfh->filename; TMPDIR => 1)->filename;
$doc->write($tmpout) or error("[po/filter:$file] could not write $tmpout"); $doc->write($tmpout) or error("[po/filter:$infile] could not write $tmpout");
$content = readfile($tmpout) or error("[po/filter:$file] could not read $tmpout"); $content = readfile($tmpout) or error("[po/filter:$infile] could not read $tmpout");
$filtered{$page}{$destpage}=1; $filtered{$page}{$destpage}=1;
return $content; return $content;
} #}}} } #}}}
@ -393,6 +405,7 @@ sub pagetemplate (@) { #{{{
my $page=$params{page}; my $page=$params{page};
my $destpage=$params{destpage}; my $destpage=$params{destpage};
my $template=$params{template}; my $template=$params{template};
my ($masterpage, $lang) = ($page =~ /(.*)[.]([a-z]{2})$/) if istranslation($page);
if (istranslation($page) && $template->query(name => "percenttranslated")) { if (istranslation($page) && $template->query(name => "percenttranslated")) {
$template->param(percenttranslated => percenttranslated($page)); $template->param(percenttranslated => percenttranslated($page));
@ -411,7 +424,6 @@ sub pagetemplate (@) { #{{{
} }
} }
elsif (istranslation($page)) { elsif (istranslation($page)) {
my ($masterpage, $curlang) = ($page =~ /(.*)[.]([a-z]{2})$/);
add_depends($page, $masterpage); add_depends($page, $masterpage);
foreach my $translation (values %{$translations{$masterpage}}) { foreach my $translation (values %{$translations{$masterpage}}) {
add_depends($page, $translation); add_depends($page, $translation);
@ -426,7 +438,6 @@ sub pagetemplate (@) { #{{{
# prevent future breakage when ikiwiki internals change. # prevent future breakage when ikiwiki internals change.
# Known limitations are preferred to future random bugs. # Known limitations are preferred to future random bugs.
if ($template->param('discussionlink') && istranslation($page)) { if ($template->param('discussionlink') && istranslation($page)) {
my ($masterpage, $lang) = ($page =~ /(.*)[.]([a-z]{2})$/);
$template->param('discussionlink' => htmllink( $template->param('discussionlink' => htmllink(
$page, $page,
$destpage, $destpage,
@ -436,8 +447,24 @@ sub pagetemplate (@) { #{{{
linktext => gettext("Discussion"), linktext => gettext("Discussion"),
)); ));
} }
# remove broken parentlink to ./index.html on home page's translations
if ($template->param('parentlinks')
&& istranslation($page)
&& $masterpage eq "index") {
$template->param('parentlinks' => []);
}
} # }}} } # }}}
sub editcontent () { #{{{
my %params=@_;
# as we're previewing or saving a page, the content may have
# changed, so tell the next filter() invocation it must not be lazy
if (exists $filtered{$params{page}}{$params{page}}) {
delete $filtered{$params{page}}{$params{page}};
}
return $params{content};
} #}}}
sub istranslatable ($) { #{{{ sub istranslatable ($) { #{{{
my $page=shift; my $page=shift;
my $file=$pagesources{$page}; my $file=$pagesources{$page};

4
debian/changelog vendored
View File

@ -1,4 +1,4 @@
ikiwiki (2.68) UNRELEASED; urgency=low ikiwiki (2.68) unstable; urgency=low
* Add support for checking pushes from untrusted git committers. This can be * Add support for checking pushes from untrusted git committers. This can be
used to set up anonymous git pushes, and other similar things. used to set up anonymous git pushes, and other similar things.
@ -43,7 +43,7 @@ ikiwiki (2.68) UNRELEASED; urgency=low
* Preserve syslog setting when doing `ikiwiki -setup foo -dumpsetup bar` * Preserve syslog setting when doing `ikiwiki -setup foo -dumpsetup bar`
* Several fixes to --render mode. * Several fixes to --render mode.
-- Joey Hess <joeyh@debian.org> Fri, 17 Oct 2008 20:11:02 -0400 -- Joey Hess <joeyh@debian.org> Mon, 03 Nov 2008 16:31:11 -0500
ikiwiki (2.67) unstable; urgency=low ikiwiki (2.67) unstable; urgency=low

View File

@ -1,3 +1,12 @@
The `IkiWiki::pagetitle` function does not respect title changes via `meta.title`. It really should, so that links rendered with `htmllink` get the proper title in the link text. The `IkiWiki::pagetitle` function does not respect title changes via `meta.title`. It really should, so that links rendered with `htmllink` get the proper title in the link text.
--[[madduck]] --[[madduck]]
> Agreed. [[todo/using_meta_titles_for_parentlinks]] contains a beginning of
> solution. A few quick notes about it:
> - Using <code>inline</code> would avoid the redefinition + code duplication.
> - A few plugins would need to be upgraded.
> - It may be necessary to adapt the testsuite in `t/pagetitle.t`, as well.
> --[[intrigeri]]

View File

@ -0,0 +1,17 @@
When applying my usual copyright and licensing header to a [[plugins/txt]]
page, garbled output is created.
Here is the header:
\[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 Free
Software Foundation, Inc."]]
\[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
id="license" text="Permission is granted to copy, distribute and/or modify
this document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled
[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
--[[tschwinge]]

View File

@ -8,3 +8,19 @@ that provides a `IS_HOMEPAGE` template variable? --[[JasonBlevins]]
> Hmm, one way to work around this is to put a meta title directive on the > Hmm, one way to work around this is to put a meta title directive on the
> index page. Then TITLE will be that, rather than WIKINAME, and your > index page. Then TITLE will be that, rather than WIKINAME, and your
> template should work. --[[Joey]] > template should work. --[[Joey]]
>> I ended up writing a [path][] plugin since I had some other
>> path-specific conditional things to include in my templates.
>>
>> So now I can do things like this:
>>
>> <title>
>> <TMPL_VAR WIKINAME><TMPL_UNLESS IS_HOMEPAGE>: <TMPL_VAR TITLE></TMPL_UNLESS>
>> </title>
>>
>> But also more complicated path-specific conditionals like
>> `IN_DIR_SUBDIR` to indicate subpages of `/dir/subdir/`. I've got a
>> few other small plugins brewing so I'll try to put up some contrib
>> pages for them soon. --[[JasonBlevins]]
[path]: http://code.jblevins.org/ikiwiki/plugins.git/plain/path.pm

View File

@ -19,3 +19,14 @@ take it as far as implementing "replies" to other comments.
## More dynamic `rootpage` parameter of inline plugin? ## More dynamic `rootpage` parameter of inline plugin?
(Moved to [[todo/dynamic_rootpage]]) (Moved to [[todo/dynamic_rootpage]])
---
## Excluding Images
Is there a simple way to exclude images, stylesheets, and other
"non-page" files other than a blacklist approach like
`pages="* and !*.png and !*.css"`? --[[JasonBlevins]]
> The [[plugins/filecheck]] plugin adds a 'ispage()' pagespec test that can do that.
> --[[Joey]]

View File

@ -1,21 +0,0 @@
ikiwiki 2.63 released with [[!toggle text="these changes"]]
[[!toggleable text="""
* Set cookies HttpOnly.
* Typo. Closes: #[497003](http://bugs.debian.org/497003)
* Ignore failure to install files into /etc, in case install is running as
non-root.
* Work around perl $\_ scoping nonsense that caused breakage when loading
external plugins.
* style.css: Add missing semicolon. Closes: #[497176](http://bugs.debian.org/497176)
* filecheck: Fall back to testing for binary or plain text files
if no mime type is detected.
* table: Support header=column to make the table header be the first
column of the data. (AlexandreDupas)
* For fine control over what characters are allowed, unescaped in
source filenames, the wiki\_file\_chars setting is added. For example,
set to "-[:alnum:]+/.\_" to disable colons from being used in source files
(which can cause troubl om Windows).
* po/Makefile: update po files when the pot file has changed.
Closes: #[497951](http://bugs.debian.org/497951)
* editpage: New core plugin factoring out page editing to allow disabling it
if desired."""]]

View File

@ -0,0 +1,44 @@
ikiwiki 2.68 released with [[!toggle text="these changes"]]
[[!toggleable text="""
* Add support for checking pushes from untrusted git committers. This can be
used to set up anonymous git pushes, and other similar things.
* format: New plugin, allows embedding differently formatted text inside a
page (ie, otl inside a mdwn page, or syntax highlighted code inside a
page).
* relativedate: New javascript-alicious plugin that makes all dates display
relative, in a very nice way, if I say so myself.
* Optimise the no-op post-commit hook, to speed up web edits by a fraction
of a second.
* git: Allow [[sha1\_commit]] to be used in the diffurl, to support cgit.
* shortcut: Fix display of shortcuts while previewing.
* Plugins that used to override displaytime should instead override
formattime. displaytime will call that, and may wrap markup around the
formatted time.
* Add an underlay for javascript, and add ikiwiki.js containing some utility
code.
* toggle: Stop embedding the full toggle code on each page using it, and
move it to toggle.js in the javascript underlay.
* recentchanges: Make feed links point back to anchors on the recentchanges
page. (JasonBlevins)
* Fix issue with utf-8 in wikiname breaking session cookies, by
entity-encoding the wikiname in the session cookie.
* Use the pure perl Data::Dumper when generating setup files to ensure that
utf-8 characters are written out as such, and not as the encoded perl
strings the C Data::Dumper produces.
* inline: Only the last feed link was put on the page, fix this to include
all feed links. So rss will be included along with atom, and pages with
multiple feeds will get links added for all feeds.
* tag: When tagpage is set, force the links created by tagging to point at
the toplevel tagpage, and not closer subpages. The html links already went
there, but internally the links were not recorded as absolute, which could
cause confusing backlinks etc.
* Add an inject function, that can be used by plugins that want to
replace one of ikiwiki's functions with their own version.
(This is a scary thing that grubs through the symbol table, and replaces
all exported occurances of a function with the injected version.)
* external: RPC functions can be injected to replace exported functions.
* Updated French translation. Closes: #[502694](http://bugs.debian.org/502694)
* Updated Spanish translation from the ever vigilant Victor Moral.
* Updated Danish translation from Jonas Smedegaard. Closes: #[503117](http://bugs.debian.org/503117)
* Preserve syslog setting when doing `ikiwiki -setup foo -dumpsetup bar`
* Several fixes to --render mode."""]]

View File

@ -52,10 +52,13 @@ Any thoughts on this?
>>> [[plugins/write]]. I think you can just inject wrappers about a few ikiwiki >>> [[plugins/write]]. I think you can just inject wrappers about a few ikiwiki
>>> functions, rather than adding hooks. The `inject` function is pretty >>> functions, rather than adding hooks. The `inject` function is pretty
>>> insane^Wlow level, but seems to work great. --[[Joey]] >>> insane^Wlow level, but seems to work great. --[[Joey]]
>> >>>
>>>> Thanks a lot, it seems to be a nice interface for what I was trying to achieve. >>>> Thanks a lot, it seems to be a nice interface for what I was trying to achieve.
>>>> I may be forced to wait two long weeks before I have a chance to confirm >>>> I may be forced to wait two long weeks before I have a chance to confirm
>>>> this. Stay tuned. --[[intrigeri]] >>>> this. Stay tuned. --[[intrigeri]]
>>>>
>>>>> I've updated the plugin to use `inject`. It is now fully self-contained,
>>>>> and does not modify the core anymore. --[[intrigeri]]
>> >>
>> The Discussion pages issue is something I am not sure about yet. But I will >> The Discussion pages issue is something I am not sure about yet. But I will
>> probably decide that "slave" pages, being only translations, don't deserve >> probably decide that "slave" pages, being only translations, don't deserve

View File

@ -5,3 +5,5 @@ logo link to \[[hurd/logo]] / <http://www.bddebian.com/~wiki/hurd/logo/>
instead of linking to the PNG image file. --[[tschwinge]] instead of linking to the PNG image file. --[[tschwinge]]
> Done, use link=somepage --[[Joey]] > Done, use link=somepage --[[Joey]]
It would be handy if the `class` and `id` tags were passed through to the surrounding `table` in the case of `caption` being present. Would this break anything? --[[neale]]

View File

@ -185,12 +185,12 @@ Automatic PO files update
Committing changes to a "master" page: Committing changes to a "master" page:
1. updates the POT file and the PO files for the supported languages 1. updates the POT file, as well as the PO files for the "slave"
(this is done in the `needsbuild` hook); the updated PO files are languages (this is done in the `needsbuild` hook); the updated PO
then put under version control files are then put under version control;
2. triggers a refresh of the corresponding HTML slave pages (this is 2. triggers a refresh of the corresponding HTML slave pages (this is
achieved by making any "slave" page dependent on the corresponding achieved by making any "slave" page dependent on the corresponding
"master" page, in the `needsbuild` hook) "master" page, in the `needsbuild` hook).
Also, when the plugin has just been enabled, or when a page has just Also, when the plugin has just been enabled, or when a page has just
been declared as being translatable, the needed POT and PO files are been declared as being translatable, the needed POT and PO files are
@ -199,33 +199,23 @@ created, and the PO files are checked into version control.
Discussion pages Discussion pages
---------------- ----------------
Discussion should happen in the language in which the pages are written for Discussion should happen in the language in which the pages are
real, *i.e.* the "master" one. If discussion pages are enabled, "slave" pages written for real, *i.e.* the "master" one. If discussion pages are
therefore link to the "master" page's discussion page. enabled, "slave" pages therefore link to the "master" page's
discussion page.
Translating Translating
----------- -----------
One can edit the PO files using ikiwiki's CGI (a message-by-message interface One can edit the PO files using ikiwiki's CGI (a message-by-message
could also be implemented at some point). interface could also be implemented at some point).
If [[tips/untrusted_git_push]] is setup, one can edit the PO files in her If [[tips/untrusted_git_push]] is setup, one can edit the PO files in
preferred `$EDITOR`, without needing to be online. her preferred `$EDITOR`, without needing to be online.
TODO TODO
==== ====
OTHERLANGUAGES dependencies
---------------------------
Pages using `OTHERLANGUAGES` depend on any "master" and "slave" pages
whose status is being displayed. It is supposed to trigger dependency
loops, but no practical bugs were noticed yet.
Should pages using the `OTHERLANGUAGES` template loop be declared as
linking to the same page in other versions? To be rigorous, they
should, but this may clutter the backlinks.
Security checks Security checks
--------------- ---------------
@ -243,46 +233,31 @@ gettext/po4a rough corners
changes bla.fr.po in repo1; then pushing repo1 to repo2 triggers changes bla.fr.po in repo1; then pushing repo1 to repo2 triggers
a PO update, that changes bla.fr.po in repo2; etc.; fixed in a PO update, that changes bla.fr.po in repo2; etc.; fixed in
`629968fc89bced6727981c0a1138072631751fee`? `629968fc89bced6727981c0a1138072631751fee`?
- new translations created in the web interface must get proper charset/encoding - new translations created in the web interface must get proper
gettext metadata, else the next automatic PO update removes any non-ascii charset/encoding gettext metadata, else the next automatic PO update
chars; possible solution: put such metadata into the Pot file, and let it removes any non-ascii chars; possible solution: put such metadata
propagate; should be fixed in `773de05a7a1ee68d2bed173367cf5e716884945a`, time into the Pot file, and let it propagate; should be fixed in
will tell. `773de05a7a1ee68d2bed173367cf5e716884945a`, time will tell.
Misc. improvements Misc. improvements
------------------ ------------------
### preview
preview does not work for PO files.
### automatic POT/PO update
Use the `change` hook instead of `needsbuild`?
### page titles ### page titles
Use nice page titles from meta plugin in links, as inline already does. This is Use nice page titles from meta plugin in links, as inline already
actually a duplicate for does. This is actually a duplicate for
[[bugs/pagetitle_function_does_not_respect_meta_titles]], which might be fixed [[bugs/pagetitle_function_does_not_respect_meta_titles]], which might
by something like [[todo/using_meta_titles_for_parentlinks]]. be fixed by something like [[todo/using_meta_titles_for_parentlinks]].
### websetup ### websetup
Which configuration settings are safe enough for websetup? Which configuration settings are safe enough for websetup?
### parentlinks
When the wiki home page is translatable, the parentlinks plugin sets
`./index.html` as its translations' single parent link. Ideally, the home page's
translations should get no parent link at all, just like the version written in
the master language.
### backlinks ### backlinks
If a given translatable `sourcepage.mdwn` links to \[[destpage]], If a given translatable `sourcepage.mdwn` links to \[[destpage]],
`sourcepage.LL.po` also link to \[[destpage]], and the latter has the master `sourcepage.LL.po` also link to \[[destpage]], and the latter has the
page *and* all its translations listed in the backlinks. master page *and* all its translations listed in the backlinks.
Translation quality assurance Translation quality assurance
----------------------------- -----------------------------

View File

@ -1,2 +1,19 @@
Err, is this really fixed in 2.21? I can't find it anywhere in 2.32.3 Err, is this really fixed in 2.21? I can't find it anywhere in 2.32.3
(debian unstable) (debian unstable)
-----
I just did a `--dumpsetup` with the current version from the Git repository
and the default option is
# use '!'-prefixed preprocessor directives?
prefix_directives => 0,
My impression was that this should be enabled by default now. --[[JasonBlevins]]
> As stated in `debian/NEWS`:
>> For backward compatibility with existing wikis,
>> refix_directives currently defaults to false. In ikiwiki 3.0,
>> prefix_directives will default to true [...]
> --[[intrigeri]]

View File

@ -23,6 +23,8 @@ pages, as well as doing syntax highlighting as a preprocessor directive
* [[sourcecode|todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion]] * [[sourcecode|todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion]]
also uses src-highlight, and operates on whole source files. also uses src-highlight, and operates on whole source files.
Updated to work with the fix for [[bugs/multiple_pages_with_same_name]]. Untested with files with no extension, e.g. `Makefile`. Updated to work with the fix for [[bugs/multiple_pages_with_same_name]]. Untested with files with no extension, e.g. `Makefile`.
* [[user/jrblevin]]'s code plugin uses src-highlight, and supports both
while file and directive use.
## General problems ## General problems
@ -32,6 +34,10 @@ pages, as well as doing syntax highlighting as a preprocessor directive
we could use an external plugin..) we could use an external plugin..)
* Currently no single plugin supports both modes of operation (directive * Currently no single plugin supports both modes of operation (directive
and whole source file to page). and whole source file to page).
> This is now fixed by the [[ikiwiki/directive/format]] directive for all
> whole-source-file plugins, right?
* Nothing seems to support * Nothing seems to support
[[wiki-formatted_comments|wiki-formatted_comments_with_syntax_plugin]] [[wiki-formatted_comments|wiki-formatted_comments_with_syntax_plugin]]
inside source files. Doing this probably means post-processing the inside source files. Doing this probably means post-processing the
@ -45,6 +51,17 @@ pages, as well as doing syntax highlighting as a preprocessor directive
One approach that's also been requested for eg, One approach that's also been requested for eg,
[[plugins/contrib/mediawiki]] is to allow controlling which linkification [[plugins/contrib/mediawiki]] is to allow controlling which linkification
types a page type can have on it. types a page type can have on it.
> The previous two points seem to be related. One thought: instead of
> getting the source from the `content` parameter, the plugin could
> re-load the page source. That would stop directives/links from
> being processed in the source. As noted above, comments
> could then be parsed for directives/links later.
>
> Would it be worth adding a `nodirectives` option when registering
> an htmlize hook that switches off directive and link processing before
> generating the html for a page?
* The whole-file plugins all get confused if there is a `foo.c` and a `foo.h`. * The whole-file plugins all get confused if there is a `foo.c` and a `foo.h`.
This is trivially fixable now by passing the keepextension option when This is trivially fixable now by passing the keepextension option when
registering the htmlize hooks, though. registering the htmlize hooks, though.
@ -61,6 +78,28 @@ pages, as well as doing syntax highlighting as a preprocessor directive
extensions. The workaround is to use a directive on a wiki page, pulling extensions. The workaround is to use a directive on a wiki page, pulling
in the Makefile. in the Makefile.
> I wonder how hard it would be to make a patch whereby a file with
> no `.` in the name, and a name that matches a filetype, and where
> that filetype was registered `keepextension`, then the file is just
> chosen as the appropriate type. This would allow `Makefile` to
> work.
like this:
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 8d728c9..1bd46a9 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -618,6 +618,8 @@ sub pagetype ($) { #{{{
if ($page =~ /\.([^.]+)$/) {
return $1 if exists $hooks{htmlize}{$1};
+ } elsif ($hooks{htmlize}{$page}{keepextension}) {
+ return $page;
}
return;
} #}}}
## format directive ## format directive
Rather than making syntax highlight plugins have to provide a preprocessor Rather than making syntax highlight plugins have to provide a preprocessor

View File

@ -114,3 +114,9 @@ diff -c /usr/share/perl5/IkiWiki/Plugin/meta.pm.distrib /usr/share/perl5/IkiWiki
</pre> </pre>
<p>
This is actually a duplicate for
[[bugs/pagetitle_function_does_not_respect_meta_titles]], where I'm
following up a bit. --[[intrigeri]]
</p>

View File

@ -1,4 +1,4 @@
intrigeri AT boum.org, already loving ikiwiki. intrigeri AT boum.org, already loving ikiwiki.
* [gnupg key](http://gaffer.ptitcanardnoir.org/intrigeri/intrigeri.asc) * [gnupg key](http://gaffer.ptitcanardnoir.org/intrigeri/intrigeri.asc)
* Git repository ([gitweb](http://repo.or.cz/w/ikiwiki/intrigeri.git)) with various ikiwiki {feature, bugfix}-branches : `git://repo.or.cz/ikiwiki/intrigeri.git` * Git repository with various ikiwiki {feature, bugfix}-branches : `git://gaffer.ptitcanardnoir.org/ikiwiki.git`

View File

@ -29,7 +29,8 @@ Current ikiwki issues of interest:
## Plugins ## Plugins
These plugins are experimental. Use them at your own risk. Read the These plugins are experimental. Use them at your own risk. Read the
perldoc documentation for more details. perldoc documentation for more details. Patches and suggestions are
welcome.
* [mdwn_itex][] - Works with the `mdwn` plugin to convert inline LaTeX * [mdwn_itex][] - Works with the `mdwn` plugin to convert inline LaTeX
expressions to MathML using `itex2MML`. expressions to MathML using `itex2MML`.
@ -37,6 +38,30 @@ perldoc documentation for more details.
* [h1title][] - If present, use the leading level 1 Markdown header to * [h1title][] - If present, use the leading level 1 Markdown header to
set the page title and remove it from the page body. set the page title and remove it from the page body.
* [code][] - Whole file and inline code snippet syntax highlighting
via GNU Source-highlight. The list of supported file extensions is
configurable. There is also some preliminary [documentation][code-doc].
See the [FortranWiki](http://fortranwiki.org) for examples.
* [metamail][] - a plugin for loading metadata from email-style
headers at top of a file (e.g., `title: Page Title` or
`date: November 2, 2008 11:14 EST`).
* [pandoc][] - Markdown page processing via Pandoc. LaTeX and
reStructuredText are optional.
* [path][] - Provides path-specific template conditionals such as
`IS_HOMEPAGE` and `IN_DIR_SUBDIR`.
[mdwn_itex]: http://code.jblevins.org/ikiwiki/plugins.git/plain/mdwn_itex.pm
[h1title]: http://code.jblevins.org/ikiwiki/plugins.git/plain/h1title.pm
[code]: http://code.jblevins.org/ikiwiki/plugins.git/plain/code.pm
[code-doc]: http://code.jblevins.org/ikiwiki/plugins.git/plain/code.text
[metamail]: http://code.jblevins.org/ikiwiki/plugins.git/plain/metamail.pm
[pandoc]: http://code.jblevins.org/ikiwiki/plugins.git/plain/pandoc.pm
[path]: http://code.jblevins.org/ikiwiki/plugins.git/plain/path.pm
## MathML and SVG support ## MathML and SVG support
So far, I've made some notes on sanitizing MathML and SVG via So far, I've made some notes on sanitizing MathML and SVG via
@ -82,5 +107,3 @@ page in the first place (unless they post directly to the right URL).
[template-patch]: http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=blobdiff;f=templates/page.tmpl;h=380ef699fa72223744eb5c1ee655fb79aa6bce5b;hp=9084ba7e11e92a10528b2ab12c9b73cf7b0f40a7;hb=416d5d1b15b94e604442e4e209a30dee4b77b684;hpb=ececf4fb8766a4ff7eff943b3ef600be81a0df49 [template-patch]: http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=blobdiff;f=templates/page.tmpl;h=380ef699fa72223744eb5c1ee655fb79aa6bce5b;hp=9084ba7e11e92a10528b2ab12c9b73cf7b0f40a7;hb=416d5d1b15b94e604442e4e209a30dee4b77b684;hpb=ececf4fb8766a4ff7eff943b3ef600be81a0df49
[cgi-patch]: http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=commitdiff;h=fa538c375250ab08f396634135f7d79fce2a9d36 [cgi-patch]: http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=commitdiff;h=fa538c375250ab08f396634135f7d79fce2a9d36
[mdwn_itex]: http://code.jblevins.org/ikiwiki/plugins/mdwn_itex.pm
[h1title]: http://code.jblevins.org/ikiwiki/plugins/h1title.pm

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-31 16:38-0400\n" "POT-Creation-Date: 2008-11-03 16:31-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -246,11 +246,11 @@ msgstr ""
msgid "failed to process" msgid "failed to process"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/format.pm:22 #: ../IkiWiki/Plugin/format.pm:20
msgid "must specify format and text" msgid "must specify format and text"
msgstr "" msgstr ""
#: ../IkiWiki/Plugin/format.pm:25 #: ../IkiWiki/Plugin/format.pm:23
#, perl-format #, perl-format
msgid "unsupported page format %s" msgid "unsupported page format %s"
msgstr "" msgstr ""