massive patchqueue reorg
patches can now be anywhere and tagged patch to show up on the patch list. Moved all the patchqueue stuff to todo items; some of it was merged into existing todo items.master
parent
d63068b669
commit
c96d672810
|
@ -36,7 +36,7 @@ W "belongs" to ikiwiki and should not be edited directly.
|
|||
|
||||
Support for using darcs as a backend is being worked on by [Thomas
|
||||
Schwinge](mailto:tschwinge@gnu.org), although development is on hold curretly.
|
||||
There is a patch in the [[patchqueue]].
|
||||
There is a patch in [[todo/darcs]].
|
||||
|
||||
### How will it work internally?
|
||||
|
||||
|
@ -114,7 +114,7 @@ towards transmitting changes with standalone patch bundles (often by email) as d
|
|||
>> IMHO it comes down to whatever works well for a given RCS. Seems like
|
||||
>> the darcs approach _could_ be done with most any distributed system, but
|
||||
>> it might be overkill for some (or all?) While there is the incomplete darcs
|
||||
>> plugin in the [[patchqueue]], if you submit one that's complete, I will
|
||||
>> plugin in [[todo/darcs]], if you submit one that's complete, I will
|
||||
>> probably accept it into ikiwiki.. --[[Joey]]
|
||||
|
||||
## [[Git]]
|
||||
|
|
|
@ -4,6 +4,6 @@ Also see the [Debian bugs](http://bugs.debian.org/ikiwiki), and the
|
|||
[[TODO]] page.
|
||||
|
||||
[[inline pages="bugs/* and !bugs/done and !bugs/discussion and
|
||||
!link(bugs/done) and !bugs/*/*"
|
||||
!link(patch) and !link(bugs/done) and !bugs/*/*"
|
||||
feedpages="created_after(bugs/no_commit_mails_for_new_pages)"
|
||||
actions=yes rootpage="bugs" postformtext="Add a new bug titled:" show=0]]
|
||||
|
|
|
@ -10,7 +10,7 @@ Looks like a build died halfway through, so it was stumbling over rendered
|
|||
html pages that it didn't have record of. I don't know what build failed
|
||||
exactly. --[[Joey]]
|
||||
|
||||
>> Has this just happened again? [[patchqueue/datearchives-plugin]] is now exhibiting the same symptoms -- it's in the repository and RecentChanges, but the actual page is 404. --Ben
|
||||
>> Has this just happened again? [[todo/datearchives-plugin]] is now exhibiting the same symptoms -- it's in the repository and RecentChanges, but the actual page is 404. --Ben
|
||||
|
||||
>>> Yes, it seems to have happened again. Added debugging to track it
|
||||
>>> down next time it occurs. It seems to be happening when you add things
|
||||
|
|
|
@ -24,7 +24,7 @@ or "History". --[[Paweł|ptecza]]
|
|||
>>> existing/nonexisting page in two places, one in code in ikiwiki and one
|
||||
>>> in the template. Not good design. --[[Joey]]
|
||||
|
||||
> As noted in [[patchqueue/l10n]], there are some other places in ikiwiki
|
||||
> As noted in [[todo/l10n]], there are some other places in ikiwiki
|
||||
> that hard code English strings, and I feel that using standard gettext
|
||||
> and po files is the best approach for these, although Recai suggested an
|
||||
> approach of translating the strings using a template file. --[[Joey]]
|
||||
|
@ -41,4 +41,4 @@ or "History". --[[Paweł|ptecza]]
|
|||
>>> translating it. [[bugs/done]]! There's a `po/debconf.pot` in the source
|
||||
>>> now for translating. See [[translation]]. --[[Joey]]
|
||||
|
||||
>>>> Joey, you're great! ;) Thanks a lot! I'll try ikiwiki l10n stuff soon. --[[Paweł|ptecza]]
|
||||
>>>> Joey, you're great! ;) Thanks a lot! I'll try ikiwiki l10n stuff soon. --[[Paweł|ptecza]]
|
||||
|
|
|
@ -28,8 +28,7 @@ Thanks! --[[Joey]]
|
|||
developed, and is being written with security as a priority, so don't
|
||||
expect things to stay in this list for long.
|
||||
|
||||
* Developers, please document any ikiwiki patches you have in the
|
||||
[[PatchQueue]].
|
||||
* Developers, please document any ikiwiki [[patches|patch]] you have.
|
||||
|
||||
All wikis are supposed to have a [[SandBox]], so this one does too.
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
Since we have enough people working on ikiwiki to be dangerous, or at least
|
||||
to duplicate work without coordination, and since few people have direct
|
||||
commit access to the tree, here's a queue of suggested patches.
|
||||
|
||||
If you post a patch to the wiki, once it's ready to be applied, add a
|
||||
'patch' tag so it will show up here.
|
||||
|
||||
[[inline pages="todo/* and link(patch) and !*/Discussion" rootpage="todo"
|
||||
archive="yes"]]
|
|
@ -1,10 +0,0 @@
|
|||
Since we have enough people working on ikiwiki to be dangerous, or at least
|
||||
to duplicate work without coordination, and since few people have direct
|
||||
commit access to the tree, here's a queue of suggested patches.
|
||||
Feel free to either copy the patch inline, or link to one elsewhere (or nag
|
||||
[[Joey]] to open up anonymous svn access to this wiki so you can check in the
|
||||
patches directly).
|
||||
|
||||
[[inline pages="patchqueue/* and !*/Discussion"
|
||||
feedpages="created_after(patchqueue/enable-htaccess-files)"
|
||||
rootpage="patchqueue" archive="yes"]]
|
|
@ -1,24 +0,0 @@
|
|||
I have implemented the first version of the Gallery Plugin for Ikiwiki as part of [[soc]]. This plugin would create a nice looking gallery of the images once the directory containing images is specified with some additional parameters. It has been build over the img plugin.
|
||||
|
||||
Plugin can be downloaded from [here](http://myweb.unomaha.edu/~ajain/gallery.tar).
|
||||
|
||||
It can be used as : <br>
|
||||
\[[gallery imagedir="images" thumbnailsize="200x200" cols="3" alt="Can not be displayed" title="My Pictures"]]
|
||||
|
||||
where-<br>
|
||||
* imagedir => Directory containing images. It will scan all the files with jpg|png|gif extension from the directory and will put it in the gallery.<br>
|
||||
* thumbnailsize(optional) => Size of the thumbnail that you want to generate for the gallery.<br>
|
||||
* alt(optional) => If image can not be displayed, it will display the text contained in alt argument.<br>
|
||||
* cols(optional) => Number of columns of thumbnails that you want to generate.<br>
|
||||
* title(optional) => Title of the gallery.<br>
|
||||
|
||||
Features of the Gallery Plugin:<br>
|
||||
* You can go the next image by clicking on the right side of the image or by pressing 'n'.<br>
|
||||
* Similary, you can go the previous image by clicking on the left side of the image or by pressing 'p'.<br>
|
||||
* Press esc to close the gallery.<br>
|
||||
* While on image, nearby images are preloaded in the background, so as to make the browsing fast.<br>
|
||||
|
||||
Right now, it features only one template namely [Lightbox](http://www.hudddletogether.com). Later on, I will add few more templates.<br>
|
||||
For any feedback or query, feel free to mail me at arpitjain11 [AT] gmail.com
|
||||
|
||||
Additional details are available [here](http://myweb.unomaha.edu/~ajain/ikiwikigallery.html).
|
|
@ -1,14 +0,0 @@
|
|||
Project IkiWiki::WIKIWYG v0.8 - <http://ikiwiki.xbaud.com/>
|
||||
===========================================================
|
||||
|
||||
[Wikiwyg][] is a "What you see is what you get" editor for wikis. It will allow you to double click on the text in a wiki and save it without reloading the page. The IkiWiki version will allow you to edit your wiki in Markdown or WYSIWYG.
|
||||
|
||||
The plugin can be downloaded from <http://ikiwiki.xbaud.com/wikiwyg-0.8.tar.gz>
|
||||
|
||||
### Current Issues
|
||||
|
||||
* Code sections starting with 4 spaces do not work
|
||||
* Adding links in the WYSIWYG editor is difficult
|
||||
* Double lists don't work
|
||||
|
||||
[Wikiwyg]: http://www.wikiwyg.net/
|
|
@ -1,274 +0,0 @@
|
|||
This is my second cut at a feature like that requested in [[todo/Moving_Pages]].
|
||||
It can also be found [here](http://ikidev.betacantrips.com/patches/move.patch).
|
||||
|
||||
A few shortcomings exist:
|
||||
|
||||
* No precautions whatsoever are made to protect against race conditions or failures
|
||||
in the rcs\_move function. I didn't even do the `cgi_editpage` thing where I hold
|
||||
the lock and render afterwards (mostly because the copy I was editing was not
|
||||
up-to-date enough to have that code). Although FAILED_SAVE is in movepage.tmpl,
|
||||
no code activates it yet.
|
||||
* Some code is duplicated between cgi\_movepage and cgi\_editpage, as well
|
||||
as rcs\_commit and rcs\_move.
|
||||
* The user interface is pretty lame. I couldn't figure out a good way to let
|
||||
the user specify which directory to move things to without implementing a
|
||||
FileChooser thing.
|
||||
* No redirect pages like those mentioned on [[todo/Moving_Pages]] exist yet,
|
||||
so none are created.
|
||||
* I added a Move link to page.tmpl but it may belong better someplace else --
|
||||
maybe editpage.tmpl? Not sure.
|
||||
* from is redundant with page so far -- but since the Move links could someday
|
||||
come from someplace other than the page itself I kept it around.
|
||||
* If I move foo.mdwn to bar.mdwn, foo/* should move too, probably.
|
||||
|
||||
> Looks like a good start, although I agree about many of the points above,
|
||||
> and also feel that something needs to be done about rcses that don't
|
||||
> implement a move operation -- falling back to an add and delete.
|
||||
> --[[Joey]]
|
||||
|
||||
Hmm. Shouldn't that be done on a by-RCS basis, though? (i.e. implemented
|
||||
by backends in the `rcs_move` function)
|
||||
|
||||
> Probably, yes, but maybe there's a way to avoid duplicating code for that
|
||||
> in several of them.
|
||||
|
||||
Also, how should ikiwiki react if a page is edited (say, by another user)
|
||||
before it is moved? Bail, or shrug and proceed?
|
||||
|
||||
> The important thing is to keep in mind that the page could be edited,
|
||||
> moved, deleted, etc in between the user starting the move and the move
|
||||
> happening. So, the code really needs to deal with all of these cases in
|
||||
> some way. It seems fine to me to go ahead with the move even if the page
|
||||
> was edited. If the page was deleted or moved, it seems reasonable to exit
|
||||
> with an error.
|
||||
|
||||
diff -urNX ignorepats ikiwiki/IkiWiki/CGI.pm ikidev/IkiWiki/CGI.pm
|
||||
--- ikiwiki/IkiWiki/CGI.pm 2007-02-14 18:17:12.000000000 -0800
|
||||
+++ ikidev/IkiWiki/CGI.pm 2007-02-22 18:54:23.194982000 -0800
|
||||
@@ -561,6 +561,106 @@
|
||||
}
|
||||
} #}}}
|
||||
|
||||
+sub cgi_movepage($$) {
|
||||
+ my $q = shift;
|
||||
+ my $session = shift;
|
||||
+ eval q{use CGI::FormBuilder};
|
||||
+ error($@) if $@;
|
||||
+ my @fields=qw(do from rcsinfo page newdir newname comments);
|
||||
+ my @buttons=("Rename Page", "Cancel");
|
||||
+
|
||||
+ my $form = CGI::FormBuilder->new(
|
||||
+ fields => \@fields,
|
||||
+ header => 1,
|
||||
+ charset => "utf-8",
|
||||
+ method => 'POST',
|
||||
+ action => $config{cgiurl},
|
||||
+ template => (-e "$config{templatedir}/movepage.tmpl" ?
|
||||
+ {template_params("movepage.tmpl")} : ""),
|
||||
+ );
|
||||
+ run_hooks(formbuilder_setup => sub {
|
||||
+ shift->(form => $form, cgi => $q, session => $session);
|
||||
+ });
|
||||
+
|
||||
+ decode_form_utf8($form);
|
||||
+
|
||||
+ # This untaint is safe because if the page doesn't exist, bail.
|
||||
+ my $page = $form->field('page');
|
||||
+ $page = possibly_foolish_untaint($page);
|
||||
+ if (! exists $pagesources{$page}) {
|
||||
+ error("page does not exist");
|
||||
+ }
|
||||
+ my $file=$pagesources{$page};
|
||||
+ my $type=pagetype($file);
|
||||
+
|
||||
+ my $from;
|
||||
+ if (defined $form->field('from')) {
|
||||
+ ($from)=$form->field('from')=~/$config{wiki_file_regexp}/;
|
||||
+ }
|
||||
+
|
||||
+ $form->field(name => "do", type => 'hidden');
|
||||
+ $form->field(name => "from", type => 'hidden');
|
||||
+ $form->field(name => "rcsinfo", type => 'hidden');
|
||||
+ $form->field(name => "newdir", type => 'text', size => 80);
|
||||
+ $form->field(name => "page", value => $page, force => 1);
|
||||
+ $form->field(name => "newname", type => "text", size => 80);
|
||||
+ $form->field(name => "comments", type => "text", size => 80);
|
||||
+ $form->tmpl_param("can_commit", $config{rcs});
|
||||
+ $form->tmpl_param("indexlink", indexlink());
|
||||
+ $form->tmpl_param("baseurl", baseurl());
|
||||
+
|
||||
+ if (! $form->submitted) {
|
||||
+ $form->field(name => "rcsinfo", value => rcs_prepedit($file),
|
||||
+ force => 1);
|
||||
+ }
|
||||
+
|
||||
+ if ($form->submitted eq "Cancel") {
|
||||
+ redirect($q, "$config{url}/".htmlpage($page));
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (! $form->submitted || ! $form->validate) {
|
||||
+ check_canedit($page, $q, $session);
|
||||
+ $form->tmpl_param("page_select", 0);
|
||||
+ $form->field(name => "page", type => 'hidden');
|
||||
+ $form->field(name => "type", type => 'hidden');
|
||||
+ $form->title(sprintf(gettext("moving %s"), pagetitle($page)));
|
||||
+ my $pname = basename($page);
|
||||
+ my $dname = dirname($page);
|
||||
+ if (! defined $form->field('newname') ||
|
||||
+ ! length $form->field('newname')) {
|
||||
+ $form->field(name => "newname",
|
||||
+ value => pagetitle($pname, 1), force => 1);
|
||||
+ }
|
||||
+ if (! defined $form->field('newdir') ||
|
||||
+ ! length $form->field('newdir')) {
|
||||
+ $form->field(name => "newdir",
|
||||
+ value => pagetitle($dname, 1), force => 1);
|
||||
+ }
|
||||
+ print $form->render(submit => \@buttons);
|
||||
+ }
|
||||
+ else{
|
||||
+ # This untaint is safe because titlepage removes any problematic
|
||||
+ # characters.
|
||||
+ my ($newname)=$form->field('newname');
|
||||
+ $newname=titlepage(possibly_foolish_untaint($newname));
|
||||
+ my ($newdir)=$form->field('newdir');
|
||||
+ $newdir=titlepage(possibly_foolish_untaint($newdir));
|
||||
+ if (! defined $newname || ! length $newname || file_pruned($newname, $config{srcdir}) || $newname=~/^\//) {
|
||||
+ error("bad page name");
|
||||
+ }
|
||||
+ check_canedit($page, $q, $session);
|
||||
+
|
||||
+ my $newpage = ($newdir?"$newdir/":"") . $newname;
|
||||
+ my $newfile = $newpage . ".$type";
|
||||
+ my $message = $form->field('comments');
|
||||
+ unlockwiki();
|
||||
+ rcs_move($file, $newfile, $message, $form->field("rcsinfo"),
|
||||
+ $session->param("name"), $ENV{REMOTE_ADDR});
|
||||
+ redirect($q, "$config{url}/".htmlpage($newpage));
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
sub cgi_getsession ($) { #{{{
|
||||
my $q=shift;
|
||||
|
||||
@@ -656,6 +756,9 @@
|
||||
elsif (defined $session->param("postsignin")) {
|
||||
cgi_postsignin($q, $session);
|
||||
}
|
||||
+ elsif ($do eq 'move') {
|
||||
+ cgi_movepage($q, $session);
|
||||
+ }
|
||||
elsif ($do eq 'prefs') {
|
||||
cgi_prefs($q, $session);
|
||||
}
|
||||
diff -urNX ignorepats ikiwiki/IkiWiki/Rcs/svn.pm ikidev/IkiWiki/Rcs/svn.pm
|
||||
--- ikiwiki/IkiWiki/Rcs/svn.pm 2007-01-27 16:04:48.000000000 -0800
|
||||
+++ ikidev/IkiWiki/Rcs/svn.pm 2007-02-22 01:51:29.923626000 -0800
|
||||
@@ -60,6 +60,34 @@
|
||||
}
|
||||
} #}}}
|
||||
|
||||
+sub rcs_move ($$$$;$$) {
|
||||
+ my $file=shift;
|
||||
+ my $newname=shift;
|
||||
+ my $message=shift;
|
||||
+ my $rcstoken=shift;
|
||||
+ my $user=shift;
|
||||
+ my $ipaddr=shift;
|
||||
+ if (defined $user) {
|
||||
+ $message="web commit by $user".(length $message ? ": $message" : "");
|
||||
+ }
|
||||
+ elsif (defined $ipaddr) {
|
||||
+ $message="web commit from $ipaddr".(length $message ? ": $message" : "");
|
||||
+ }
|
||||
+
|
||||
+ chdir($config{srcdir}); # svn merge wants to be here
|
||||
+
|
||||
+ if (system("svn", "move", "--quiet",
|
||||
+ "$file", "$newname") != 0) {
|
||||
+ return 1;
|
||||
+ }
|
||||
+ if (system("svn", "commit", "--quiet",
|
||||
+ "--encoding", "UTF-8", "-m",
|
||||
+ possibly_foolish_untaint($message)) != 0) {
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return undef # success
|
||||
+}
|
||||
+
|
||||
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.
|
||||
diff -urNX ignorepats ikiwiki/IkiWiki/Render.pm ikidev/IkiWiki/Render.pm
|
||||
--- ikiwiki/IkiWiki/Render.pm 2007-02-14 17:00:05.000000000 -0800
|
||||
+++ ikidev/IkiWiki/Render.pm 2007-02-22 18:30:00.451755000 -0800
|
||||
@@ -80,6 +80,7 @@
|
||||
|
||||
if (length $config{cgiurl}) {
|
||||
$template->param(editurl => cgiurl(do => "edit", page => $page));
|
||||
+ $template->param(moveurl => cgiurl(do => "move", page => $page));
|
||||
$template->param(prefsurl => cgiurl(do => "prefs"));
|
||||
if ($config{rcs}) {
|
||||
$template->param(recentchangesurl => cgiurl(do => "recentchanges"));
|
||||
diff -urNX ignorepats ikiwiki/templates/movepage.tmpl ikidev/templates/movepage.tmpl
|
||||
--- ikiwiki/templates/movepage.tmpl 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ ikidev/templates/movepage.tmpl 2007-02-22 18:40:39.751763000 -0800
|
||||
@@ -0,0 +1,44 @@
|
||||
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
+<html>
|
||||
+<head>
|
||||
+<base href="<TMPL_VAR BASEURL>" />
|
||||
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
+<title><TMPL_VAR FORM-TITLE></title>
|
||||
+<link rel="stylesheet" href="<TMPL_VAR BASEURL>style.css" type="text/css" />
|
||||
+<link rel="stylesheet" href="<TMPL_VAR BASEURL>local.css" type="text/css" />
|
||||
+<TMPL_IF NAME="FAVICON">
|
||||
+<link rel="icon" href="<TMPL_VAR BASEURL><TMPL_VAR FAVICON>" type="image/x-icon" />
|
||||
+</TMPL_IF>
|
||||
+</head>
|
||||
+<body>
|
||||
+<TMPL_IF NAME="FAILED_SAVE">
|
||||
+<p>
|
||||
+<b>Failed to save your changes.</b>
|
||||
+</p>
|
||||
+<p>
|
||||
+Your changes were not able to be saved to disk. The system gave the error:
|
||||
+<blockquote>
|
||||
+<TMPL_VAR ERROR_MESSAGE>
|
||||
+</blockquote>
|
||||
+Your changes are preserved below, and you can try again to save them.
|
||||
+</p>
|
||||
+</TMPL_IF>
|
||||
+<TMPL_VAR FORM-START>
|
||||
+<div class="header">
|
||||
+<span><TMPL_VAR INDEXLINK>/ <TMPL_VAR FORM-TITLE></span>
|
||||
+</div>
|
||||
+<TMPL_VAR FIELD-DO>
|
||||
+<TMPL_VAR FIELD-FROM>
|
||||
+<TMPL_VAR FIELD-RCSINFO>
|
||||
+<TMPL_VAR FIELD-PAGE>
|
||||
+New location: <TMPL_VAR FIELD-NEWDIR>/ <TMPL_VAR FIELD-NEWNAME>
|
||||
+<br />
|
||||
+<TMPL_IF NAME="CAN_COMMIT">
|
||||
+Optional comment about this change:<br />
|
||||
+<TMPL_VAR FIELD-COMMENTS><br />
|
||||
+</TMPL_IF>
|
||||
+<input id="_submit" name="_submit" type="submit" value="Rename Page" /><input id="_submit_2" name="_submit" type="submit" value="Cancel" />
|
||||
+<TMPL_VAR FORM-END>
|
||||
+</body>
|
||||
+</html>
|
||||
diff -urNX ignorepats ikiwiki/templates/page.tmpl ikidev/templates/page.tmpl
|
||||
--- ikiwiki/templates/page.tmpl 2006-12-28 12:27:01.000000000 -0800
|
||||
+++ ikidev/templates/page.tmpl 2007-02-22 01:52:33.078464000 -0800
|
||||
@@ -32,6 +32,9 @@
|
||||
<TMPL_IF NAME="EDITURL">
|
||||
<li><a href="<TMPL_VAR EDITURL>">Edit</a></li>
|
||||
</TMPL_IF>
|
||||
+<TMPL_IF NAME="MOVEURL">
|
||||
+<li><a href="<TMPL_VAR MOVEURL>">Move</a></li>
|
||||
+</TMPL_IF>
|
||||
<TMPL_IF NAME="RECENTCHANGESURL">
|
||||
<li><a href="<TMPL_VAR RECENTCHANGESURL>">RecentChanges</a></li>
|
||||
</TMPL_IF>
|
|
@ -1,172 +0,0 @@
|
|||
Sorry if you don't appreciate me lumping all of these patches together.
|
||||
|
||||
These are various fixes I had to make when installing Ikiwiki. Some are
|
||||
due it being a non-Debian system, the others are actual bugs.
|
||||
|
||||
--- upstream/IkiWiki/Rcs/svn.pm 2006-09-16 01:11:55.000000000 +0100
|
||||
+++ main/IkiWiki/Rcs/svn.pm 2006-09-16 01:12:50.000000000 +0100
|
||||
@@ -34,7 +34,7 @@
|
||||
my $field=shift;
|
||||
my $file=shift;
|
||||
|
||||
- my $info=`LANG=C svn info $file`;
|
||||
+ my $info=`svn info $file`;
|
||||
my ($ret)=$info=~/^$field: (.*)$/m;
|
||||
return $ret;
|
||||
} #}}}
|
||||
@@ -140,7 +140,7 @@
|
||||
if $svn_version =~ /\d\.(\d)\.\d/ && $1 >= 2;
|
||||
|
||||
my $svn_url=svn_info("URL", $config{srcdir});
|
||||
- my $xml = XMLin(scalar `svn $svn_limit --xml -v log '$svn_url'`,
|
||||
+ my $xml = XMLin(scalar `svn $svn_limit --xml -v log '$svn_url' --config-dir /tmp`,
|
||||
ForceArray => [ 'logentry', 'path' ],
|
||||
GroupTags => { paths => 'path' },
|
||||
KeyAttr => { path => 'content' },
|
||||
|
||||
The first hunk of this patch is strange. It just failed to work with this
|
||||
in place, and it took me a long time to figure it out. I realise what you
|
||||
are trying to do, and it still works here as I use a similar LANG anyway.
|
||||
|
||||
For reference svn version 1.3.1 (r19032), my $LANG=en_GB.utf8, but I'm not
|
||||
sure what the CGI was running under.
|
||||
|
||||
> That's strange. Is the problem to do with setting LANG=C or to do
|
||||
> with the way it's set and exported on the same line as the svn info call?
|
||||
> Can you reproduce the problem running svn info outside of ikiwiki?
|
||||
> --[[Joey]]
|
||||
|
||||
>> I've now managed to reproduce the problem. I'll try and give some more information.
|
||||
>> When going to the Recent Changes link I get
|
||||
|
||||
[Sat Sep 16 15:16:08 2006] [error] [client xxxx] svn: Can't check path '/home/jw2328/.subversion': Permission denied, referer: http://xxxxx/test/sandbox.html
|
||||
[Sat Sep 16 15:16:08 2006] [error] [client xxxx] Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/site_perl/5.8.3/IkiWiki/Rcs/svn.pm line 145., referer: http://xxxx/test/sandbox.html
|
||||
[Sat Sep 16 15:16:08 2006] [error] [client xxxxx] svn: Can't check path '/home/jw2328/.subversion': Permission denied, referer: http://xxxx/test/sandbox.html
|
||||
[Sat Sep 16 15:16:09 2006] [error] [client xxxx] File does not exist: at /usr/lib/perl5/site_perl/5.8.3/IkiWiki/Rcs/svn.pm line 145, referer: http://xxxx/test/sandbox.html
|
||||
[Sat Sep 16 15:16:09 2006] [error] [client xxxx] Premature end of script headers: ikitest, referer: http://xxxx/test/sandbox.html
|
||||
|
||||
>> which the $svn_url is causing the uninitialised value, due to the
|
||||
>> LANG=C it seems, as if I remove it it goes away.
|
||||
>> The file does not exist is due to the unreadable .subversion.
|
||||
>> echoing the LANG before it is set shows that the variable is normally
|
||||
>> empty for the user that is running it.
|
||||
|
||||
The second removes problems with cannot access /home/$user/.svnsomething in
|
||||
the logs. I think this problem was also fatal (I should have reported these
|
||||
sooner).
|
||||
|
||||
I can try and debug these problems if you could suggest some way to do so,
|
||||
but I am probably losing the server in a couple of days, so I can't be of too
|
||||
much help I'm afraid.
|
||||
|
||||
> I imagine that passing --config-dir /tmp would be either insecure or
|
||||
> would limit ikiwiki use to one user per machine.
|
||||
> `--config-dir /etc/subversion` might be better, though still a hack,
|
||||
> since a user's real ~/.subversion might be needed to access some repos.
|
||||
>
|
||||
> Maybe I didn't notice this problem since I have a ~/.subversion
|
||||
> everywhere that I've used ikiwiki. Hmm, no, I don't reproduce it, svn
|
||||
> happily recreated the directory during an ikiwiki run after I moved it
|
||||
> out of the way here. Maybe an issue with old versions of svn? Although
|
||||
> AFIACR, svn has auto-created ~/.subversion for years.
|
||||
>
|
||||
> What's the error message? --[[Joey]]
|
||||
|
||||
>> `svn: Can't check path '/home/jw2328/.subversion': Permission denied,`
|
||||
>> where jw2328 is my usual user.
|
||||
>> I have restrictive permissions of 0700 on home dirs on the server,
|
||||
>> and the CGI is running as uid apache, euid root. (Not my setup anymore).
|
||||
>> The way I had it set up, was jw2328 owning thesource dir, and the svn repo,
|
||||
>> with g+sw on them both. I ran sudo ikiwiki --setup though, as I was reluctant
|
||||
>> to adjust permissions on my cgi-dir. This seems to be the root of the
|
||||
>> problem.
|
||||
|
||||
>>> Ah, I think it's better to keep the permissions of the repository
|
||||
>>> and source directory sane (755) and make the cgi suid to your user,
|
||||
>>> which is how it's designed to work.
|
||||
|
||||
>>>> I realise that now, and I now have a much more sane setup that works.
|
||||
|
||||
----
|
||||
|
||||
--- IkiWiki.pm
|
||||
+++ IkiWiki.pm
|
||||
@@ -734,7 +734,18 @@
|
||||
my $page=shift;
|
||||
my $spec=shift;
|
||||
|
||||
- return eval pagespec_translate($spec);
|
||||
+ my $pagespec = pagespec_translate($spec);
|
||||
+
|
||||
+ my $newpagespec;
|
||||
+
|
||||
+ local($1);
|
||||
+ if ($pagespec =~ /(.*)/) {
|
||||
+ $newpagespec = $1;
|
||||
+ } else {
|
||||
+ die "oh";
|
||||
+ }
|
||||
+
|
||||
+ return eval $newpagespec;
|
||||
} #}}}
|
||||
|
||||
sub match_glob ($$) { #{{{
|
||||
|
||||
This works around a silly, but extremely annoying, taint bug in older
|
||||
versions of perl. I'm not sure of the details, but it means that either
|
||||
values become tainted from nowhere, or they don't get untainted possibly.
|
||||
This also affects backports to sarge. `"oh"` is not going to be very
|
||||
informative if that code path is ever taken, but I hope that it never is.
|
||||
|
||||
> You're not the first person to report a problem here with older versions
|
||||
> of perl and pagespec tainting. I suspect that this would work around it:
|
||||
return eval possibly_foolish_untaint(pagespec_translate($spec));
|
||||
> I'm _very_ uncomfortable putting that in the shipping version of ikiwiki,
|
||||
> because pagespecs are potentially _insanely_ dangerous, given how they're
|
||||
> evaled and all. The tainting is the only sanity check there is that
|
||||
> `pagespec_translate` manages to clean up any possibly harmful perl code
|
||||
> in a pagespec. It's good to have belt and suspenders here.
|
||||
>
|
||||
> For all I know, older versions of perl are keeping it tainted because
|
||||
> `pagespec_translate` is somehow broken under old versions of perl and is
|
||||
> in fact not fully untainting the pagespec. Ok, probably not, it's more
|
||||
> likely that some of the regexps in there don't manage to clear the taint
|
||||
> flag with old versions of perl, while still doing a perfectly ok job of
|
||||
> sanitising the pagespec.
|
||||
>
|
||||
> I suppose that the version of perl ($^V) could be checked and the untaint
|
||||
> only be called for the old version. Though it seems it would be better
|
||||
> to try to debug this some first. Maybe instrumenting `pagespec_translate`
|
||||
> with calls to Scalar::Utils's tainted() function and seeing which parts
|
||||
> of pagespecs arn't getting untainted would be a good start.
|
||||
>
|
||||
> --[[Joey]]
|
||||
|
||||
>> It seems like it is always the (with instrumentation)
|
||||
|
||||
elsif ($word =~ /^(link|backlink|created_before|created_after|creation_month|creation_year|creation_day)\((.+)\)$/) {
|
||||
warn("\$1 tainted=".tainted($1).", \$2 tainted=".tainted($2)." \$code tainted=".tainted($code));
|
||||
$code.=" match_$1(\$page, ".safequote($2).")";
|
||||
warn("\$1 tainted=".tainted($1).", \$2 tainted=".tainted($2)." \$code tainted=".tainted($code));
|
||||
warn("safequote tainted=".tainted(safequote($2)));
|
||||
}
|
||||
|
||||
>> bit that causes it. With the following trace:
|
||||
|
||||
$1 tainted=0, $2 tainted=0 $code tainted=0 at IkiWiki.pm line 718.
|
||||
$1 tainted=0, $2 tainted=0 $code tainted=1 at IkiWiki.pm line 720.
|
||||
safequote tainted=0 at IkiWiki.pm line 721.
|
||||
|
||||
>> which shows that `$code` appears to become tainted from nowhere.
|
||||
>> <http://mail-archives.apache.org/mod_mbox/spamassassin-dev/200509.mbox/%3C3838.431C7D9B.5F152B8F.dev@spamassassin.apache.org%3E>
|
||||
>> is what pointed me to find the problem/workaround.
|
||||
|
||||
>>> Given that verification, an untaint contingent on the value of $^V
|
||||
>>> sounds reasonable and I'd accept such a patch. I'm not quite sure which
|
||||
>>> version(s) of perl it should check for.
|
||||
|
||||
>>>> I'm not going to write one though. I don't know what versions either,
|
||||
>>>> but I think the evil of the special case is too much in this case. If
|
||||
>>>> you are happy to insist on a newer version of perl then I will leave
|
||||
>>>> it at that and sort something out locally. If you want the patch I will
|
||||
>>>> code it though, as I realise you may want to support sarge installs.
|
|
@ -14,5 +14,6 @@ orphans.
|
|||
[[if test="enabled(orphans)" then="""
|
||||
Here's a list of orphaned pages on this wiki:
|
||||
|
||||
[[orphans pages="* and !news/* and !todo/* and !bugs/* and !patchqueue/* and !users/* and !examples/*"]]
|
||||
[[orphans pages="* and !news/* and !todo/* and !bugs/* and !users/* and
|
||||
!examples/* and !tips/*"]]
|
||||
"""]]
|
||||
|
|
|
@ -12,7 +12,7 @@ them to be absolute, but I definitely remember tripping over absolute
|
|||
pagespecs a few times when I was just starting out. Thus I think we've
|
||||
learned to accept it as natural, where a new user wouldn't.
|
||||
|
||||
* bugs, todo, news, blog, users, sandbox, and patchqueue
|
||||
* bugs, todo, news, blog, users, and sandbox
|
||||
are all at "toplevel", so they are equivalent whether
|
||||
pagespecs are absolute or relative.
|
||||
* soc doesn't refer to any pages explicitly so it doesn't matter
|
||||
|
@ -28,4 +28,4 @@ learned to accept it as natural, where a new user wouldn't.
|
|||
right now)
|
||||
|
||||
Maybe inline should use relative pagespecs by default, and other plugins
|
||||
don't? --Ethan
|
||||
don't? --Ethan
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
This map excludes discussion pages, as well as subpages that are in feeds.
|
||||
|
||||
[[map pages="* and !*/discussion
|
||||
and !bugs/* and !examples/*/* and !news/* and !patchqueue/* and !plugins/* and !sandbox/* and !todo/* and !users/*
|
||||
and !bugs/* and !examples/*/* and !news/* and !tips/* and !plugins/* and !sandbox/* and !todo/* and !users/*
|
||||
and !*.css and !*.ico and !*.png and !*.svgz and !*.gif"]]
|
||||
|
|
|
@ -14,10 +14,10 @@ the following projects will be worked on:
|
|||
(See [[todo/fileupload/soc-proposal]])
|
||||
* Wiki WYSIWYG Editor
|
||||
by [[TaylorKillian]]
|
||||
(See [[patchqueue/Wikiwyg_Plugin_for_IkiWiki]])
|
||||
(See [[todo/wikiwyg]])
|
||||
* Creating a gallery of a bunch of images
|
||||
by [[ArpitJain]]
|
||||
(See [[patchqueue/Gallery_Plugin_for_Ikiwiki]])
|
||||
(See [[todo/Gallery]])
|
||||
|
||||
Students working on these projects are encouraged to add links to any blogs,
|
||||
patch repositories, etc that they will use.
|
||||
|
|
|
@ -3,6 +3,6 @@ Welcome to ikiwiki's todo list. Link items to [[todo/done]] when done.
|
|||
Also see the [[wishlist]] and [[bugs]] pages.
|
||||
|
||||
[[inline pages="todo/* and !todo/done and !link(todo/done) and
|
||||
!link(wishlist) and !todo/*/*"
|
||||
!link(patch) and !link(wishlist) and !todo/*/*"
|
||||
feedpages="created_after(todo/supporting_comments_via_disussion_pages)"
|
||||
actions=yes rootpage="todo" postformtext="Add a new todo item titled:" show=0]]
|
||||
|
|
|
@ -20,4 +20,35 @@ That's one way to do it, and it has some nice benefits, like being able to edit
|
|||
|
||||
--[[Joey]]
|
||||
|
||||
[[tag soc]]
|
||||
[[tag soc]]
|
||||
|
||||
[[tag wishlist]]
|
||||
|
||||
----
|
||||
|
||||
I have implemented the first version of the Gallery Plugin for Ikiwiki as part of [[soc]]. This plugin would create a nice looking gallery of the images once the directory containing images is specified with some additional parameters. It has been build over the img plugin.
|
||||
|
||||
Plugin can be downloaded from [here](http://myweb.unomaha.edu/~ajain/gallery.tar).
|
||||
|
||||
It can be used as : <br>
|
||||
\[[gallery imagedir="images" thumbnailsize="200x200" cols="3" alt="Can not be displayed" title="My Pictures"]]
|
||||
|
||||
where-<br>
|
||||
* imagedir => Directory containing images. It will scan all the files with jpg|png|gif extension from the directory and will put it in the gallery.<br>
|
||||
* thumbnailsize(optional) => Size of the thumbnail that you want to generate for the gallery.<br>
|
||||
* alt(optional) => If image can not be displayed, it will display the text contained in alt argument.<br>
|
||||
* cols(optional) => Number of columns of thumbnails that you want to generate.<br>
|
||||
* title(optional) => Title of the gallery.<br>
|
||||
|
||||
Features of the Gallery Plugin:<br>
|
||||
* You can go the next image by clicking on the right side of the image or by pressing 'n'.<br>
|
||||
* Similary, you can go the previous image by clicking on the left side of the image or by pressing 'p'.<br>
|
||||
* Press esc to close the gallery.<br>
|
||||
* While on image, nearby images are preloaded in the background, so as to make the browsing fast.<br>
|
||||
|
||||
Right now, it features only one template namely [Lightbox](http://www.hudddletogether.com). Later on, I will add few more templates.<br>
|
||||
For any feedback or query, feel free to mail me at arpitjain11 [AT] gmail.com
|
||||
|
||||
Additional details are available [here](http://myweb.unomaha.edu/~ajain/ikiwikigallery.html).
|
||||
|
||||
[[tag patch]]
|
||||
|
|
|
@ -35,4 +35,281 @@ Brad
|
|||
> to edit the new page, only the call to redirect.
|
||||
> --Ethan
|
||||
|
||||
Note that there is a partial implementation in the [[patchqueoe|patchqueue/move_page]].
|
||||
-----
|
||||
|
||||
[[tag patch]]
|
||||
|
||||
This is my second cut at a feature like that requested here.
|
||||
It can also be found [here](http://ikidev.betacantrips.com/patches/move.patch).
|
||||
|
||||
A few shortcomings exist:
|
||||
|
||||
* No precautions whatsoever are made to protect against race conditions or failures
|
||||
in the rcs\_move function. I didn't even do the `cgi_editpage` thing where I hold
|
||||
the lock and render afterwards (mostly because the copy I was editing was not
|
||||
up-to-date enough to have that code). Although FAILED_SAVE is in movepage.tmpl,
|
||||
no code activates it yet.
|
||||
* Some code is duplicated between cgi\_movepage and cgi\_editpage, as well
|
||||
as rcs\_commit and rcs\_move.
|
||||
* The user interface is pretty lame. I couldn't figure out a good way to let
|
||||
the user specify which directory to move things to without implementing a
|
||||
FileChooser thing.
|
||||
* No redirect pages like those mentioned on [[todo/Moving_Pages]] exist yet,
|
||||
so none are created.
|
||||
* I added a Move link to page.tmpl but it may belong better someplace else --
|
||||
maybe editpage.tmpl? Not sure.
|
||||
* from is redundant with page so far -- but since the Move links could someday
|
||||
come from someplace other than the page itself I kept it around.
|
||||
* If I move foo.mdwn to bar.mdwn, foo/* should move too, probably.
|
||||
|
||||
> Looks like a good start, although I agree about many of the points above,
|
||||
> and also feel that something needs to be done about rcses that don't
|
||||
> implement a move operation -- falling back to an add and delete.
|
||||
> --[[Joey]]
|
||||
|
||||
Hmm. Shouldn't that be done on a by-RCS basis, though? (i.e. implemented
|
||||
by backends in the `rcs_move` function)
|
||||
|
||||
> Probably, yes, but maybe there's a way to avoid duplicating code for that
|
||||
> in several of them.
|
||||
|
||||
Also, how should ikiwiki react if a page is edited (say, by another user)
|
||||
before it is moved? Bail, or shrug and proceed?
|
||||
|
||||
> The important thing is to keep in mind that the page could be edited,
|
||||
> moved, deleted, etc in between the user starting the move and the move
|
||||
> happening. So, the code really needs to deal with all of these cases in
|
||||
> some way. It seems fine to me to go ahead with the move even if the page
|
||||
> was edited. If the page was deleted or moved, it seems reasonable to exit
|
||||
> with an error.
|
||||
|
||||
diff -urNX ignorepats ikiwiki/IkiWiki/CGI.pm ikidev/IkiWiki/CGI.pm
|
||||
--- ikiwiki/IkiWiki/CGI.pm 2007-02-14 18:17:12.000000000 -0800
|
||||
+++ ikidev/IkiWiki/CGI.pm 2007-02-22 18:54:23.194982000 -0800
|
||||
@@ -561,6 +561,106 @@
|
||||
}
|
||||
} #}}}
|
||||
|
||||
+sub cgi_movepage($$) {
|
||||
+ my $q = shift;
|
||||
+ my $session = shift;
|
||||
+ eval q{use CGI::FormBuilder};
|
||||
+ error($@) if $@;
|
||||
+ my @fields=qw(do from rcsinfo page newdir newname comments);
|
||||
+ my @buttons=("Rename Page", "Cancel");
|
||||
+
|
||||
+ my $form = CGI::FormBuilder->new(
|
||||
+ fields => \@fields,
|
||||
+ header => 1,
|
||||
+ charset => "utf-8",
|
||||
+ method => 'POST',
|
||||
+ action => $config{cgiurl},
|
||||
+ template => (-e "$config{templatedir}/movepage.tmpl" ?
|
||||
+ {template_params("movepage.tmpl")} : ""),
|
||||
+ );
|
||||
+ run_hooks(formbuilder_setup => sub {
|
||||
+ shift->(form => $form, cgi => $q, session => $session);
|
||||
+ });
|
||||
+
|
||||
+ decode_form_utf8($form);
|
||||
+
|
||||
+ # This untaint is safe because if the page doesn't exist, bail.
|
||||
+ my $page = $form->field('page');
|
||||
+ $page = possibly_foolish_untaint($page);
|
||||
+ if (! exists $pagesources{$page}) {
|
||||
+ error("page does not exist");
|
||||
+ }
|
||||
+ my $file=$pagesources{$page};
|
||||
+ my $type=pagetype($file);
|
||||
+
|
||||
+ my $from;
|
||||
+ if (defined $form->field('from')) {
|
||||
+ ($from)=$form->field('from')=~/$config{wiki_file_regexp}/;
|
||||
+ }
|
||||
+
|
||||
+ $form->field(name => "do", type => 'hidden');
|
||||
+ $form->field(name => "from", type => 'hidden');
|
||||
+ $form->field(name => "rcsinfo", type => 'hidden');
|
||||
+ $form->field(name => "newdir", type => 'text', size => 80);
|
||||
+ $form->field(name => "page", value => $page, force => 1);
|
||||
+ $form->field(name => "newname", type => "text", size => 80);
|
||||
+ $form->field(name => "comments", type => "text", size => 80);
|
||||
+ $form->tmpl_param("can_commit", $config{rcs});
|
||||
+ $form->tmpl_param("indexlink", indexlink());
|
||||
+ $form->tmpl_param("baseurl", baseurl());
|
||||
+
|
||||
+ if (! $form->submitted) {
|
||||
+ $form->field(name => "rcsinfo", value => rcs_prepedit($file),
|
||||
+ force => 1);
|
||||
+ }
|
||||
+
|
||||
+ if ($form->submitted eq "Cancel") {
|
||||
+ redirect($q, "$config{url}/".htmlpage($page));
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (! $form->submitted || ! $form->validate) {
|
||||
+ check_canedit($page, $q, $session);
|
||||
+ $form->tmpl_param("page_select", 0);
|
||||
+ $form->field(name => "page", type => 'hidden');
|
||||
+ $form->field(name => "type", type => 'hidden');
|
||||
+ $form->title(sprintf(gettext("moving %s"), pagetitle($page)));
|
||||
+ my $pname = basename($page);
|
||||
+ my $dname = dirname($page);
|
||||
+ if (! defined $form->field('newname') ||
|
||||
+ ! length $form->field('newname')) {
|
||||
+ $form->field(name => "newname",
|
||||
+ value => pagetitle($pname, 1), force => 1);
|
||||
+ }
|
||||
+ if (! defined $form->field('newdir') ||
|
||||
+ ! length $form->field('newdir')) {
|
||||
+ $form->field(name => "newdir",
|
||||
+ value => pagetitle($dname, 1), force => 1);
|
||||
+ }
|
||||
+ print $form->render(submit => \@buttons);
|
||||
+ }
|
||||
+ else{
|
||||
+ # This untaint is safe because titlepage removes any problematic
|
||||
+ # characters.
|
||||
+ my ($newname)=$form->field('newname');
|
||||
+ $newname=titlepage(possibly_foolish_untaint($newname));
|
||||
+ my ($newdir)=$form->field('newdir');
|
||||
+ $newdir=titlepage(possibly_foolish_untaint($newdir));
|
||||
+ if (! defined $newname || ! length $newname || file_pruned($newname, $config{srcdir}) || $newname=~/^\//) {
|
||||
+ error("bad page name");
|
||||
+ }
|
||||
+ check_canedit($page, $q, $session);
|
||||
+
|
||||
+ my $newpage = ($newdir?"$newdir/":"") . $newname;
|
||||
+ my $newfile = $newpage . ".$type";
|
||||
+ my $message = $form->field('comments');
|
||||
+ unlockwiki();
|
||||
+ rcs_move($file, $newfile, $message, $form->field("rcsinfo"),
|
||||
+ $session->param("name"), $ENV{REMOTE_ADDR});
|
||||
+ redirect($q, "$config{url}/".htmlpage($newpage));
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
sub cgi_getsession ($) { #{{{
|
||||
my $q=shift;
|
||||
|
||||
@@ -656,6 +756,9 @@
|
||||
elsif (defined $session->param("postsignin")) {
|
||||
cgi_postsignin($q, $session);
|
||||
}
|
||||
+ elsif ($do eq 'move') {
|
||||
+ cgi_movepage($q, $session);
|
||||
+ }
|
||||
elsif ($do eq 'prefs') {
|
||||
cgi_prefs($q, $session);
|
||||
}
|
||||
diff -urNX ignorepats ikiwiki/IkiWiki/Rcs/svn.pm ikidev/IkiWiki/Rcs/svn.pm
|
||||
--- ikiwiki/IkiWiki/Rcs/svn.pm 2007-01-27 16:04:48.000000000 -0800
|
||||
+++ ikidev/IkiWiki/Rcs/svn.pm 2007-02-22 01:51:29.923626000 -0800
|
||||
@@ -60,6 +60,34 @@
|
||||
}
|
||||
} #}}}
|
||||
|
||||
+sub rcs_move ($$$$;$$) {
|
||||
+ my $file=shift;
|
||||
+ my $newname=shift;
|
||||
+ my $message=shift;
|
||||
+ my $rcstoken=shift;
|
||||
+ my $user=shift;
|
||||
+ my $ipaddr=shift;
|
||||
+ if (defined $user) {
|
||||
+ $message="web commit by $user".(length $message ? ": $message" : "");
|
||||
+ }
|
||||
+ elsif (defined $ipaddr) {
|
||||
+ $message="web commit from $ipaddr".(length $message ? ": $message" : "");
|
||||
+ }
|
||||
+
|
||||
+ chdir($config{srcdir}); # svn merge wants to be here
|
||||
+
|
||||
+ if (system("svn", "move", "--quiet",
|
||||
+ "$file", "$newname") != 0) {
|
||||
+ return 1;
|
||||
+ }
|
||||
+ if (system("svn", "commit", "--quiet",
|
||||
+ "--encoding", "UTF-8", "-m",
|
||||
+ possibly_foolish_untaint($message)) != 0) {
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return undef # success
|
||||
+}
|
||||
+
|
||||
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.
|
||||
diff -urNX ignorepats ikiwiki/IkiWiki/Render.pm ikidev/IkiWiki/Render.pm
|
||||
--- ikiwiki/IkiWiki/Render.pm 2007-02-14 17:00:05.000000000 -0800
|
||||
+++ ikidev/IkiWiki/Render.pm 2007-02-22 18:30:00.451755000 -0800
|
||||
@@ -80,6 +80,7 @@
|
||||
|
||||
if (length $config{cgiurl}) {
|
||||
$template->param(editurl => cgiurl(do => "edit", page => $page));
|
||||
+ $template->param(moveurl => cgiurl(do => "move", page => $page));
|
||||
$template->param(prefsurl => cgiurl(do => "prefs"));
|
||||
if ($config{rcs}) {
|
||||
$template->param(recentchangesurl => cgiurl(do => "recentchanges"));
|
||||
diff -urNX ignorepats ikiwiki/templates/movepage.tmpl ikidev/templates/movepage.tmpl
|
||||
--- ikiwiki/templates/movepage.tmpl 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ ikidev/templates/movepage.tmpl 2007-02-22 18:40:39.751763000 -0800
|
||||
@@ -0,0 +1,44 @@
|
||||
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
+<html>
|
||||
+<head>
|
||||
+<base href="<TMPL_VAR BASEURL>" />
|
||||
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
+<title><TMPL_VAR FORM-TITLE></title>
|
||||
+<link rel="stylesheet" href="<TMPL_VAR BASEURL>style.css" type="text/css" />
|
||||
+<link rel="stylesheet" href="<TMPL_VAR BASEURL>local.css" type="text/css" />
|
||||
+<TMPL_IF NAME="FAVICON">
|
||||
+<link rel="icon" href="<TMPL_VAR BASEURL><TMPL_VAR FAVICON>" type="image/x-icon" />
|
||||
+</TMPL_IF>
|
||||
+</head>
|
||||
+<body>
|
||||
+<TMPL_IF NAME="FAILED_SAVE">
|
||||
+<p>
|
||||
+<b>Failed to save your changes.</b>
|
||||
+</p>
|
||||
+<p>
|
||||
+Your changes were not able to be saved to disk. The system gave the error:
|
||||
+<blockquote>
|
||||
+<TMPL_VAR ERROR_MESSAGE>
|
||||
+</blockquote>
|
||||
+Your changes are preserved below, and you can try again to save them.
|
||||
+</p>
|
||||
+</TMPL_IF>
|
||||
+<TMPL_VAR FORM-START>
|
||||
+<div class="header">
|
||||
+<span><TMPL_VAR INDEXLINK>/ <TMPL_VAR FORM-TITLE></span>
|
||||
+</div>
|
||||
+<TMPL_VAR FIELD-DO>
|
||||
+<TMPL_VAR FIELD-FROM>
|
||||
+<TMPL_VAR FIELD-RCSINFO>
|
||||
+<TMPL_VAR FIELD-PAGE>
|
||||
+New location: <TMPL_VAR FIELD-NEWDIR>/ <TMPL_VAR FIELD-NEWNAME>
|
||||
+<br />
|
||||
+<TMPL_IF NAME="CAN_COMMIT">
|
||||
+Optional comment about this change:<br />
|
||||
+<TMPL_VAR FIELD-COMMENTS><br />
|
||||
+</TMPL_IF>
|
||||
+<input id="_submit" name="_submit" type="submit" value="Rename Page" /><input id="_submit_2" name="_submit" type="submit" value="Cancel" />
|
||||
+<TMPL_VAR FORM-END>
|
||||
+</body>
|
||||
+</html>
|
||||
diff -urNX ignorepats ikiwiki/templates/page.tmpl ikidev/templates/page.tmpl
|
||||
--- ikiwiki/templates/page.tmpl 2006-12-28 12:27:01.000000000 -0800
|
||||
+++ ikidev/templates/page.tmpl 2007-02-22 01:52:33.078464000 -0800
|
||||
@@ -32,6 +32,9 @@
|
||||
<TMPL_IF NAME="EDITURL">
|
||||
<li><a href="<TMPL_VAR EDITURL>">Edit</a></li>
|
||||
</TMPL_IF>
|
||||
+<TMPL_IF NAME="MOVEURL">
|
||||
+<li><a href="<TMPL_VAR MOVEURL>">Move</a></li>
|
||||
+</TMPL_IF>
|
||||
<TMPL_IF NAME="RECENTCHANGESURL">
|
||||
<li><a href="<TMPL_VAR RECENTCHANGESURL>">RecentChanges</a></li>
|
||||
</TMPL_IF>
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
Turning the wikilink regexp into an extended regexp on the svn trunk seems to have broken the setuid wrapper on my system, because of two reasons: First, the wrapper generator should turn each newline in $configstring into `\n` in the C code rather than `\` followed by a newline in the C code. Second, the untainting of $configstring should allow newlines.
|
||||
Turning the wikilink regexp into an extended regexp on the svn trunk seems
|
||||
to have broken the setuid wrapper on my system, because of two reasons:
|
||||
First, the wrapper generator should turn each newline in $configstring into
|
||||
`\n` in the C code rather than `\` followed by a newline in the C code.
|
||||
Second, the untainting of $configstring should allow newlines.
|
||||
|
||||
> Both of these problems were already dealt with in commit r3714, on June
|
||||
> 3rd. Confused why you're posting patches for them now. --[[Joey]]
|
||||
> 3rd. Confused why you're posting patches for them now. [[done]] --[[Joey]]
|
||||
|
||||
Modified: wiki-meta/perl/IkiWiki.pm
|
||||
==============================================================================
|
|
@ -28,7 +28,6 @@ The year and month entities in the out put have links to archive index pages, wh
|
|||
|
||||
I'll send in the patch via email.
|
||||
|
||||
|
||||
ManojSrivastava
|
||||
|
||||
------
|
||||
|
@ -36,6 +35,8 @@ ManojSrivastava
|
|||
Since this is a little bit er, stalled, I'll post here the stuff Manoj
|
||||
mailed me, and my response to it. --[[Joey]]
|
||||
|
||||
[[tag patch]]
|
||||
|
||||
<pre>
|
||||
#! /usr/bin/perl
|
||||
# -*- Mode: Cperl -*-
|
|
@ -1,9 +1,13 @@
|
|||
OpenID URLs aren't clickable in the ViewVC logs because they're directly followed by a colon. At the expense of, um, proper grammar, here's a patch for SVN. If this is OK, I'll patch the other RCS modules, too.
|
||||
OpenID URLs aren't clickable in the ViewVC logs because they're directly
|
||||
followed by a colon. At the expense of, um, proper grammar, here's a patch
|
||||
for SVN. If this is OK, I'll patch the other RCS modules, too.
|
||||
|
||||
> Reasonable, but probably needs to modify the wiki\_commit\_regexp to
|
||||
> recognise such commit messages when parsing the logs. Do that and extend
|
||||
> to the other modules and I'll accept it. --[[Joey]]
|
||||
|
||||
[[tag patch]]
|
||||
|
||||
<pre>
|
||||
--- IkiWiki/Rcs/svn.pm (revision 2650)
|
||||
+++ IkiWiki/Rcs/svn.pm (working copy)
|
|
@ -1,4 +1,7 @@
|
|||
I'll be using IkiWiki primarily as a blog, so I want a way to view entries by date. A URL of the form `/date/YYYY/MM/DD.html` (or `/date/YYYY/MM/DD/` when using the `use_dirs` patch) should show posts from that period. ATM, I have this:
|
||||
I'll be using IkiWiki primarily as a blog, so I want a way to view entries
|
||||
by date. A URL of the form `/date/YYYY/MM/DD.html` (or `/date/YYYY/MM/DD/`
|
||||
when using the `use_dirs` patch) should show posts from that period. ATM, I
|
||||
have this:
|
||||
|
||||
<pre>
|
||||
Index: IkiWiki/Plugin/datearchives.pm
|
||||
|
@ -68,3 +71,5 @@ This works (although accessing `%IkiWiki::pagectime` is not too clever), but it
|
|||
>>> No reason to delete this from the queue, it's a reasonable plugin. I
|
||||
>>> might move it to the contributed plugins directory as it's a bit
|
||||
>>> specialised to be included in ikiwiki though. --[[Joey]]
|
||||
|
||||
[[tag patch]]
|
|
@ -12,6 +12,7 @@
|
|||
qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//],
|
||||
wiki_link_regexp => qr/\[\[(?:([^\]\|]+)\|)?([^\s\]#]+)(?:#([^\s\]]+))?\]\]/,
|
||||
|
||||
[[tag patch]]
|
||||
|
||||
This lets the site administrator have a `.htaccess` file in their underlay
|
||||
directory, say, then get it copied over when the wiki is built. Without
|
|
@ -32,6 +32,8 @@ escape parameter optional, and only call it if set. --[[Joey]]
|
|||
>>> to work -- see <http://ikidev.betacantrips.com/blah.html> for an example.
|
||||
>>> --Ethan
|
||||
|
||||
[[tag patch]]
|
||||
|
||||
<pre>
|
||||
Index: debian/changelog
|
||||
===================================================================
|
|
@ -12,6 +12,8 @@ while the default stays as it is now.
|
|||
> INSTALLMAN1DIR (though MakeMaker lacks one for man8). I'd prefer not
|
||||
> adding new variables where MakeMaker already has them. --[[Joey]]
|
||||
|
||||
[[tag patch]]
|
||||
|
||||
<pre>
|
||||
|
||||
- Introduce two variables, IKI_MANDIR and IKI_W3MCGIDIR, to be set from
|
|
@ -3,6 +3,8 @@ providing the usedirs option for output. The remaining patch, discussed
|
|||
below, concerns wanting to use foo/index.mdwn source files and get an
|
||||
output page name of foo, rather than foo/index. --[[Joey]]
|
||||
|
||||
[[tag patch]]
|
||||
|
||||
---
|
||||
|
||||
I independently implemented a similar, but smaller patch.
|
|
@ -36,6 +36,8 @@ added after an inlined page (namely: the post date, the tags, and the actions):
|
|||
+
|
||||
+</div>
|
||||
|
||||
[[tag patch]]
|
||||
|
||||
> Unfortunately, the inlinepage content passes through markdown, and markdown
|
||||
> gets confused by these nested div's and puts p's around one of them, generating
|
||||
> broken html. If you can come up with a way to put in the div that passes
|
||||
|
@ -56,4 +58,4 @@ added after an inlined page (namely: the post date, the tags, and the actions):
|
|||
>>> report Joey). FYI, I've observed some performance drop with `1.0.2b7` compared to `1.0.1`,
|
||||
>>> especially noticable with big files. This was also confirmed by someone else, for example,
|
||||
>>> see this [thread](http://six.pairlist.net/pipermail/markdown-discuss/2006-August/000152.html)
|
||||
>>> --[[Roktas]]
|
||||
>>> --[[Roktas]]
|
|
@ -3,6 +3,8 @@ I have used it probably over hundred times but needs some work.
|
|||
|
||||
<http://www.reedmedia.net/~reed/tmp-sfhkcjkfrfh/rcs.pm>
|
||||
|
||||
[[tag patch]]
|
||||
|
||||
> Clearly needs some cleanup and perhaps some of the missing stubs
|
||||
> implemented, before it can be included into ikiwiki.
|
||||
>
|
|
@ -231,3 +231,5 @@ ManojSrivastava
|
|||
+__END__
|
||||
+
|
||||
</pre>
|
||||
|
||||
[[tag patch]]
|
|
@ -25,3 +25,20 @@ off in WikiText mode.
|
|||
[[tag soc]]
|
||||
|
||||
[[tag wishlist]]
|
||||
|
||||
[[tag patch]]
|
||||
|
||||
Project IkiWiki::WIKIWYG v0.8 - <http://ikiwiki.xbaud.com/>
|
||||
===========================================================
|
||||
|
||||
[Wikiwyg][] is a "What you see is what you get" editor for wikis. It will allow you to double click on the text in a wiki and save it without reloading the page. The IkiWiki version will allow you to edit your wiki in Markdown or WYSIWYG.
|
||||
|
||||
The plugin can be downloaded from <http://ikiwiki.xbaud.com/wikiwyg-0.8.tar.gz>
|
||||
|
||||
### Current Issues
|
||||
|
||||
* Code sections starting with 4 spaces do not work
|
||||
* Adding links in the WYSIWYG editor is difficult
|
||||
* Double lists don't work
|
||||
|
||||
[Wikiwyg]: http://www.wikiwyg.net/
|
||||
|
|
|
@ -24,7 +24,7 @@ essentailly three peices needed for a complete translation:
|
|||
|
||||
1. The templates also need to be translated. Some work has been done on an
|
||||
infrastructure for maintaining translated templates, as documented in
|
||||
[[patchqueue/l10n]], but until that's complete, you'd need to copy and
|
||||
[[todo/l10n]], but until that's complete, you'd need to copy and
|
||||
translate the templates by hand.
|
||||
|
||||
1. The [[basewiki]] itself needs to be translated. Whether to only translate
|
||||
|
|
|
@ -13,7 +13,7 @@ things that need changing then I will probably need help/guidance.
|
|||
--[[KarlMW]]
|
||||
|
||||
> The main problem I see is the html escaping issue. This is not really
|
||||
> unique to asciidoc, see [[patchqueue/format_escape]]. I wonder if the
|
||||
> unique to asciidoc, see [[todo/format_escape]]. I wonder if the
|
||||
> technique provided by that patch could be used to let your plugin
|
||||
> automatically handle the escaping. Unfortunatey, I have not yet gotten
|
||||
> around to reviewing/applying the patch. --[[Joey]]
|
||||
|
@ -22,4 +22,4 @@ things that need changing then I will probably need help/guidance.
|
|||
|
||||
>> I suspect that asciidoc can't really be made to play nice to the extent that I would want casual users/abusers to have it as a markup option on a live wiki - it's fine for a personal site where you can look at the output before putting it online, but I think it would be a hideously gaping integrity hole for anything more than that. However, for a personal site (as I am using it), it does seem to have its uses.
|
||||
|
||||
>> I'll keep an eye on the format_escape plugin, and assuming it is accepted into ikiwiki, will see if I can apply it to asciidoc. --[[KarlMW]]
|
||||
>> I'll keep an eye on the format_escape plugin, and assuming it is accepted into ikiwiki, will see if I can apply it to asciidoc. --[[KarlMW]]
|
||||
|
|
|
@ -3,4 +3,4 @@ improvements people would like to see in ikiwiki. Good patches for any of
|
|||
these will likely be accepted.
|
||||
|
||||
[[inline pages="todo/* and !todo/done and !link(todo/done) and
|
||||
link(wishlist) and !todo/*/*" archive=yes show=0]]
|
||||
link(wishlist) and !link(patch) and !todo/*/*" archive=yes show=0]]
|
||||
|
|
Loading…
Reference in New Issue