Photos
Blog
Projects
vanrenterghem.biz
projects
/
git.ikiwiki.info.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge commit 'origin/master' into tova
[git.ikiwiki.info.git]
/
IkiWiki
/
Plugin
/
inline.pm
diff --git
a/IkiWiki/Plugin/inline.pm
b/IkiWiki/Plugin/inline.pm
index 8f7cd826e4ea801cc49a7a57bc7e3e09084b0782..5517e3c9434e9d483f343e8c676db6da42efcda7 100644
(file)
--- a/
IkiWiki/Plugin/inline.pm
+++ b/
IkiWiki/Plugin/inline.pm
@@
-11,6
+11,7
@@
use URI;
my %knownfeeds;
my %page_numfeeds;
my @inline;
my %knownfeeds;
my %page_numfeeds;
my @inline;
+my $nested=0;
sub import { #{{{
hook(type => "getopt", id => "inline", call => \&getopt);
sub import { #{{{
hook(type => "getopt", id => "inline", call => \&getopt);
@@
-69,12
+70,12
@@
sub sessioncgi () { #{{{
my $session=shift;
if ($q->param('do') eq 'blog') {
my $session=shift;
if ($q->param('do') eq 'blog') {
- my $page=
decode_utf8($q->param('title'
));
- $page=~s/
\///g; # no slashes in blog post
s
+ my $page=
IkiWiki::titlepage(decode_utf8($q->param('title')
));
+ $page=~s/
(\/)/"__".ord($1)."__"/eg; # don't create subdir
s
# if the page already exists, munge it to be unique
my $from=$q->param('from');
my $add="";
# if the page already exists, munge it to be unique
my $from=$q->param('from');
my $add="";
- while (exists $IkiWiki::pagecase{lc($from."/".
IkiWiki::titlepage($page)
.$add)}) {
+ while (exists $IkiWiki::pagecase{lc($from."/".
$page
.$add)}) {
$add=1 unless length $add;
$add++;
}
$add=1 unless length $add;
$add++;
}
@@
-93,16
+94,11
@@
package IkiWiki;
my %toping;
my %feedlinks;
my %toping;
my %feedlinks;
-sub yesno ($) { #{{{
- my $val=shift;
- return (defined $val && lc($val) eq "yes");
-} #}}}
-
sub preprocess_inline (@) { #{{{
my %params=@_;
if (! exists $params{pages}) {
sub preprocess_inline (@) { #{{{
my %params=@_;
if (! exists $params{pages}) {
-
return ""
;
+
error gettext("missing pages parameter")
;
}
my $raw=yesno($params{raw});
my $archive=yesno($params{archive});
}
my $raw=yesno($params{raw});
my $archive=yesno($params{archive});
@@
-277,7
+273,7
@@
sub preprocess_inline (@) { #{{{
}
if (length $config{cgiurl} && defined $type) {
$template->param(have_actions => 1);
}
if (length $config{cgiurl} && defined $type) {
$template->param(have_actions => 1);
- $template->param(editurl => cgiurl(do => "edit", page =>
pagetitle($page, 1)
));
+ $template->param(editurl => cgiurl(do => "edit", page =>
$page
));
}
}
}
}
@@
-312,7
+308,7
@@
sub preprocess_inline (@) { #{{{
if (! $params{preview}) {
writefile($rssp, $config{destdir},
genfeed("rss",
if (! $params{preview}) {
writefile($rssp, $config{destdir},
genfeed("rss",
- $config{url}."/".rsspage($params{destpage}).$feednum, $desc, $params{destpage}, @feedlist));
+ $config{url}."/".rsspage($params{destpage}).$feednum, $desc, $params{
guid}, $params{
destpage}, @feedlist));
$toping{$params{destpage}}=1 unless $config{rebuild};
$feedlinks{$params{destpage}}=qq{<link rel="alternate" type="application/rss+xml" title="RSS" href="$rssurl" />};
}
$toping{$params{destpage}}=1 unless $config{rebuild};
$feedlinks{$params{destpage}}=qq{<link rel="alternate" type="application/rss+xml" title="RSS" href="$rssurl" />};
}
@@
-322,14
+318,14
@@
sub preprocess_inline (@) { #{{{
will_render($params{destpage}, $atomp);
if (! $params{preview}) {
writefile($atomp, $config{destdir},
will_render($params{destpage}, $atomp);
if (! $params{preview}) {
writefile($atomp, $config{destdir},
- genfeed("atom", $config{url}."/".atompage($params{destpage}).$feednum, $desc, $params{destpage}, @feedlist));
+ genfeed("atom", $config{url}."/".atompage($params{destpage}).$feednum, $desc, $params{
guid}, $params{
destpage}, @feedlist));
$toping{$params{destpage}}=1 unless $config{rebuild};
$feedlinks{$params{destpage}}=qq{<link rel="alternate" type="application/atom+xml" title="Atom" href="$atomurl" />};
}
}
}
$toping{$params{destpage}}=1 unless $config{rebuild};
$feedlinks{$params{destpage}}=qq{<link rel="alternate" type="application/atom+xml" title="Atom" href="$atomurl" />};
}
}
}
- return $ret if $raw;
+ return $ret if $raw
|| $nested
;
push @inline, $ret;
return "<div class=\"inline\" id=\"$#inline\"></div>\n\n";
} #}}}
push @inline, $ret;
return "<div class=\"inline\" id=\"$#inline\"></div>\n\n";
} #}}}
@@
-350,11
+346,14
@@
sub get_inline_content ($$) { #{{{
my $file=$pagesources{$page};
my $type=pagetype($file);
if (defined $type) {
my $file=$pagesources{$page};
my $type=pagetype($file);
if (defined $type) {
- return htmlize($page, $type,
+ $nested++;
+ my $ret=htmlize($page, $destpage, $type,
linkify($page, $destpage,
preprocess($page, $destpage,
filter($page, $destpage,
readfile(srcfile($file))))));
linkify($page, $destpage,
preprocess($page, $destpage,
filter($page, $destpage,
readfile(srcfile($file))))));
+ $nested--;
+ return $ret;
}
else {
return "";
}
else {
return "";
@@
-389,18
+388,18
@@
sub absolute_urls ($$) { #{{{
my $url=$baseurl;
$url=~s/[^\/]+$//;
my $url=$baseurl;
$url=~s/[^\/]+$//;
- # what is the non path part of the url?
(need it for relative url's starting with /
+ # what is the non path part of the url?
my $top_uri = URI->new($url);
my $top_uri = URI->new($url);
- $top_uri->path_query("
/
"); # reset the path
+ $top_uri->path_query(""); # reset the path
my $urltop = $top_uri->as_string;
my $urltop = $top_uri->as_string;
- $urltop=~s/\/*$//;
$content=~s/(<a(?:\s+(?:class|id)\s*="?\w+"?)?)\s+href=\s*"(#[^"]+)"/$1 href="$baseurl$2"/mig;
$content=~s/(<a(?:\s+(?:class|id)\s*="?\w+"?)?)\s+href=\s*"(#[^"]+)"/$1 href="$baseurl$2"/mig;
- #
Relative URL
+ #
relative to another wiki page
$content=~s/(<a(?:\s+(?:class|id)\s*="?\w+"?)?)\s+href=\s*"(?!\w+:)([^\/][^"]*)"/$1 href="$url$2"/mig;
$content=~s/(<a(?:\s+(?:class|id)\s*="?\w+"?)?)\s+href=\s*"(?!\w+:)([^\/][^"]*)"/$1 href="$url$2"/mig;
+ $content=~s/(<img(?:\s+(?:class|id|width|height)\s*="?\w+"?)*)\s+src=\s*"(?!\w+:)([^\/][^"]*)"/$1 src="$url$2"/mig;
# relative to the top of the site
$content=~s/(<a(?:\s+(?:class|id)\s*="?\w+"?)?)\s+href=\s*"(?!\w+:)(\/[^"]*)"/$1 href="$urltop$2"/mig;
# relative to the top of the site
$content=~s/(<a(?:\s+(?:class|id)\s*="?\w+"?)?)\s+href=\s*"(?!\w+:)(\/[^"]*)"/$1 href="$urltop$2"/mig;
- $content=~s/(<img(?:\s+(?:class|id|width|height)\s*="?\w+"?)*)\s+src=\s*"(?!\w+:)(
[^"]+)"/$1 src="$url
$2"/mig;
+ $content=~s/(<img(?:\s+(?:class|id|width|height)\s*="?\w+"?)*)\s+src=\s*"(?!\w+:)(
\/[^"]*)"/$1 src="$urltop
$2"/mig;
return $content;
} #}}}
return $content;
} #}}}
@@
-412,10
+411,11
@@
sub atompage ($) { #{{{
return targetpage(shift, "atom");
} #}}}
return targetpage(shift, "atom");
} #}}}
-sub genfeed ($$$$@) { #{{{
+sub genfeed ($$$$
$
@) { #{{{
my $feedtype=shift;
my $feedurl=shift;
my $feeddesc=shift;
my $feedtype=shift;
my $feedurl=shift;
my $feeddesc=shift;
+ my $guid=shift;
my $page=shift;
my @pages=@_;
my $page=shift;
my @pages=@_;
@@
-438,6
+438,11
@@
sub genfeed ($$$$@) { #{{{
mdate_3339 => date_3339($pagemtime{$p}),
);
mdate_3339 => date_3339($pagemtime{$p}),
);
+ if (exists $pagestate{$p} &&
+ exists $pagestate{$p}{meta}{guid}) {
+ $itemtemplate->param(guid => $pagestate{$p}{meta}{guid});
+ }
+
if ($itemtemplate->query(name => "enclosure")) {
my $file=$pagesources{$p};
my $type=pagetype($file);
if ($itemtemplate->query(name => "enclosure")) {
my $file=$pagesources{$p};
my $type=pagetype($file);
@@
-445,7
+450,7
@@
sub genfeed ($$$$@) { #{{{
$itemtemplate->param(content => $pcontent);
}
else {
$itemtemplate->param(content => $pcontent);
}
else {
- my
($a, $b, $c, $d, $e, $f, $g, $size) = stat(srcfile($file))
;
+ my
$size=(srcfile_stat($file))[8]
;
my $mime="unknown";
eval q{use File::MimeInfo};
if (! $@) {
my $mime="unknown";
eval q{use File::MimeInfo};
if (! $@) {
@@
-480,6
+485,7
@@
sub genfeed ($$$$@) { #{{{
pageurl => $url,
content => $content,
feeddesc => $feeddesc,
pageurl => $url,
content => $content,
feeddesc => $feeddesc,
+ guid => $guid,
feeddate => date_3339($lasttime),
feedurl => $feedurl,
version => $IkiWiki::version,
feeddate => date_3339($lasttime),
feedurl => $feedurl,
version => $IkiWiki::version,
@@
-505,7
+511,7
@@
sub pingurl (@) { #{{{
defined(my $pid = fork) or error("Can't fork: $!");
return if $pid;
chdir '/';
defined(my $pid = fork) or error("Can't fork: $!");
return if $pid;
chdir '/';
- setsid() or error("Can't start a new session: $!");
+
POSIX::
setsid() or error("Can't start a new session: $!");
open STDIN, '/dev/null';
open STDOUT, '>/dev/null';
open STDERR, '>&STDOUT' or error("Can't dup stdout: $!");
open STDIN, '/dev/null';
open STDOUT, '>/dev/null';
open STDERR, '>&STDOUT' or error("Can't dup stdout: $!");