From cc194fe527261b6a36a79df59c626bd3d7891b84 Mon Sep 17 00:00:00 2001
From: "http://www.cse.unsw.edu.au/~willu/"
 <http://www.cse.unsw.edu.au/~willu/@web>
Date: Fri, 6 Mar 2009 03:40:50 -0500
Subject: [PATCH] Add patch for WMD plugin.  This new plugin adds live preview
 and text controls to ikiwiki edit pages.

---
 doc/todo/mdwn_preview.mdwn | 83 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 82 insertions(+), 1 deletion(-)

diff --git a/doc/todo/mdwn_preview.mdwn b/doc/todo/mdwn_preview.mdwn
index 68558a571..4c361052b 100644
--- a/doc/todo/mdwn_preview.mdwn
+++ b/doc/todo/mdwn_preview.mdwn
@@ -16,4 +16,85 @@ add to ikiwiki.
 >> about a showdown plugin.  Maybe a WMD plugin would be worthwhile.  I might
 >> look into it if I have time on the weekend. -- [[Will]]
 
-[[!tag wishlist done]]
+[[!tag wishlist]]
+
+>>> Below is a simple plugin/[[patch]] to make use of the WMD editor.  Turns out it isn't hard at all to
+>>> get a basic version going (that don't handle directives at all).  I've
+>>> removed the done tag so this is visible as a patch. -- [[Will]]
+
+------
+
+### Instructions:
+
+
+Download the [WMD source](http://wmd-editor.com/downloads/wmd-1.0.1.zip).  In that zip file you'll
+find a few example html files, a readme and `wmd` directory.  Move the `wmd` directory into the
+ikiwiki `underlays` directory.  You should now have an `underlays/wmd/wmd.js` file as well as 
+some other javascript files and an images directory in the same place.
+
+Note that the WMD plugin does **not** handle directives.  For this reason the normal `preview` button
+remains.  Some CSS to clean up the display of the live WMD preview would be good.
+
+Install the following patch and plugin file.  Then enable the 'wmd' plugin.
+
+
+    diff --git a/templates/editpage.tmpl b/templates/editpage.tmpl
+    index 4b54db2..b1cf015 100644
+    --- a/templates/editpage.tmpl
+    +++ b/templates/editpage.tmpl
+    @@ -37,6 +37,7 @@ Optional comment about this change:<br />
+     </div>
+     </TMPL_IF>
+     <TMPL_VAR FORM-END>
+    +<TMPL_VAR WMD_PREVIEW>
+     
+     <TMPL_IF NAME="PAGE_PREVIEW">
+     <hr />
+
+-----
+
+    #!/usr/bin/perl
+    package IkiWiki::Plugin::wmd;
+    
+    use warnings;
+    use strict;
+    use IkiWiki 3.00;
+    use POSIX;
+    use Encode;
+    
+    sub import {
+    	add_underlay("wmd");
+    	hook(type => "getsetup", id => "wmd", call => \&getsetup);
+    	hook(type => "formbuilder_setup", id => "wmd", call => \&formbuilder_setup);
+    }
+    
+    sub getsetup () {
+    	return
+    		plugin => {
+    			safe => 1,
+    			rebuild => 1,
+    		},
+    }
+    
+    sub formbuilder_setup (@) {
+    	my %params=@_;
+    	my $form=$params{form};
+    
+    	return if ! defined $form->field("do");
+    	
+    	return unless (($form->field("do") eq "edit") ||
+    				($form->field("do") eq "create"));
+    
+    	$form->tmpl_param("wmd_preview", "<div class=\"wmd-preview\"></div>\n".include_javascript(undef, 1));
+    }
+    
+    sub include_javascript ($;$) {
+    	my $page=shift;
+    	my $absolute=shift;
+    	
+    	return '<script src="'.urlto("wmd.js", $page, $absolute).
+    		'" type="text/javascript"></script>'."\n";
+    }
+    
+    1
+
-- 
2.39.5