Merge branch 'master' into po

Conflicts:
	debian/control
master
Joey Hess 2009-03-27 15:09:41 -04:00
commit 825e2b1378
37 changed files with 710 additions and 150 deletions

View File

@ -35,6 +35,7 @@ Text::WikiCreole
Term::ReadLine::Gnu
HTML::Tree
Authen::Passphrase
Sort::Naturally
=head1 AUTHOR

View File

@ -533,7 +533,7 @@ sub loadplugins () {
run_hooks(getopt => sub { shift->() });
if (grep /^-/, @ARGV) {
print STDERR "Unknown option: $_\n"
print STDERR "Unknown option (or missing parameter): $_\n"
foreach grep /^-/, @ARGV;
usage();
}
@ -639,8 +639,10 @@ sub pagetype ($) {
if ($file =~ /\.([^.]+)$/) {
return $1 if exists $hooks{htmlize}{$1};
}
elsif ($hooks{htmlize}{basename($file)}{noextension}) {
return basename($file);
my $base=basename($file);
if (exists $hooks{htmlize}{$base} &&
$hooks{htmlize}{$base}{noextension}) {
return $base;
}
return;
}

View File

@ -67,7 +67,8 @@ sub cgi_page_from_404 ($$$) {
sub cgi ($) {
my $cgi=shift;
if ($ENV{REDIRECT_STATUS} eq '404') {
if (exists $ENV{REDIRECT_STATUS} &&
$ENV{REDIRECT_STATUS} eq '404') {
my $page = cgi_page_from_404($ENV{REDIRECT_URL},
$config{url}, $config{usedirs});
IkiWiki::Plugin::goto::cgi_goto($cgi, $page);

View File

@ -224,7 +224,7 @@ sub preprocess {
if ($params{page} =~ m/\/(\Q$config{comments_pagename}\E\d+)$/) {
$pagestate{$page}{meta}{permalink} = urlto(IkiWiki::dirname($params{page}), undef, 1).
"#".$params{page};
"#".page_to_id($params{page});
}
eval q{use Date::Parse};
@ -490,7 +490,8 @@ sub editcomment ($$) {
# Jump to the new comment on the page.
# The trailing question mark tries to avoid broken
# caches and get the most recent version of the page.
IkiWiki::redirect($cgi, urlto($page, undef, 1)."?updated#$location");
IkiWiki::redirect($cgi, urlto($page, undef, 1).
"?updated#".page_to_id($location));
}
else {
@ -672,7 +673,7 @@ sub previewcomment ($$$) {
sub commentsshown ($) {
my $page=shift;
return ! pagespec_match($page, "*/$config{comments_pagename}*",
return ! pagespec_match($page, "internal(*/$config{comments_pagename}*)",
location => $page) &&
pagespec_match($page, $config{comments_pagespec},
location => $page);
@ -759,6 +760,10 @@ sub pagetemplate (@) {
if (!exists $commentstate{$page}) {
return;
}
if ($template->query(name => 'commentid')) {
$template->param(commentid => page_to_id($page));
}
if ($template->query(name => 'commentuser')) {
$template->param(commentuser =>
@ -808,6 +813,18 @@ sub unique_comment_location ($) {
return $location;
}
sub page_to_id ($) {
# Converts a comment page name into a unique, legal html id
# addtibute value, that can be used as an anchor to link to the
# comment.
my $page=shift;
eval q{use Digest::MD5 'md5_hex'};
error($@) if $@;
return "comment-".md5_hex($page);
}
package IkiWiki::PageSpec;
sub match_postcomment ($$;@) {

View File

@ -136,14 +136,16 @@ sub safe_git (&@) {
}
# In parent.
# git output is probably utf-8 encoded, but may contain
# other encodings or invalidly encoded stuff. So do not rely
# on the normal utf-8 IO layer, decode it by hand.
binmode($OUT);
my @lines;
while (<$OUT>) {
$_=decode_utf8($_, 0);
chomp;
# check for invalid utf-8, and toss it back to avoid crashes
if (! utf8::valid($_)) {
$_=encode_utf8($_);
}
push @lines, $_;
}
@ -447,7 +449,7 @@ sub rcs_commit_staged ($$$) {
# Set the commit author and email to the web committer.
my %env=%ENV;
if (defined $user || defined $ipaddr) {
my $u=defined $user ? $user : $ipaddr;
my $u=encode_utf8(defined $user ? $user : $ipaddr);
$ENV{GIT_AUTHOR_NAME}=$u;
$ENV{GIT_AUTHOR_EMAIL}="$u\@web";
}
@ -592,8 +594,8 @@ sub rcs_getctime ($) {
# Remove srcdir prefix
$file =~ s/^\Q$config{srcdir}\E\/?//;
my $sha1 = git_sha1($file);
my $ci = git_commit_info($sha1, 1);
my @sha1s = run_or_non('git', 'rev-list', 'HEAD', '--', $file);
my $ci = git_commit_info($sha1s[$#sha1s], 1);
my $ctime = $ci->{'author_epoch'};
debug("ctime for '$file': ". localtime($ctime));

View File

@ -194,6 +194,13 @@ sub preprocess_inline (@) {
if (exists $params{sort} && $params{sort} eq 'title') {
@list=sort { pagetitle(basename($a)) cmp pagetitle(basename($b)) } @list;
}
elsif (exists $params{sort} && $params{sort} eq 'title_natural') {
eval q{use Sort::Naturally};
if ($@) {
error(gettext("Sort::Naturally needed for title_natural sort"));
}
@list=sort { Sort::Naturally::ncmp(pagetitle(basename($a)), pagetitle(basename($b))) } @list;
}
elsif (exists $params{sort} && $params{sort} eq 'mtime') {
@list=sort { $pagemtime{$b} <=> $pagemtime{$a} } @list;
}
@ -274,8 +281,8 @@ sub preprocess_inline (@) {
}
}
my $rssurl=basename($feedbase."rss".$feednum) if $feeds && $rss;
my $atomurl=basename($feedbase."atom".$feednum) if $feeds && $atom;
my $rssurl=abs2rel($feedbase."rss".$feednum, dirname(htmlpage($params{destpage}))) if $feeds && $rss;
my $atomurl=abs2rel($feedbase."atom".$feednum, dirname(htmlpage($params{destpage}))) if $feeds && $atom;
my $ret="";

View File

@ -236,7 +236,7 @@ sub rcs_getctime ($) {
# XXX filename passes through the shell here, should try to avoid
# that just in case
my @cmdline = ("hg", "-R", $config{srcdir}, "log", "-v", "-l", '1',
my @cmdline = ("hg", "-R", $config{srcdir}, "log", "-v",
"--style", "default", "$config{srcdir}/$file");
open (my $out, "@cmdline |");
@ -249,7 +249,7 @@ sub rcs_getctime ($) {
eval q{use Date::Parse};
error($@) if $@;
my $ctime = str2time($log[0]->{"date"});
my $ctime = str2time($log[$#log]->{"date"});
return $ctime;
}

24
debian/changelog vendored
View File

@ -1,3 +1,27 @@
ikiwiki (3.09) UNRELEASED; urgency=low
* inline: Add title_natural sort order, using Sort::Naturally
(chrysn)
* inline: Fix urls to feed when feedfile is used on an index page.
* git, mercurial: Fix --getctime to return file creation time,
not last commit time.
* Updated French translation (Jean-Luc Coulon). Closes: #521072
* css: Add clear: both to inlinefooter.
* comments: Fix too loose test for comments pages that matched
normal pages with "comment_" in their name. Closes: #521322
* comments: Fix anchor ids to be legal xhtml. Closes: #521339
-- Joey Hess <joeyh@debian.org> Thu, 19 Mar 2009 15:32:49 -0400
ikiwiki (3.08) unstable; urgency=low
* git: Fix utf-8 encoding of author names.
* git: Manually decode git output from utf-8, avoids
warning messages on invalidly encoded output.
* Fix bug that caused weird things to appear as page types.
-- Joey Hess <joeyh@debian.org> Sun, 15 Mar 2009 17:54:47 -0400
ikiwiki (3.07) unstable; urgency=low
* Updated German translation (Kai Wasserbäch). Closes: #518377

2
debian/control vendored
View File

@ -14,7 +14,7 @@ Package: ikiwiki
Architecture: all
Depends: ${misc:Depends}, ${perl:Depends}, libtext-markdown-perl | markdown, libhtml-scrubber-perl, libhtml-template-perl, libhtml-parser-perl, liburi-perl
Recommends: gcc | c-compiler, libc6-dev | libc-dev, subversion | git-core (>= 1:1.5.0) | tla | bzr (>= 0.91) | mercurial | monotone (>= 0.38), libxml-simple-perl, libnet-openid-consumer-perl, liblwpx-paranoidagent-perl, libtimedate-perl, libcgi-formbuilder-perl (>= 3.05), libcgi-session-perl (>= 4.14-1), libmail-sendmail-perl, libauthen-passphrase-perl, libterm-readline-gnu-perl
Suggests: viewvc | gitweb | viewcvs, libsearch-xapian-perl, xapian-omega (>= 1.0.5), librpc-xml-perl, libtext-wikiformat-perl, python, python-docutils, polygen, tidy, libhtml-tree-perl, libxml-feed-perl, libmailtools-perl, perlmagick, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz, libnet-amazon-s3-perl, sparkline-php, texlive, dvipng, libtext-wikicreole-perl, po4a (>= 0.35-1), gettext
Suggests: viewvc | gitweb | viewcvs, libsearch-xapian-perl, xapian-omega (>= 1.0.5), librpc-xml-perl, libtext-wikiformat-perl, python, python-docutils, polygen, tidy, libhtml-tree-perl, libxml-feed-perl, libmailtools-perl, perlmagick, libfile-mimeinfo-perl, libcrypt-ssleay-perl, liblocale-gettext-perl (>= 1.05-1), libtext-typography-perl, libtext-csv-perl, libdigest-sha1-perl, graphviz, libnet-amazon-s3-perl, sparkline-php, texlive, dvipng, libtext-wikicreole-perl, libsort-naturally-perl, po4a (>= 0.35-1), gettext
Conflicts: ikiwiki-plugin-table
Replaces: ikiwiki-plugin-table
Provides: ikiwiki-plugin-table

View File

@ -0,0 +1,17 @@
The message generated for web commits:
> web commit by mädduck
is not utf-8 encoded before passed to Git (which uses utf-8 as default encoding for commit messages). This causes a wrongly-encoded log entry, and makes ikiwiki spew warnings as it creates `recentchanges`:
utf8 "\xF6" does not map to Unicode at /usr/share/perl5/IkiWiki/Rcs/git.pm line 36, <$OUT> line 57.
Malformed UTF-8 character (unexpected non-continuation byte 0x6e, immediately after start byte 0xf6) in pattern match (m//) at /usr/share/perl5/IkiWiki/Rcs/git.pm line 393.
utf8 "\xF6" does not map to Unicode at /usr/share/perl5/IkiWiki/Rcs/git.pm line 36, <$OUT> line 5.
(This is version 2.53.3~bpo40+1 for lack of a newer backport for sarge)
Please make sure that commit messages for Git are always utf-8.
This is a change by user `mädduck` to trigger the error.
> [[Fixed|done]] both on the commit and log sides. --[[Joey]]

View File

@ -0,0 +1,7 @@
[[!meta title="feedfile does the wrong thing from index"]]
When I put the following !inline in my index.mdwn, it generate a file called index/graphics.rss. However, the link in the RSS button is to graphics.rss (i.e., not in the index/ directory).
`\[[!inline pages="link(tags/graphics) and ./posts/* and !*/Discussion" show="10" feedfile=graphics feedonly=yes]]`
[[done]] --[[Joey]]

View File

@ -9,7 +9,7 @@ gnomes will convert them to css files..)
* **[[css_market/zack.css]]**, contributed by [[StefanoZacchiroli]],
customized mostly for *blogging purposes*, can be seen in action on
[zack's blog](http://www.bononia.it/~zack/blog/)
[zack's blog](http://upsilon.cc/~zack/blog/)
[[!meta stylesheet="zack"]]
* **[[css_market/kirkambar.css]]**, contributed by [[Roktas]]. This far from perfect

View File

@ -5,3 +5,12 @@ What is the correct way to install the .tmpl files? -- [[JosephTurian]]
> ikiwiki's standard templates (in, eg `/usr/share/ikiwiki/templates`)
> --[[Joey]]
----
How can I update a .css file uploaded to the CSS market?
My CSS has been updated to address comments (for the comments plugin), but I cannot find a way to update zack.css.
The most recent version is always available at: <http://git.upsilon.cc/cgi-bin/gitweb.cgi?p=zack-homepage.git;a=blob_plain;f=local.css;hb=HEAD>
-- [[StefanoZacchiroli]]
> Just letting me know about the change works -- updated. --[[Joey]]

View File

@ -14,122 +14,180 @@
*/
body {
font-family: sans;
width: 760px;
margin-left: 20px;
font-family: sans-serif;
font-size: medium;
}
h1, h2, h3, h4 {
font-weight: normal;
}
h1 { font-size: 140%; }
h2 { font-size: 120%; }
h3 { font-size: 110%; }
h4 { font-size: 105% }
div#content {
font-size: 11pt;
}
a { text-decoration: none; }
a:hover { text-decoration: underline; }
.header span {
font-size: 14pt;
font-weight: normal;
}
div.actions ul {
font-size: 10pt;
}
h1 {
font-weight: normal;
font-size: 17pt;
}
h2 {
font-weight: normal;
font-size: 16pt;
}
h3 {
font-weight: normal;
font-size: 15pt;
}
h4 {
font-weight: normal;
font-size: 14pt;
}
h5 {
font-weight: normal;
font-size: 13pt;
}
h6 {
font-weight: normal;
font-size: 12pt;
}
div.inlinepage > span.header > a {
.flow {
float: right;
display: block;
font-size: 11pt;
font-weight: normal;
margin: 0;
padding: 0;
margin-left: 10px;
margin-bottom: 10px;
text-align: center;
}
div.inlinepage > span.header > a:before {
content: "permalink: ";
font-size: smaller;
text-decoration: none;
.attrib-caption {
font-size: xx-small;
font-style: italic;
}
div.inlinepage {
input {
border: solid 1px;
border-color: #aaa;
}
.header { font-weight: normal; }
.selflink { text-decoration: underline; }
.pageheader .actions ul,
#sitemeta {
border-top: solid 1px;
border-bottom: solid 1px;
font-size: small;
border-color: #aaa;
background: #eee;
}
.actions ul {
padding: 1px;
margin-top: 5px;
}
#sitemeta {
padding: 0;
margin-bottom: 5px;
}
#backlinks,
.tags {
margin-top: 0;
margin-bottom: 0;
}
#pageinfo {
border: none;
}
#searchform div:before {
font-size: small;
content: "search:";
}
#searchform input {
border-top: none;
border-bottom: none;
vertical-align: bottom;
margin-right: 7px;
}
#sidebar {
border: solid;
border-width: 1px;
padding: 0;
margin-top: 15px;
border: 1px solid;
border-color: #aaa;
background: #eee;
width: 16ex;
}
#sidebar ul {
margin: 0;
padding-left: 1em;
list-style-type: none;
}
#sidebar ul ul {
padding-left: 1.5em;
font-size: 90%;
}
#pageinfo,
#footer {
margin: 0;
}
#pageinfo {
font-size: small;
}
.pagecopyright,
.pagelicense,
.pagedate {
margin: 0;
display: inline;
}
#backlinks {
margin-top: 5px;
margin-bottom: 10px;
font-size: larger;
}
div.inlinepage h1 {
font-weight: normal;
font-size: 14pt;
margin: 0;
}
div.inlinepage h2 {
font-weight: normal;
font-size: 13pt;
margin: 0;
}
div.inlinepage h3 {
font-weight: normal;
font-size: 12pt;
margin: 0;
}
div.inlinepage h4 {
font-weight: normal;
font-size: 11pt;
margin: 0;
}
div.inlinepage h5 {
font-weight: normal;
font-size: 11pt;
margin: 0;
}
div.inlinepage h6 {
font-weight: normal;
font-size: 11pt;
margin: 0;
}
div#blogform {
padding: 0px 5px;
margin-bottom: 10px;
}
pre {
width: 90%;
font-size: 10pt;
font-family: monospace;
background: #e1e1e1;
margin-left: 4%;
padding-top: 5px;
padding-bottom: 5px;
.validation {
display: inline;
float: right;
}
.pagecloud {
width: 25%;
border-top: 1px solid #aaa;
border-bottom: 1px solid #aaa;
background: #eee;
color: black !important;
margin-left: 5px;
}
.pagecloud a {
text-decoration: none;
table.identikit tr th {
text-align: right;
vertical-align: top;
}
table.identikit tr th:after {
content: ":";
}
table.identikit tr td {
text-align: left;
vertical-align: top;
}
.doi_logo , .doi_logo a {
background: #3965bd;
color: white !important;
font-size: 80%;
text-decoration: none;
font-family: times;
font-weight: bold;
padding: 0px 1px 0px 2px;
}
#comments {
margin-top: 5ex;
border-top: solid 1px;
border-color: #aaa;
font-size: small;
}
#comments #feedlink {
text-align: right;
}
#comments #feedlink:before {
content: "comment feeds: ";
}
.addcomment {
padding: 5px;
font-style: italic;
}
.comment {
border: none;
background-color: #eee;
margin: 5px;
margin-top: 10px;
}
.comment-subject {
font-style: normal;
}
.comment-header {
border-top: solid 1px;
border-color: #aaa;
text-align: right;
font-style: normal;
}

View File

@ -0,0 +1,35 @@
I'm having some difficulties with ikiwiki's notion of time.
For (regular) pages, the *last edited* date is the one where the file
was indeed last modified according to the file system information.
The *created* date (commented out in the HTML) is, at least for
`--getctime` operation, the date, where the file was last registered
as changed with the VCS.
Now, at least with git, the thing is that when you're checking out files,
they'll get the checkout-time's current time stamp.
What I strive for is the following: *created* be the date when the file
(under its current name) was *first* registered with the VCS (which is
more logical in my opinion), and *last edited* be the date the file was
last registered as changed with the VCS, which is the current
`--getctime` *created* date.
This means that I can build the HTML files from different checkouts of the
VCS and they won't differ in the time stamps they contain in the HTML.
What is the rationale for ikiwiki's current behavior with respect to these
time stamps?
--[[tschwinge]]
> Presumably it's the authors of the git and mercurial backends
> not understanding the documentation for `rcs_getctime`,
> which states:
>
>>This is used to get the page creation time for a file from the RCS, by
>>looking it up in the history.
>
> I've fixed both broken implementations to correctly look
> up the first, not the last, commit. Other VCS do not seem
> to have the problem. --[[Joey]]

View File

@ -0,0 +1,41 @@
I keep some TODO lists on ikiwiki pages. I'm half-tempted to write a plugin
to make ticking items off and adding items easier via the web interface. I'm
aware though that this is not really what ikiwiki is designed for. Would
anyone else find this useful? -- [[users/jon]]
----
My subsequent thoughts about how to approach this are two-fold.
Firstly, a filetype for todo lists, probably OPML, but I haven't looked to see
if there is something more suitable. A plugin that converts this source into a
traditional page output, i.e. a DOM tree of ul or ol and li elements.
Secondly, some magic javascript to make editing the list via the web page
more interactive: add items, strike items out, reorder items etc., without
round-tripping to the cgi for each operation.
Finally, a mechanism whereby the changes made to the page live can be
committed back to the repository:
* ...perhaps the input → output conversion is reversible, and the HTML DOM
representing the list can be transformed back into the source and submitted
to the cgi like a regular edit: issues include the result of other
postprocessing: templates, wikilinks, etc.
* perhaps an embedded copy of the source is included in the output and the
javascript operates on that in tandem with the static copy
* perhaps the "output" is generated live by the JS at view time (with maybe
a plugin-generated rendered output for non JS environments)
I envisage a button called "commit changes" appearing once some changes are
made that submits the changes to the CGI, perhaps via a back channel. I'm not
sure how to handle embeds or challenges from the CGI such as a login challenge
(maybe the back channel would not be necessary in the first cut).
> You might look at the [[plugins/hnb]] plugin. HNB supports checklists.
> There's not a fancy web interface, but the hnb command-line program can
> be used to edit them. --[[Joey]]
>> thanks - I'll give it a look. I spent a few hours writing some javascript to manipulate a ul/li DOM tree in an outliner-fashion the other day. I might be able to join the puzzle pieces together sometime. [[Jon]]
a solution for this could be similar to a solution for [[todo/structured page data]], as todo lists are definitely a form of structured data. (in both cases, the page's current content is rendered into a html form, whose result is then saved as the page's new contents) --[[chrysn]]

View File

@ -10,3 +10,8 @@ But in the page [OSS.html](http://atoz.org.cn/Whatis/OSS.html) , the auto genera
to “Whatis” is /Whatis.html file , not to /Whatis/index.html. So the link to “Whatis” is fail .
Is it a bug , and how can I do for that ?
> I suggest that you name your page `Whatis.mdwn`, and not
> `Whatis/index.mdwn`. That will make ikiwiki's links work,
> and allows you to link to the `Whatis` page by that name.
> --[[Joey]]

View File

@ -0,0 +1,3 @@
And where is the code, please ?
> [[download]] --[[Joey]]

View File

@ -87,7 +87,10 @@ Here are some less often needed parameters:
inlining page.
* `sort` - Controls how inlined pages are sorted. The default, "age" is to
sort newest created pages first. Setting it to "title" will sort pages by
title, and "mtime" sorts most recently modified pages first.
title, and "mtime" sorts most recently modified pages first. If
[[!cpan Sort::Naturally]] is installed, `sort` can be set to "title_natural"
to sort by title with numbers treated as such ("1 2 9 10 20" instead of
"1 10 2 20 9").
* `reverse` - If set to "yes", causes the sort order to be reversed.
* `feedshow` - Specify the maximum number of matching pages to include in
the rss/atom feeds. The default is the same as the `show` value above.

View File

@ -9,7 +9,7 @@ Only links between mapped pages will be shown; links pointing to or from
unmapped pages will be omitted. If the pages to include are not specified,
the links between all pages (and other files) in the wiki are mapped. For
best results, only a small set of pages should be mapped, since otherwise
the map can become very large, unweildy, and complicated. Also, the map is
the map can become very large, unwieldy, and complicated. Also, the map is
rebuilt whenever one of the mapped pages is changed, which can make the
wiki a bit slow.

View File

@ -44,6 +44,7 @@ Projects & Organizations
* [St Hugh of Lincoln Primary School in Surrey](http://hugh.vm.bytemark.co.uk/)
* [Pigro Network](http://www.pigro.net) is running a hg based ikiwiki. (And provides ikiwiki hosting for $10/m.)
* [Cosin Homepage](http://cosin.ch) uses an Ikiwiki with a subversion repository.
* [Bosco Free Orienteering Software](http://bosco.durcheinandertal.ch)
Personal sites and blogs
========================
@ -116,6 +117,8 @@ Personal sites and blogs
* [muammar's site](http://muammar.me)
* [Per Bothner's blog](http://per.bothner.com/blog/)
* [Bernd Zeimetz (bzed)](http://bzed.de/)
* [Gaudenz Steinlin](http://gaudenz.durcheinandertal.ch)
* [Simon Kjika'qawej C.](http://simonraven.kisikew.org/ikiwiki/) Please note it might change location at any time (likely wiki.k.o or under /wiki/ at simonraven.k.o).
Please feel free to add your own ikiwiki site!

View File

@ -0,0 +1,12 @@
# OpenID discussion
## No return_to in OpenID server
Hi, there's no return_to from a designated OpenID server page, specs requires (I think a "should" or "must", can't recall exact wording) that it redirects back to the RP, in order to complete the registration and authentication. Unless I'm missing something, and the doc is incomplete, I'd consider this a bug. I don't expect to be of much use WRT coming up with a patch, but I'm willing to test ;-) .
> If this is a bug, could you please explain:
>
> * What happens when the bug occurs?
> * How can one reproduce the bug?
>
> PS, please file bugs under [[bugs]] in future. --[[Joey]]

View File

@ -10,4 +10,4 @@ log back in, try out the OpenID signup process if you don't already have an
OpenID, and see how OpenID works for you. And let me know your feelings about
making such a switch. --[[Joey]]
[[!poll 60 "Accept only OpenID for logins" 18 "Accept only password logins" 35 "Accept both"]]
[[!poll 61 "Accept only OpenID for logins" 18 "Accept only password logins" 36 "Accept both"]]

View File

@ -1,10 +0,0 @@
ikiwiki 3.07 released with [[!toggle text="these changes"]]
[[!toggleable text="""
* Updated German translation (Kai Wasserbäch). Closes: #[518377](http://bugs.debian.org/518377)
* Updated French translation (Jean-Luc Coulon). Closes: #[518510](http://bugs.debian.org/518510)
* wmd: New plugin contributed by William Uther to support the WMD
Wysiwym markdown editor.
* smiley: Avoid infinite loop in smiley expansion triggered
by the template scan mode change in version 3.05. Closes: #[518805](http://bugs.debian.org/518805)
* template: When loading a template in scan mode, let preprocess
know it only needs to scan."""]]

View File

@ -0,0 +1,6 @@
ikiwiki 3.08 released with [[!toggle text="these changes"]]
[[!toggleable text="""
* git: Fix utf-8 encoding of author names.
* git: Manually decode git output from utf-8, avoids
warning messages on invalidly encoded output.
* Fix bug that caused weird things to appear as page types."""]]

View File

@ -65,3 +65,15 @@ actually be the way to go. IMHO, the Perl sections idea is the
easiest to setup, but on the long run, I'd prefer ikiwiki to optionnally
use a userdb storage backend supported at least by Apache and lighttpd.
--[[intrigeri]]
Tons of CPAN modules may help, but most of them are specific to `mod_perl`,
and AFAIK, ikiwiki is generally not run with `mod_perl`. It's not clear to me
wether these modules depend on the webapp to be run with `mod_perl` set
as the script handler, or only on `mod_perl` to be installed and loaded.
* CPAN's `Apache::AuthenHook` allows to plug arbitrary Perl handlers as
Apache authentication providers.
* CPAN's `Apache::Authen::Program` (`mod_perl`)
* [http://www.openfusion.com.au/labs/mod_auth_tkt/](mod_auth_tkt) along with CPAN's
`Apache::AuthTkt`
--[[intrigeri]]

View File

@ -90,3 +90,10 @@ But, of course, rsync is better.
----
Let's see what happens... ~~
測試的啦
----
testing

View File

@ -44,6 +44,9 @@ div.inlinecontent {
.pagefooter {
clear: both;
}
.inlinefooter {
clear: both;
}
.tags {
}

View File

@ -1,6 +1,8 @@
Could you please add numerical ordering by title to [[inline|plugins/inline]]
plugin? Now I can do only alphabetical order by title, but sometime it's not enough.
> Implemented, see [[natural_sorting]] [[!tag done]] --[[Joey]]
BTW, it seems that ordering by title is rather ordering by filename of page.
For me "title" means title of page I can set using `title` parameter
of [[meta|plugins/meta]] plugin :)

View File

@ -0,0 +1,51 @@
[[!tag wishlist]]
[[!tag patch]]
for inlines of pages which follow a certain scheme, it might not be required to
set the title for each individual post, but to automatically set the title.
this can either be based on timestamp formatting, or use the already existing
munging mechanism, which appends numbers to page titles in case that page
already exists.
two patches ([1], [2]) set inline up for that, adding an additional `autotitle`
parameter. if that is given, the regular input of the inline postform will be
replaced with a hidden input of that text. in addition, the empty title is
permitted (both for autotitle and regular titles, as they go in the same GET
parameter, `title`). as the empty page title is illegal, munging is used,
resulting in ascending numeric page titles to be created.
the second patch is actually a one-liner, filtering the title through strftime.
### potential user interaction issues
this has two side effects which have to be considered: first, the empty page
title is accepted also in normal postforms (previously, this resulted in a "bad
page name" error); second, entering a percent sign in that field might result
in unexpexted strftime substitution (strftime might not even substitute for
common uses of percent as in "reach 10% market share", but might in others as
in "the 10%-rule").
both can be circumvented by using another GET parameter for autotexts, as
implemented in [3].
> this patch still does not work perfectly; especially, it should make a
> distinction between "autotitle is set but equal ''" (in which case it
> should create a page named `1.mdwn`, and "autotitle is not set, and title is
> equal ''" (in which case it should display the old error message) --[[chrysn]]
### potential security issues
* the autotitle's value is directly output through the template (but that's
done in other places as well, so i assume it's safe)
* i don't know if anything bad can happen if unfiltered content is passed to
POSIX::strftime.
### further extension
having a pre-filled input field instead of an unchangable hidden input might be
cool (eg for creating an entry with yesterday's date), but would be a bit of a
problem with static pages. javascript could help with the date part, but name
munging would be yet another thing.
[1]: http://github.com/github076986099/ikiwiki/commit/b568eb257a3ef5ff49a84ac00a3a7465b643c1e1
[2]: http://github.com/github076986099/ikiwiki/commit/34bc82f232be141edf036d35e8ef5aa289415072
[3]: http://github.com/github076986099/ikiwiki/commit/40dc10a4ec7809e401b4497c2abccfba30f7a2af

View File

@ -87,3 +87,219 @@ remains. Some CSS to clean up the display of the live WMD preview would be good
> I assume that is designed for websites that do not use markdown
> internally. Doesn't it have a setting to leave it as markdown?
>> Found setting, fixed. --[[Joey]]
>>> As I noted above, I've been working on the non-markdown page issue.
>>> Below is my a new javascript file that I'm using, and below that a patch
>>> to enable it. This patch makes the normal usage prettier - you get
>>> a side panel with the live preview in it. It also adds a new config
>>> option, `wmd_use101api`, which turns on code that tries to use the
>>> wmd api. At the moment this code doesn't seem to work - moreover the
>>> code that uses the new API dies early, so any code after that point is
>>> completely untested. I will not
>>> get a chance to look at this again soon though, so I thought I'd post
>>> my progress so far. -- [[Will]]
Place the following file in `underlays/wmd/wmd-ikiwiki.js`.
----
// This is some code to interface the WMD interface 1.0.1 with IkiWiki
// The WMD interface is planned to change, so this file will likely need
// updating in future.
if (useWMDinterface) {
wmd_options = { autostart: false, output: "Markdown" };
var instance = null;
hook("onload", initwmd);
} else {
var typeSelector = document.getElementById("type");
var currentType = getType(typeSelector);
if (currentType == "mdwn") {
wmd_options = { output: "Markdown" };
document.getElementById("wmd-preview-container").style.display = 'none';
} else {
wmd_options = { autostart: false };
document.getElementById("wmd-preview-container").style.display = 'block';
}
}
function initwmd() {
if (!Attacklab || !Attacklab.wmd) {
alert("WMD hasn't finished loading!");
return;
}
var typeSelector = document.getElementById("type");
var currentType = getType(typeSelector);
if (currentType == "mdwn") {
window.setTimeout(enableWMD,10);
}
typeSelector.onchange=function() {
var docType=getType(this);
if (docType=="mdwn") {
enableWMD();
} else {
disableWMD();
}
}
}
function getType(typeSelector)
{
if (typeSelector.nodeName.toLowerCase() == 'input') {
return typeSelector.getAttribute('value');
} else if (typeSelector.nodeName.toLowerCase() == 'select') {
return typeSelector.value;
// return typeSelector.options[typeSelector.selectedIndex].innerText;
}
return "";
}
function enableWMD()
{
var editContent = document.getElementById("editcontent");
var previewDiv = document.getElementById("wmd-preview");
var previewDivContainer = document.getElementById("wmd-preview-container");
previewDivContainer.style.display = 'block';
// editContent.style.width = previewDivContainer.style.width;
/***** build the preview manager *****/
var panes = {input:editContent, preview:previewDiv, output:null};
var previewManager = new Attacklab.wmd.previewManager(panes);
/***** build the editor and tell it to refresh the preview after commands *****/
var editor = new Attacklab.wmd.editor(editContent,previewManager.refresh);
// save everything so we can destroy it all later
instance = {ta:editContent, div:previewDiv, ed:editor, pm:previewManager};
}
function disableWMD()
{
document.getElementById("wmd-preview-container").style.display = 'none';
if (instance != null) {
instance.pm.destroy();
instance.ed.destroy();
// inst.ta.style.width='100%'
}
instance = null;
}
----
diff --git a/IkiWiki/Plugin/wmd.pm b/IkiWiki/Plugin/wmd.pm
index 9ddd237..743a0b8 100644
--- a/IkiWiki/Plugin/wmd.pm
+++ b/IkiWiki/Plugin/wmd.pm
@@ -17,6 +17,13 @@ sub getsetup () {
return
plugin => {
safe => 1,
+ rebuild => 1,
+ },
+ wmd_use101api => {
+ type => "boolean",
+ description => "Use the advanced, but unstable, WMD api for markdown preview.",
+ safe => 0,
+ rebuild => 0,
},
}
@@ -24,29 +31,25 @@ sub formbuilder_setup (@) {
my %params=@_;
my $form=$params{form};
- return if ! defined $form->field("do");
+ return unless defined $form->field("do");
return unless $form->field("do") eq "edit" ||
- $form->field("do") eq "create" ||
- $form->field("do") eq "comment";
-
- $form->tmpl_param("wmd_preview", "<div class=\"wmd-preview\"></div>\n".
- include_javascript(undef, 1));
-}
-
-sub include_javascript ($;$) {
- my $page=shift;
- my $absolute=shift;
-
- my $wmdjs=urlto("wmd/wmd.js", $page, $absolute);
- return <<"EOF"
-<script type="text/javascript">
-wmd_options = {
- output: "Markdown"
-};
-</script>
-<script src="$wmdjs" type="text/javascript"></script>
-EOF
+ $form->field("do") eq "create" ||
+ $form->field("do") eq "comment";
+
+ my $useAPI = $config{wmd_use101api}?'true':'false';
+ my $ikiwikijs = urlto("ikiwiki.js", undef, 1);
+ my $wmdIkiwikijs = urlto("wmd-ikiwiki.js", undef, 1);
+ my $wmdjs = urlto("wmd.js", undef, 1);
+
+ my $previewScripts = <<"EOS";
+ <script type="text/javascript">useWMDinterface=$useAPI;</script>
+ <script src="$ikiwikijs" type="text/javascript"></script>
+ <script src="$wmdIkiwikijs" type="text/javascript"></script>
+ <script src="$wmdjs" type="text/javascript"></script>
+EOS
+
+ $form->tmpl_param("wmd_preview", $previewScripts);
}
1
diff --git a/doc/style.css b/doc/style.css
index a6e6734..36c2b13
--- a/doc/style.css
+++ b/doc/style.css
@@ -76,9 +76,16 @@ div.tags {
float: right;
}
+/*
#editcontent {
width: 100%;
}
+*/
+
+#wmd-preview-container {
+ width: 49%;
+ float: right;
+}
img {
border-style: none;
diff --git a/templates/editpage.tmpl b/templates/editpage.tmpl
index b1cf015..1d2f080 100644
--- a/templates/editpage.tmpl
+++ b/templates/editpage.tmpl
@@ -15,6 +15,14 @@ Page type: <TMPL_VAR FIELD-TYPE>
<TMPL_VAR FIELD-PAGE>
<TMPL_VAR FIELD-TYPE>
</TMPL_IF>
+<TMPL_IF NAME="WMD_PREVIEW">
+<div id="wmd-preview-container">
+<div class="header">
+<span>Live preview:</span>
+</div>
+<div class="wmd-preview" id="wmd-preview"></div>
+</div>
+</TMPL_IF>
<TMPL_VAR FIELD-EDITCONTENT><br />
<TMPL_IF NAME="CAN_COMMIT">
Optional comment about this change:<br />

View File

@ -0,0 +1,21 @@
[[!tag wishlist]]
[[!tag patch]]
the inline plugin's sorting is plain lexical, thich may not be appropriate for
page titles if they have numeric components. the
[Sort::Naturally](http://search.cpan.org/dist/Sort-Naturally/) perl module
provides an algorithm for that.
there is a
[patch](http://git.ikiwiki.info/?p=ikiwiki;a=commit;h=55b83cb7bd1cd7c60bb45dc22c3745dd80a63fed)
attached that makes the [[plugins/inline]] plugin use Sort::Naturally if sort
is set to "title_natural".
the current patch uses `require Sort::Naturally`, so
[libsort-naturally-perl](http://packages.debian.org/libsort-naturally-perl)
does not become a dependency; it might be worth suggesting, though.
> See also: [[inline:_numerical_ordering_by_title]] (I probably prefer your
> approach..) --[[Joey]]
> [[applied|done]]

View File

@ -106,11 +106,11 @@ These options configure the wiki. Note that [[plugins]] can add additional
configuration options of their own. All of these options and more besides can
also be configured using a setup file.
* --wikiname
* --wikiname name
The name of the wiki, default is "wiki".
* --templatedir
* --templatedir dir
Specify the directory that the page [[templates|wikitemplates]] are stored in.
Default is `/usr/share/ikiwiki/templates`, or another location as configured at
@ -122,7 +122,7 @@ also be configured using a setup file.
ikiwiki. Old versions of templates do not always work with new ikiwiki
versions.
* --underlaydir
* --underlaydir dir
Specify the directory that is used to underlay the source directory.
Source files will be taken from here unless overridden by a file in the

View File

@ -0,0 +1,3 @@
New ikiwiki site at my personal site under /ikiwiki/ . This might move to /wiki/ or be on wiki.k.o depending on if I can import my MediaWiki stuff to it.
Thought I'd try it out again and it grew on me.

View File

@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 3.04\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-03-08 19:02-0400\n"
"PO-Revision-Date: 2009-02-26 21:28+0100\n"
"POT-Creation-Date: 2009-03-01 15:03-0500\n"
"PO-Revision-Date: 2009-03-15 16:10+0100\n"
"Last-Translator: Philippe Batailler <philippe.batailler@free.fr>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
"MIME-Version: 1.0\n"
@ -26,6 +26,8 @@ msgid ""
"probable misconfiguration: sslcookie is set, but you are attepting to login "
"via http, not https"
msgstr ""
"Erreur de configuration probable : sslcookie est positionné mais vous tentez "
"de vous connecter avec http et non https"
#: ../IkiWiki/CGI.pm:149
msgid "login failed, perhaps you need to turn on cookies?"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-03-08 19:02-0400\n"
"POT-Creation-Date: 2009-03-15 17:56-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"
@ -54,7 +54,7 @@ msgstr ""
msgid "You are banned."
msgstr ""
#: ../IkiWiki/CGI.pm:390 ../IkiWiki/CGI.pm:391 ../IkiWiki.pm:1209
#: ../IkiWiki/CGI.pm:390 ../IkiWiki/CGI.pm:391 ../IkiWiki.pm:1211
msgid "Error"
msgstr ""
@ -327,18 +327,18 @@ msgstr ""
msgid "fortune failed"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:624 ../IkiWiki/Plugin/git.pm:642
#: ../IkiWiki/Plugin/git.pm:626 ../IkiWiki/Plugin/git.pm:644
#: ../IkiWiki/Receive.pm:129
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:664
#: ../IkiWiki/Plugin/git.pm:666
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#: ../IkiWiki/Plugin/git.pm:668
#: ../IkiWiki/Plugin/git.pm:670
msgid "you are not allowed to change file modes"
msgstr ""
@ -1018,12 +1018,12 @@ msgstr ""
msgid "failed to load external plugin needed for %s plugin: %s"
msgstr ""
#: ../IkiWiki.pm:1192
#: ../IkiWiki.pm:1194
#, perl-format
msgid "preprocessing loop detected on %s at depth %i"
msgstr ""
#: ../IkiWiki.pm:1730
#: ../IkiWiki.pm:1732
msgid "yes"
msgstr ""

View File

@ -1,4 +1,4 @@
<div class="comment" id="<TMPL_VAR NAME=INLINEPAGE>">
<div class="comment" id="<TMPL_VAR NAME=COMMENTID>">
<div class="comment-subject">
<TMPL_IF PERMALINK>